一、什么是nginx
1、nginx基本概念
Nginx (engine x) 是一個高性能的HTTP和反向代理web服務器,占有記憶體少,并發能力強,能接受高負載,
2、反向代理
(1)、正向代理
用戶無法訪問某網站,但是可以訪問代理服務器,代理服務器可以訪問目標網站,用戶配置代理服務器讓
代理服務器對目標網站進行訪問,并把結果回傳給用戶 (老打工人了)

(2)、反向代理
用戶訪問代理服務器,代理服務器去訪問目標資源,處理回傳結果給用戶,從外部看用戶不知道是否有代理服務器以為是一個服務器,暴漏的是代理服務器,隱藏了訪問的資源服務器

3、負載均衡
負載均衡(Load Balance),意思是將負載(作業任務,訪問請求)進行平衡、分攤到多個操作單元(服務器,組件)上進行執行,是解決高性能,單點故障(高可用),擴展性(水平伸縮)的終極解決方案,

4、動靜分離
有專門的服務器放靜態資源,用戶請求靜態資源時nginx就去靜態資源服務器查找,加快了網站的決議速度,降低單個服務器的壓力

二、Nginx安裝、常用命令、組態檔
1、Nginx安裝
1、下載nginx
2、解壓nginx
3、$sudo apt-get install libpcre3 libpcre3-dev zlib1g-dev //安裝依賴庫
4、./configure
5、make && make install //編譯并且安裝
*安裝成功后 usr/local 會多出一個nginx檔案 nginx里有sbin,sbin里面有啟動腳本
相關命令:
ps -e | grep nginx //查看是否啟動nginx
netstat -ltunp //查看占用的埠號等詳細資訊
----防火墻默認無法訪問,添加規則開放埠即可
2、Nginx常用命令
*使用ngin常用密令要在 /usr/local/nginx/sbin 中使用
./nginx -v //查看nginx版本號
./nginx //啟動
./nginx -s stop //關閉
./nginx -s reload //重新加載(比如conf的組態檔)
3、Nginx組態檔
*nginx組態檔在 /usr/local/nginx/conf 中 nginx組態檔分為三塊
1、全域塊
全域開始到events結束為全域快,主要設定一些影響nginx服務器整體運行的配置指令 例:worker_processes 1; 是
nginx處理并發的數量,值越大處理的并發也越多(會受到硬體影響)
2、events塊
影響nginx服務器與用戶的網路連接 例:worker_connections 1024; 表示nginx用戶最大連接數量
3、http塊
又包括 http全域塊 和 server塊 是配置最頻繁的部分(高可用,負載均衡,動靜分離都要在這配置)可以嵌套多個
server,配置代理,快取,日志定義等絕大多數功能和第三方模塊的配置,如檔案引入,mime-type定義,日志自定義,是否使
用sendfile傳輸檔案,連接超時時間,單連接請求數等,
server全域塊:配置虛擬主機的相關引數,一個http中可以有多個server,
location塊:配置請求的路由,以及各種頁面的處理情況,
三、Nginx配置示例-反向代理
實體一、反向代理
1、修改組態檔
server {
listen 80;
server_name localhost //nginx地址;
location / {
root html;
//添加proxy_pass +http://專案地址
proxy_pass http://localhost:428;
index index.html index.htm;
}
}
實體二、反向代理(根據訪問路徑跳轉不同埠)
1、部署兩個tomcat,tom1的dev放a.html,tom2的vod放b.html,并開放埠
2、修改組態檔
server {
listen 80;
server_name localhost //nginx地址;
location ~ /edu/ {
proxy_pass http://localhost:8080
}
location ~ /vod/ {
proxy_pass http://localhost:8081
}
}
location使用正則運算式
location = /uri =開頭表示精確前綴匹配,只有完全匹配才能生效,
location ^~ /uri ^~開頭表示普通字串匹配上以后不再進行正則匹配,
location ~ pattern ~開頭表示區分大小寫的正則匹配,
location ~* pattern ~*開頭表示不區分大小寫的正則匹配,
location /uri 不帶任何修飾符,表示前綴匹配,
location / 通用匹配,任何未匹配到其他location的請求都會匹配到,
注意:
正則匹配會根據匹配順序,找到第一個匹配的正則運算式后將停止搜索,普通字串匹配則無視順序,只會選擇最精確的匹配,
四、Nginx配置實體-負載均衡(增加服務器,平攤訪問)
1、修改檔案
http下添加:
upstream 服務名字{
server 192.168.1.1:8080;
server 192.169.1.1:8080;
}
配置server {
listen 80;
server_name 192.168.1.1 //nginx地址;
location / {
proxy_pass http://服務名字;
}
}
2、負載均衡策略
·輪詢(默認)
按照時間順序進行分配,服務器宕機自動剔除,
·weight
默認為1,權重越高被分配的客戶端越多,就是按比例分配
例:
upstream 服務名字{
server 192.168.1.1:8080 weight=5;
server 192.169.1.1:8080 weight=10;
}
·ip_hash
大白話就是,按照你的ip地址來,你的ip分到服務器1以后你訪問都是服務器1可解決session問題
例:
upstream 服務名字{
ip_hash
server 192.168.1.1:8080;
server 192.169.1.1:8080;
}
·fair(第三方)按照后端訪問時間,那個服務器相應快那個先給用戶訪問
例:
upstream 服務名字{
server 192.168.1.1:8080;
server 192.169.1.1:8080;
fair
}
五、Nginx配置示例-動靜分離
*常用方式單獨域名存放靜態資源,
location /www/ {
root /data/;
}
location /image/ {
root /data/;
autoindex on; //顯示檔案串列
}
六、Nginx配置高可用集群
((主從模式))解決nginx宕機就是高可用,,,,
需要2臺nginx服務器
需要keeplived
需要虛擬ip地址

1、兩臺服務器都裝上nginx服務器
2、兩臺服務器安裝keeplived
安裝后 etc 下會生成keeplived目錄,里面包含keeplived組態檔keeplived.conf
配置keeplived,并且配置腳本
3、然后就高可用了
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/276526.html
標籤:Linux
