原因:读取到是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_passhttp://server_8082; # proxy_passhttp://192.168.93.105:8082;# 下面几个配置,意思是将http头转发给后端应用,不然你后端应用服务拿客户活动:慈云数据爆款香港服务器,CTG+CN2高速带宽、快速稳定、平均延迟10+ms 速度快,免备案,每月仅需19元!! 点击查看端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 {server192.168.93.105:8082 weight=2;#server192.168.0.105:8083 weight=1;}server { listen 8082; server_name localhost; location / {# 反向代理。负载均衡可通过upstream设置多个服务器proxy_passhttp://server_8082; # proxy_passhttp://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_passhttp://server_8082; # proxy_passhttp://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; }}
【参考1】
【参考2】
53655619
《nginx 代理静态资源,nginx反向代理访问静态资源》来自互联网同行内容,若有侵权,请联系我们删除!
还没有评论,来说两句吧...