nginx代理出現靜態資源讀取不到
阿新 • • 發佈:2020-12-12
原因:讀取到是nginx伺服器地址下的靜態資源,而非被代理伺服器的靜態資源。
解決:設定如下,形似動靜分離
# 反向代理時,靜態資原始檔讀取地址不是實際伺服器地址,而是nginx的地址,需要如下配置才能真正讀取到靜態資源
location ~ .* {
proxy_pass http://192.168.93.105;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Fonwarded-For $proxy_add_x_forwarded_for;
}
主要作用是 proxy_set_header Host $http_host 中 $http_host,如果 $host 依舊不會有效。該處原因暫未明確
2、反向代理可以直接在location 中指定 proxy_pass http://192.168.93.105:8082; 或者 通過 upstream domain 指定服務組,然後指定服務組名(domain)進行代理:proxy_pass http://server_8082; 。
location / {
# 反向代理。負載均衡可通過upstream設定多個伺服器
proxy_pass http://server_8082;
# proxy_pass http: //192.168.93.105:8082;
# 下面幾個配置,意思是將http頭轉發給後端應用,不然你後端應用服務拿客戶端IP地址的時候拿到的是nginx代理的地址而不是客戶端的。
#proxy_set_header Host $host;
#proxy_set_header X-Real-IP $remote_addr;
#proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
#root html;
index index.html index.htm;
}
綜合
# 設定負載伺服器池(服務組),如果有域名採用域名作為名稱 upstream server_8082 { server 192.168.93.105:8082 weight=2; #server 192.168.0.105:8083 weight=1; } server { listen 8082; server_name localhost; location / { # 反向代理。負載均衡可通過upstream設定多個伺服器 proxy_pass http://server_8082; # proxy_pass http://192.168.93.105:8082; # 下面幾個配置,意思是將http頭轉發給後端應用,不然你後端應用服務拿客戶端IP地址的時候拿到的是nginx代理的地址而不是客戶端的。 #proxy_set_header Host $host; #proxy_set_header X-Real-IP $remote_addr; #proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; #root html; index index.html index.htm; } # 反向代理時,靜態資原始檔讀取地址不是實際伺服器地址,而是nginx的地址,需要如下配置才能真正讀取到靜態資源 location ~ .* { proxy_pass http://server_8082; # proxy_pass http://192.168.93.105:8082; proxy_set_header Host $http_host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Fonwarded-For $proxy_add_x_forwarded_for; } error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } }