nginx 轉發及負載均衡

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;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章