昨天搭建了一个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。

![]

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