nginx二級負載配置
nginx安裝
按照nginx官網的命令進行安裝,文件位址,安裝完成後,配置檔案預設在/etc/nginx/nginx.conf和/etc/nginx/conf.d/default.conf。
負載架構
一級負載,ip位址和埠為 ***.***.***.180:9000
二級負載,ip位址和埠為 ***.***.***.179:9100,在二級負載中,會再把請求根據url分發給不同位址埠
配置檔案**
在conf.d裡執行cp default.conf sw.conf,然後對sw.conf進行如下配置:
server
location /sw/
}}
配置解析:
先關注下面兩行配置:
proxy_set_header x-real-ip $remote_addr;
proxy_set_header x-forwarded-for $proxy_add_x_forwarded_for;
根據維基百科描述,
x-forwarded-for的格式應該如下:
x-forwarded-for: client1, proxy1, proxy2, ...
而nginx中,每次都是取x-forwarded-for 中最右邊的ip作為x-real-ip的值,明顯最右邊的ip是乙個反向**的ip,而不是真實的客戶端ip。
所以我們需要根據專案的需求來決定使用什麼ip,在公司專案裡,需要使用的是最外層**的ip,所以可以直接使用上述配置。如果需要獲取使用者訪問的真實ip,而不是**ip,需要使用ngx_http_realip_module模組,預設這個模組沒有啟動,需要在安裝時使用–with-http_realip_module作為configuration的引數。
下面是host配置:
proxy_set_header host $host:$server_port
host如果不配置,拿到的就是應用的ip和埠。
經過測試發現,這個host是有傳遞性的,因為專案裡需要獲取host,所以這個配置也比較重要。假如只在二級負載配置host,應用得到的結果是***.***.***.179:9100,也就是二級負載所在的伺服器的ip和埠,但如果在一級負載裡也配置了host,那應用的到的結果是***.***.***.180:9100,會發現,埠是二級的埠,ip是一級的ip,所以在設定的時候,可以直接把server_port寫死,這樣就不會出現問題。
x-forwarded-host、x-forwarded-server
proxy_set_header x-forwarded-host $host;
proxy_set_header x-forwarded-server $host;
用來確定最外層負載的ip
x-forwarded-proto
proxy_set_header x-forwarded-proto $scheme;
用來確定客戶端和一級負載之間的傳輸協議(http或https) Nginx配置二級子網域名稱
準備 需要泛網域名稱 domain.com。主機 www.domain.com 或 domain.com。思路 將 domain.com 解析到主機www.domain.com 不能為www或空 配置 if host b www b w w w location 測試 環境 window7 ngin...
nginx配置二級網域名稱
先在阿里雲解析乙個二級網域名稱 控制台 網域名稱與萬網 網域名稱 解析 新增解析 填上主機記錄 www 記錄值 你的ip 其他預設就ok 現在編輯nginx.conf usr local nginx conf nginx.conf 在http中加上一句 include usr local nginx...
Nginx配置二級子網域名稱
準備 需要泛網域名稱 domain.com。主機 www.domain.com 或 domain.com。思路 將 domain.com 解析到主機www.domain.com 不能為www或空 配置 if host b www b w w w location 測試 環境 window7 ngin...