nginx系列友情連接:
nginx高性能WEB服務器系列之一簡介及安裝
https://www.cnblogs.com/maxtgood/p/9597596.html
nginx高性能WEB服務器系列之二命令管理
https://www.cnblogs.com/maxtgood/p/9597990.html
nginx高性能WEB服務器系列之三版本升級
https://www.cnblogs.com/maxtgood/p/9598113.html
nginx高性能WEB服務器系列之四配置文件詳解
https://www.cnblogs.com/maxtgood/p/9598333.html
nginx高性能WEB服務器系列之五--實戰項目線上nginx多站點配置
https://www.cnblogs.com/maxtgood/p/9598610.html
nginx高性能WEB服務器系列之六--nginx負載均衡配置+健康檢查
https://www.cnblogs.com/maxtgood/p/9599068.html
nginx高性能WEB服務器系列之七--nginx反向代理
https://www.cnblogs.com/maxtgood/p/9599335.html
nginx高性能WEB服務器系列之八--nginx日誌分析與切割
https://www.cnblogs.com/maxtgood/p/9599542.html
nginx高性能WEB服務器系列之九--nginx運維故障平常解決方案
https://www.cnblogs.com/maxtgood/p/9599752.htmlhtml
注:原創做品,容許轉載,轉載時請務必以超連接形式標明文章 原始出處 、做者信息和本聲明。不然將追究法律責任。nginx
nginx的強大之處沒必要要我細說,當初第一次接觸nginx的時候就發現了它的強大之處,而且自我以爲很是有必要出一篇記錄nginx的各個功能及坑點。web
歡迎你們對nginx感興趣的朋友們來一塊兒學習與及時提出錯誤及誤點。有問題的能夠在評論區@我。apache
一:nginx負載均衡配置vim
其實負載均衡的意思很簡單明瞭,網上不少原理一大堆的解釋,可能看的似懂非懂。這裏本人畫了一個簡單粗暴的原理圖,僅供參考:後端
解釋:其實nginx 做爲一個輕量級、高性能的 web server 主要能夠乾的就兩件事情,服務器
第一件事就是直接做爲http server(代替apache,對PHP須要FastCGI處理器支持);
第二件事就是做爲反向代理服務器實現負載均衡cookie
由於nginx在處理併發方面的優點,如今這個應用很是常見。
固然了Apache的 mod_proxy和mod_cache結合使用也能夠實現對多臺app server的反向代理和負載均衡,可是在併發處理方面apache仍是沒有 nginx擅長。併發
這裏介紹一種實踐負載均衡+健康檢查的方法。app
直接vim /usr/local/nginx/conf/nginx.conf 修改upstream 段配置文件:
http { include mime.types; default_type application/octet-stream; log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; sendfile on; keepalive_timeout 65; upstream worldcup { server 10.124.25.28:8001; server 10.124.25.29:8001; }
nginx配置文件詳解的時候也提到了,注意upstream後面接的關鍵詞,若是須要單臺,同端口負載不一樣請求的時候,須要制定不一樣upstream,如下提供一個實踐實例。
實踐示例,僅供參考,不作解釋:
worker_processes 1; events { worker_connections 1024; } http { include mime.types; default_type application/octet-stream; #log_format main '$remote_addr - $remote_user [$time_local] "$request" ' sendfile on; keepalive_timeout 65; upstream keep_one { server 192.168.1.1:8080 weight=1 max_fails=2 fail_timeout=30s; server 192.168.1.2:8080 weight=1 max_fails=2 fail_timeout=30s; } upstream keep_two { server 192.168.1.3:8081 weight=1 max_fails=2 fail_timeout=30s; server 192.168.1.4:8081 weight=1 max_fails=2 fail_timeout=30s; } server { listen 80; server_name localhost; location / { root html; index index.html index.htm; } location /one { root html; index index.html index.htm; proxy_pass http://keep_one/; proxy_set_header Host $http_host; proxy_set_header Cookie $http_cookie; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; client_max_body_size 300m; } location /two { root html; index index.html index.htm; proxy_pass http://keep_two/; proxy_set_header Host $http_host; proxy_set_header Cookie $http_cookie; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; client_max_body_size 300m; } } }
提供兩個負載接口,同臺服務器,同個IP,同個端口。
二:nginx負載後端的監控檢查
其實以上配置文件中已經配置了健康檢查的例子,如下介紹兩種健康檢查的方式。
方法一:
添加upstream的時候,直接ip+port後接weight=1 max_fails=2 fail_timeout=30s;
###如如下代碼
upstream fastdfs_tracker { server 192.168.1.1:8080 weight=1 max_fails=2 fail_timeout=30s; server 192.168.1.2:8080 weight=1 max_fails=2 fail_timeout=30s; }
解釋:weight爲配置的權重,在fail_timeout內檢查max_fails次數,失敗則剔除均衡。
方法二:
添加upstream的時候,在最後一行添加
###如如下代碼:
upstream test{ #負載均衡配置,默認的策略,按時間前後,有其餘按ip hash,權重 server 192.168.1.1:8080; server 192.168.1.2:8080; server 192.168.1.3:8080; check interval=3000 rise=2 fall=3 timeout=3000 type=http port=7070;
}
解釋:# interval=3000:間隔3秒檢查一次,rise=2:檢查2次ok後端節點up,fall=3:三次檢查失敗後端節點down,timeout=3000:超時時間3秒,type=http:發http檢查請求類型,port=8080檢查端口,可省略,默認和server 192.168.1.1:8080中的端口一致。
至此關於nginx最經常使用的負載均衡+健康檢查已經配置完成,後系列中還會介紹到相對經常使用的nginx的反向代理。