Windos環境用Nginx配置反向代理和負載均衡 引言:在前後端分離架構下,難免會遇到跨域問題。目前的解決方案大致有JSONP,反向代理,CORS這三種方式。JSONP相容性良好,最大的缺點是只支持GET方式請求。反向代理方式簡單徹底,基本只需要伺服器配置即可完成。CORS由服務提供程式主動聲明自 ...
Windos環境用Nginx配置反向代理和負載均衡
引言:在前後端分離架構下,難免會遇到跨域問題。目前的解決方案大致有JSONP,反向代理,CORS這三種方式。JSONP相容性良好,最大的缺點是只支持GET方式請求。反向代理方式簡單徹底,基本只需要伺服器配置即可完成。CORS由服務提供程式主動聲明自己可信任源,目前的缺點是老式瀏覽器無法支持。
問題:反向代理如何實現?
解決方案:使用Nginx輕鬆搞定反向代理。配置很簡單,還附帶負載均衡配置方法。
步驟1.下載Nginx。最新下載地址:http://nginx.org/en/download.html
步驟2.修改/ conf/ nginx.conf配置文件。Nginx運行起來。
訪問localhost:8000/index.html會直接訪問發佈的靜態文件。訪問localhost:8000/api/index.html會被輪詢分配到localhost:8005/index.html和localhost:8006/index.html。這樣就能保證前端和後端服務在同源下,徹底解決跨域問題。同時api還實現了負載均衡,減輕了伺服器壓力。
步驟3,設置服務端cookie的path和domain。
效果:
涉及配置文件內容:

#設定負載均衡的伺服器列表 #weight越大,負載的權重就越大。8006的訪問量是8005的兩倍 upstream targetserver{ #ip_hash;#按訪問ip的hash結果分配,解決Session跨伺服器問題 server localhost:8005 weight=1; server localhost:8006 weight=2; }View Code

location ^~ /api/ { #proxy_pass http://localhost:8006;#反向代理方式1 proxy_pass http://targetserver; #反向代理2,也可做負載均衡。 #proxy_redirect default ; proxy_redirect off ; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header REMOTE-HOST $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; client_max_body_size 50m; client_body_buffer_size 256k; proxy_connect_timeout 30; proxy_send_timeout 30; proxy_read_timeout 60; proxy_buffer_size 256k; proxy_buffers 4 256k; proxy_busy_buffers_size 256k; proxy_temp_file_write_size 256k; proxy_next_upstream error timeout invalid_header http_500 http_503 http_404; proxy_max_temp_file_size 128m; rewrite /api/(.+)$ /$1 break;#將/api/後面的路由直接轉發到目標伺服器的根目錄 } location / { autoindex on; index index.html index.htm; root "E:\02源代碼管理\技術文檔\AngularJsDemo"; }View Code
----------------------------------------------------正文結束分割線----------------------------------------------------
upstream還可以為每個設備設置狀態值,這些狀態值的含義分別如下:
down 表示單前的server暫時不參與負載.
weight 預設為1.weight越大,負載的權重就越大。
max_fails :允許請求失敗的次數預設為1.當超過最大次數時,返回proxy_next_upstream 模塊定義的錯誤.
fail_timeout : max_fails次失敗後,暫停的時間。
backup: 其它所有的非backup機器down或者忙的時候,請求backup機器。所以這台機器壓力會最輕。