使用nginx做負載均衡的兩大模組:
nginx 的負載均衡功能依賴於 ngx_http_upstream_module模組,所支援的**方式有 proxy_pass(一般用於反向**),fastcgi_pass(一般用於和動態程式互動),memcached_pass,proxy_next_upstream,fastcgi_next_pass,memcached_next_pass 。
upstream 模組應該放於http{}標籤內。
模組寫法:
upstream backend
例項一:
upstream dynamic
語法解釋:
server ip 排程狀態
server指令指定後端伺服器ip位址和埠,同時還可以設定每個後端伺服器在負載均衡排程中的狀態。
例:如果max_fails是5,他就檢測5次,如果五次都是502.那麼,他就會根據fail_timeout 的值,等待10秒,再去檢測。
server 如果接網域名稱,需要內網有dns伺服器,或者在負載均衡器的hosts檔案做網域名稱解析。server後面還可以直接接ip或ip加埠。
upstream backend
通過該指令配置了每個worker程序與上游伺服器可快取的空閒連線的最大數量。
當超出這個數量時,最近最少使用的連線將被關閉。keepalive指令不限制worker程序與上游伺服器的總連線。
location /
連線池配置建議
空閒連線池太小,連線不夠用,需要不斷建連線。
空閒連線池太大,空閒連線太多,還沒使用就超時。
建議只對小報文開啟長連線。
location作用:基於乙個指令設定uri。
syntax: location [ = | ~ | ~* | ^~ ] uri
location @name
default: —
context: server, location
匹配是有優先順序的,不是按照nginx的配置檔案進行。官方的例子:
location = /
location /
location /documents/
location ^~ /images/
location ~* \.(gif|jpg|jpeg)$
結論:
location /
location = /
location /documents/
location ^~ /images/
location ~* \.(gif|jpg|jpeg)$
測試結果(重點看):
[root@lb01 conf]# curl -i -s -o /dev/null -w "%\n"
402[root@lb01 conf]# curl -i -s -o /dev/null -w "%\n" index.html
401[root@lb01 conf]# curl -i -s -o /dev/null -w "%\n" documents/document.html
403[root@lb01 conf]# curl -i -s -o /dev/null -w "%\n" images/1.gif
404[root@lb01 conf]# curl -i -s -o /dev/null -w "%\n" dddd/1.gif
500
結果總結:
匹配的優先順序,=
>^~
(匹配固定字串,忽略正則)>完全相等
>~*
>空
>/
。
工作中盡量將』='放在前面
proxy_pass 指令屬於ngx_http_proxy_module 模組,此模組可以將請求**到另一台伺服器。
寫法:
proxy_pass http://localhost:8000/uri/;
例項一:
upstream blog_real_servers
server
}
配置如下:
'"$http_user_agent" "$http_x_forwarded_for"';rs_apache節點的httpd.conf配置
logformat "\"%i\" %l %u %t \"%r\" %>s %b \"%i\" \"%i\"" combined修改日誌記錄
apache
logformat "\"%i\" %l %u %t \"%r\" %>s %b" common
nginx提供了health_check語句來提供負載(upstream)時的鍵康檢查機制(注意:此語句需要設定在location上下文中)。
支援的引數有:
乙個簡單的設定如下,將使用預設值:
location /
對就應用,我們可以專門定義乙個api用於健康檢查:/api/health_check,並只返回http狀態碼為200。並設定兩次檢查之間的間隔值為1秒。這樣,health_check語句的配置如下:
health_check uri="/api/health_check" interval;
匹配match的方法
}match 例子舉例
if ($request_method !~ ^(get|head|post)$ )最終實現:
/static/的url都去訪問10.0.0.9。
/dynamic/的url都去訪問10.0.0.10。
這些靜態檔案去訪問10.0.0.9。
/upload/的url都去訪問10.0.0.10。
}nginx-proxy_pass官網
nginx系列之五 負載均衡
nginx系列之一 nginx入門 nginx系列之二 配置檔案解讀 nginx系列之三 日誌配置 nginx系列之四 web伺服器 nginx系列之五 負載均衡 nginx系列之六 cache服務 nginx系列之七 限流配置 nginx系列之八 使用upsync模組實現負載均衡 使用nginx做...
Nginx系列(十三 nginx負載均衡)
負載均衡 upstream webserver 反向 server web伺服器 server location php 1.輪詢 預設 upstream webserver2.weight upstream webserver3.ip hash 解決session共享問題 upstream web...
Nginx 五 nginx 配置 負載均衡
瀏覽器位址列輸入位址 負載均衡效果,平均 8080 和 8081 埠中 準備兩台 tomcat 伺服器,一台 8080,一台 8081 找到 nginx 配置檔案進行如下 每個請求按時間順序逐一分配到不同的後端伺服器,如果後端伺服器 down 掉,能自動剔除 upstream myserverwei...