整合 Tomcat 和 Nginx 通常是让 Nginx 作为反向代理 / 负载均衡器,将请求转发给后端的 Tomcat 处理(尤其是 Java Web 应用)。下面从原理 → 常见架构 → 配置示例 → 注意事项逐步说明。
常见原因:
客户端
|
Nginx(80 / 443)
|--------> Tomcat(8080)
|--------> Tomcat(8081) (可选,负载均衡)
8080http://ip:8080/项目名确保 Nginx 已安装:
nginx -v
编辑 Nginx 配置(通常 /etc/nginx/nginx.conf 或 /etc/nginx/conf.d/*.conf):
server {
listen 80;
server_name www.example.com;
# 静态资源由 Nginx 处理
location ~* \.(html|css|js|png|jpg|gif)$ {
root /data/static;
expires 30d;
}
# 动态请求转发给 Tomcat
location / {
proxy_pass http://127.0.0.1:8080;
proxy_set_header Host $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;
}
}
✅ 访问 http://www.example.com → 实际由 Tomcat 处理
/data/
├── static/ # 静态资源
│ ├── css/
│ ├── js/
│ └── images/
└── tomcat/webapps/ROOT
location /static/ {
root /data;
}
location / {
proxy_pass http://127.0.0.1:8080;
}
upstream tomcat_cluster {
server 127.0.0.1:8080;
server 127.0.0.1:8081;
}
server {
listen 80;
location / {
proxy_pass http://tomcat_cluster;
}
}
✅ 适合高并发场景
server {
listen 443 ssl;
server_name www.example.com;
ssl_certificate /path/fullchain.pem;
ssl_certificate_key /path/privkey.pem;
location / {
proxy_pass http://127.0.0.1:8080;
}
}
Tomcat 可保持 HTTP(内网)
server.xml 中:
<Valve className="org.apache.catalina.valves.RemoteIpValve"
remoteIpHeader="X-Forwarded-For"
protocolHeader="X-Forwarded-Proto"/>
避免项目名不一致:
<Context path="" docBase="myapp"/>
❌ 404
proxy_pass 路径是否正确❌ 端口冲突
❌ Session 丢失(负载均衡)
ip_hashupstream tomcat_cluster {
ip_hash;
server 127.0.0.1:8080;
server 127.0.0.1:8081;
}
✅ 最常用方案:
如果你有:
我可以给你完全可直接用的配置。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。