昨天搭建了一个ngnix代理后端tomcat集群的拖布环境,死活加载不了后端js/css,后在网上折腾了大概一小时左右,终于找到了原因所在
大概的原因就是因为后端节点无法获取到到客户端真实的信息,如IP地址,使用的协议,端口号等,因为后端节点认为的客户端是nginx代理而不是我真正的客户端(浏览器)
解决方法就是添加proxy_set_header信息,改变请求头部的信息,告诉后端节点客户端真实的信息
最总的配置方案就是

[root@LB01 conf]# vim nginx.conf

events {
worker_connections 1024;
}

http {
#http_proxy
proxy_buffer_size 128k;
proxy_buffers 32 128k;
proxy_busy_buffers_size 128k;

upstream tomcat {
server 10.0.0.11:8080;
server 10.0.0.12:8080;
}

server {
listen 8080;
server_name your.domain.com;

   location / {

proxy_pass http://tomcat;
#proxy_params
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}

}

}

解释以下上面的配置,以上配置是在Nginx反向代理的时候,添加一些请求Header。

  1. Host包含客户端真实的域名和端口号;
  2. X-Forwarded-Proto表示客户端真实的协议(http还是https);
  3. X-Real-IP表示客户端真实的IP;
  4. X-Forwarded-For这个Header和X-Real-IP类似,但它在多层代理时会包含真实客户端及中间每个代理服务器的IP。

nginx代理tomcat导致css或js加载失败_第1张图片![]

参考链接:https://flyflyfish.com/2018/02/28/nginx代理tomcat导致css或js加载失败/