nginx ------反向代理和负载均衡
最近由于公司的業務增長 服務器承受不住壓力經常出現崩潰現象 為了解決 使用nginx的負載均衡解決,以下是操作步驟:
1.nginx 的負載均衡:將壓力分散到不同的機器上
nginx不單可以作為強大的web服務器,也可以作為一個反向代理服務器,而且nginx還可以按照調度規則實現動態、靜態頁面的分離,可以按照輪詢、ip哈希、URL哈希、權重等多種方式對后端服務器做負載均衡,同時還支持后端服務器的健康檢查
2.nginx負載均衡配置:
修改配置文件中的proxy_pass和添加upstream
upstream www.test.com {server 192.168.1.1:8080;server 192.168.1.2:8080; }server {listen 80;server_name blog.test.com wode.test.com;location / {proxy_pass http://www.test.com; proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;} }nginx 的 upstream目前支持 4 種方式的分配
1)、輪詢(默認)
每個請求按時間順序逐一分配到不同的后端服務器,如果后端服務器down掉,能自動剔除。
2)、weight
指定輪詢幾率,weight和訪問比率成正比,用于后端服務器性能不均的情況。
2)、ip_hash
每個請求按訪問ip的hash結果分配,這樣每個訪客固定訪問一個后端服務器,可以解決session的問題。
3)、fair(第三方)
按后端服務器的響應時間來分配請求,響應時間短的優先分配。
4)、url_hash(第三方)
3.nginx多臺機器session共享
?ip_hash
nginx中的ip_hash技術能夠將某個ip的請求定向到同一臺后端,這個ip下的某個客戶端和某個后端就能建立起穩固的session,ip_hash是在upstream配置中定義的:
1)ip_hash缺陷:
nginx不是最前端的服務器,ip_hash要求nginx一定是最前端的服務器,否則nginx得不到正確ip,就不能根據ip作hash;如使用的是squid為最前端,那么nginx取ip時只能得到squid的服務器ip地址,用這個地址來作分流是肯定錯亂的
nginx的后端其它方式的負載均衡:將請求通過另外的方式分流,那么某個客戶端的請求肯定不能定位到同一臺session應用服務器上,nginx后端只能直接指向應用服務器,或者再搭一個squid,然后指向應用服務器;
最好的辦法是用location作一次分流,將需要session的部分請求通過ip_hash分流,剩下的走其它后端去
2)upstream_hash?第三方模塊
這個模塊多數情況下是用作url_hash的,但是并不妨礙將它用來做session共享,如前端是squid,它會將ip加入x_forwarded_for這個http_header里,用upstream_hash可以用這個頭做因子,將請求定向到指定的后端;
posted on 2018-09-27 11:04 【cosmo】 閱讀(...) 評論(...) 編輯 收藏
轉載于:https://www.cnblogs.com/qinxu/p/9709101.html
總結
以上是生活随笔為你收集整理的nginx ------反向代理和负载均衡的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mvc根据绝对路径下载文件
- 下一篇: CodeFrist基础_迁移更新数据