文章时间:2020年5月29日 14:30:04
解决问题:Nginx+Tomcat配置反向代理及配置请求头
基于环境:Windows server2016 64位+Tomcat8.5+宝塔7.2+Nginx1.17+JDK1.8出现问题描述:上线一个小项目,使用的技术是Tomcat和Nginx,使用Tomcat跑基础服务,使用Nginx做反向代理,并对外提供服务。正常代理后,用户端访问的页面均正常,只是登录运营端,出现了js和css无法加载,地址显示的还是127.0.0.1,导致运营端所有功能无法正常使用。经查阅大量资料后发现最简单的实现方案,设置请求头。
Tomcat和JDK均为独立安装,只使用了宝塔安装了Nginx,是为了方便可视化管理和配置。
核心配置代码如下:
#动态文件不处理
location /
{
expires 12h;
if ($request_uri ~* "(php|jsp|cgi|asp|aspx)")
{
expires 0;
}
proxy_pass http://域名:端口号;
proxy_set_header Host 域名;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header REMOTE-HOST $remote_addr;
proxy_buffering off;
proxy_buffer_size 4k;
add_header Cache-Control no-cache;
add_header X-Cache $upstream_cache_status;
proxy_set_header Accept-Encoding "";
sub_filter_once off;
#开启缓存
#proxy_cache cache_one;
#proxy_cache_key $host$uri$is_args$args;
#proxy_cache_valid 200 304 301 302 12h;
}
proxy_set_header
用来重定义发往后端服务器的请求头。
在nginx的配置文件中,如果当前模块中没有proxy_set_header的设置,则会从上级别继承配置。
继承顺序为:http, server, location。