2023年6月20日发(作者:)
nginx负载代理不能正常加载CSS,JSP等问题解决⽅法apache 搭载的 论坛,⽤ nginx 负载均衡,结果 返回的⽹页 不能加在图⽚ , 没有 样式。
⽤ 浏览器 F12 追踪 发现 , 不能 加载 css 样式 。在⽹上 找了 好多 ⽅法 。说是 修改正则 解决 问题。 对于我来说 根本 没有作⽤。。
错误⽰例 如下: upstream dr13am{ server 172.25.28.26:80; server 172.25.28.27:80; server 172.25.28.28:80 backup; }location ~ .*.(gif|jpg|jpeg|png|bmp|swf|js|css)${ proxy_pass
access_log off; expires 30d;}最后 发现 跟 http请求头 配置有关, 最终解决问题 location /{ proxy_pass dr13am; 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为了实现的需求⽽增加了⼀个ngx_http_proxy_module模块。其中proxy_set_header指令就是该模块需要读取的配置⽂件。在这⾥,所有设置的值的含义和http请求同中的含义完全相同,除了Host外还有X-Forward-For。Host的含义是表明请求的主机名,因为nginx作为使⽤,⽽如果后端的服务器设置有类似防盗链或者根据中的host字段来进⾏路由或判断功能的话,如果层的nginx不重写请求头中的host字段,将会导致请求失败【默认反向代理服务器会向后端真实服务器发送请求,并且请求头中的host字段应为proxy_pass指令设置的服务器】。同理,X_Forward_For字段表⽰该条http请求是有谁发起的?如果反向代理服务器不重写该请求头的话,那么后端真实服务器在处理时会认为所有的请求都来在反向代理服务器,如果后端有防***策略的话,那么机器就被封掉了。因此,在配置⽤作反向代理的nginx中⼀般会增加两条配置,修改http的请求头:proxy_set_header Host $http_host;proxy_set_header X-Forward-For $remote_addr;这⾥的$http_host和$remote_addr都是nginx的导出变量,可以再配置⽂件中直接使⽤。如果Host请求头部没有出现在请求头中,则$http_host值为空,但是$host值为主域名。因此,⼀般⽽⾔,会⽤$host代替$http_host变量,从⽽避免http请求中丢失Host头部的情况下Host不被重写的失误。
2023年6月20日发(作者:)
nginx负载代理不能正常加载CSS,JSP等问题解决⽅法apache 搭载的 论坛,⽤ nginx 负载均衡,结果 返回的⽹页 不能加在图⽚ , 没有 样式。
⽤ 浏览器 F12 追踪 发现 , 不能 加载 css 样式 。在⽹上 找了 好多 ⽅法 。说是 修改正则 解决 问题。 对于我来说 根本 没有作⽤。。
错误⽰例 如下: upstream dr13am{ server 172.25.28.26:80; server 172.25.28.27:80; server 172.25.28.28:80 backup; }location ~ .*.(gif|jpg|jpeg|png|bmp|swf|js|css)${ proxy_pass
access_log off; expires 30d;}最后 发现 跟 http请求头 配置有关, 最终解决问题 location /{ proxy_pass dr13am; 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为了实现的需求⽽增加了⼀个ngx_http_proxy_module模块。其中proxy_set_header指令就是该模块需要读取的配置⽂件。在这⾥,所有设置的值的含义和http请求同中的含义完全相同,除了Host外还有X-Forward-For。Host的含义是表明请求的主机名,因为nginx作为使⽤,⽽如果后端的服务器设置有类似防盗链或者根据中的host字段来进⾏路由或判断功能的话,如果层的nginx不重写请求头中的host字段,将会导致请求失败【默认反向代理服务器会向后端真实服务器发送请求,并且请求头中的host字段应为proxy_pass指令设置的服务器】。同理,X_Forward_For字段表⽰该条http请求是有谁发起的?如果反向代理服务器不重写该请求头的话,那么后端真实服务器在处理时会认为所有的请求都来在反向代理服务器,如果后端有防***策略的话,那么机器就被封掉了。因此,在配置⽤作反向代理的nginx中⼀般会增加两条配置,修改http的请求头:proxy_set_header Host $http_host;proxy_set_header X-Forward-For $remote_addr;这⾥的$http_host和$remote_addr都是nginx的导出变量,可以再配置⽂件中直接使⽤。如果Host请求头部没有出现在请求头中,则$http_host值为空,但是$host值为主域名。因此,⼀般⽽⾔,会⽤$host代替$http_host变量,从⽽避免http请求中丢失Host头部的情况下Host不被重写的失误。
发布评论