Nginx作为高性能的Web服务器和反向代理服务器,可以将客户端请求转发到后端的Tomcat服务器,实现负载均衡、SSL终止、静态资源处理等功能。
确保Tomcat配置了正确的应用上下文路径。例如在server.xml
中:
<Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true">
<Context path="" docBase="your_webapp" reloadable="true"/>
</Host>
编辑Nginx配置文件(通常在/etc/nginx/nginx.conf
或/etc/nginx/conf.d/default.conf
):
server {
listen 80;
server_name yourdomain.com; # 替换为你的域名或IP
location / {
proxy_pass http://localhost:8080; # Tomcat默认地址
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;
# 可选:WebSocket支持
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
# 可选:静态资源由Nginx直接处理
location ~* \.(jpg|jpeg|png|gif|ico|css|js|html)$ {
root /path/to/your/static/files;
expires 30d;
}
}
如果有多个Tomcat实例:
upstream tomcat_servers {
server 127.0.0.1:8080 weight=5;
server 127.0.0.1:8081;
server 127.0.0.1:8082;
}
server {
location / {
proxy_pass http://tomcat_servers;
# 其他proxy设置...
}
}
server {
listen 443 ssl;
server_name yourdomain.com;
ssl_certificate /path/to/your/cert.pem;
ssl_certificate_key /path/to/your/key.pem;
location / {
proxy_pass http://localhost:8080;
# 其他proxy设置...
}
}
对于需要WebSocket的应用:
location /ws/ {
proxy_pass http://localhost:8080;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_read_timeout 86400s;
proxy_send_timeout 86400s;
}
测试Nginx配置是否正确:
nginx -t
重新加载Nginx配置:
nginx -s reload
# 或
systemctl reload nginx
502 Bad Gateway错误:
静态资源无法加载:
Session丢失问题:
upstream tomcat_servers {
ip_hash;
server 127.0.0.1:8080;
server 127.0.0.1:8081;
}
通过以上配置,Nginx将作为反向代理服务器,将请求转发到后端的Tomcat应用服务器,同时可以利用Nginx的高性能处理静态资源和SSL等任务。