linux 下 nginx安裝與配置 請參考:https://blog.csdn.net/M_wolf/article/details/82831850
請確保nginx已正確安裝
一,nginx 實現轉發
# 1,修改 nginx/conf 下的 nginx.conf 文件,最後的大括號內加入代碼
include vhosts/*.conf;
# 2,在 conf 文件下新建 vhosts 文件夾
mkdir vhosts
# 3,進入 vhosts 目錄,新建 test.conf,並鍵入以下代碼
(我這裏的需求是當訪問127.0.0.1:3000/api時,轉發到127.0.0.1:5757/api)
(可以根據你的需求自行更改)
server {
# nginx 服務器監聽3000端口
listen 3000;
# 監聽的服務名稱
server_name 127.0.0.1;
# 代理有可能導致請求頭丟失,以下三行保證請求一定會有請求頭
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
# 轉發
location /api {
proxy_pass http://127.0.0.1:5757/api;
add_header Access-Control-Allow-Origin *;
}
}
# 然後重啓nginx,即可
nginx -s reload
# nginx 常用命令
# 啓動
start nginx # windows
nginx # linux
# 重啓
nginx -s reload
# 停止
nginx -s stop
二,nginx 負載均衡
感謝博友的分享:https://blog.csdn.net/elio_liuheng/article/details/79372841
由於單臺Tomcat服務器能夠承受的併發量太小,所以開發環境下都要配置多臺Tomcat服務器,形成分佈式集羣,這時也可以通過Nginx來實現。
三種常用的均衡算法:
均衡策略 | 說明 |
---|---|
輪詢 | 將所有請求依次發送給所有服務器 |
權重 | 將所有請求按照權重的比例發送給各服務器 |
IP_HASH | 根據用戶的訪問IP將請求發送給固定的服務器 |
2.1,輪詢
2.1.1 輪詢配置
server {
listen 8080;
server_name localhost;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
location / {
#這裏的“bal”應與已存在的某一策略名稱一致
proxy_pass http://bal;
}
}
# 配置均衡策略,"bal"爲策略名稱
upstream bal {
#輪詢
server 127.0.0.1:8081;
server 127.0.0.1:8082;
server 127.0.0.1:8083;
}
2.1.2 輪詢測試
啓動三臺內容各不相同的Tomcat服務器,分別監聽8081、8082、8083端口。在瀏覽器中訪問服務器8080端口,多次刷新8080端口會發現三臺Tomcat依次被訪問:
如果有Tomcat服務器意外宕機,Nginx能夠檢測Tomcat的狀態,並只將請求發往能夠正常接收請求的服務器(但是不排除能夠接受卻不能返回結果的服務器,這裏可以通過worker_processes設置超時後轉發到另一臺服務器)。
2.2,權重
在地址後 加 weight 屬性即可,數值越大,服務器獲得的請求次數越多
# 修改2.1中的策略配置
upstream bal {
server 127.0.0.1:8081 weight=6;
server 127.0.0.1:8082 weight=1;
server 127.0.0.1:8083 weight=3;
}
2.3,IP_HASH 負載均衡策略
IP_HASH負載均衡策略實現方式非常簡單,在策略中加入ip_hash語句即可,一旦添加ip_hash語句,其他策略將不起作用(即使添加了weight屬性也會按照IP_HASH策略分發請求)。
Nginx服務器將用戶的IP進行hash運算獲得映射值,將特定的IP與特定的服務器綁定,以後該IP的所有請求都會發往該服務器。
# 修改2.1中的策略配置
upstream bal {
ip_hash;
server 127.0.0.1:8081;
server 127.0.0.1:8082;
server 127.0.0.1:8083;
}
2.4,備用機機制
在某臺服務器後添加backup屬性即可將該服務器設置爲備用機。Nginx一般情況下不會將請求發送給備用機,只有所有的非備用機全部宕機或全部忙碌,沒有非備用機能夠響應新的請求時,纔會將請求發送給備用機,使其承擔一部分壓力。如果非備用機重啓或壓力減小,可以正常處理用戶請求時,則備用機再次處於等待狀態。
這裏需要注意,備用機機制不能與IP_HASH負載均衡策略一起使用。
# 修改2.1中的策略配置
upstream bal {
server 127.0.0.1:8081 weight=6;
server 127.0.0.1:8082 weight=1 backup;
server 127.0.0.1:8083 weight=3;
}