nginx 通过 proxy_pass 反向代理 tomcat,需确保 tomcat 正常运行并开放端口,配置 location 块与关键请求头,支持 upstream 多实例及域名分流,最后重载配置验证。

直接在 Nginx 配置里加 proxy_pass 指向 Tomcat 地址就能实现,关键不是“转发”,而是让 Nginx 把原始请求原样交过去、再把 Tomcat 的响应如实返回给用户。
确认 Tomcat 已就绪并可被访问
这是前提,否则 Nginx 转发过去会报 502:
- 启动 Tomcat:进入
bin/目录执行./startup.sh,默认监听8080端口 - 本地验证:用
curl http://127.0.0.1:8080或浏览器打开http://服务器IP:8080,应看到 Tomcat 欢迎页 - 检查防火墙:如使用 firewalld,运行
firewall-cmd --add-port=8080/tcp --permanent && firewall-cmd --reload
在 nginx.conf 中添加反向代理规则
编辑配置文件(路径通常为 /usr/local/nginx/conf/nginx.conf),在 server 块内写转发逻辑:
- 代理根路径(比如访问
https://example.com/→ Tomcat):location / { proxy_pass http://127.0.0.1:8080; } - 带路径前缀时注意斜杠(如
/app/xxx要去掉/app再转):location /app/ { proxy_pass http://127.0.0.1:8080/; }(末尾必须有/) - 务必补充关键请求头,否则 Tomcat 可能拿不到真实 IP、协议或 Host:
proxy_set_header Host $host;<br>proxy_set_header X-Real-IP $remote_addr;<br>proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;<br>proxy_set_header X-Forwarded-Proto $scheme;
支持多实例或按域名分流
业务扩展后,单台 Tomcat 不够用,这时用 upstream 更清晰可靠:
- 在
http块顶部定义服务池:upstream tomcat_cluster {<br> server 192.168.1.10:8080;<br> server 192.168.1.11:8080;<br>} - 在
server块中引用:location / { proxy_pass http://tomcat_cluster; } - 按域名区分后端(如
admin.example.com走 A 实例,api.example.com走 B 实例):server_name admin.example.com;<br>location / { proxy_pass http://192.168.1.10:8080; }
重载配置并验证效果
改完别忘了校验和生效:
- 检查语法是否正确:
/usr/local/nginx/sbin/nginx -t - 平滑重载配置:
/usr/local/nginx/sbin/nginx -s reload - 访问 Nginx 监听地址(如
http://服务器IP或已绑定的域名),应显示 Tomcat 页面或你的 Java 应用首页
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











