在Nginx下配置Tomcat通常涉及将Nginx作为反向代理服务器,将请求转发到后端的Tomcat应用服务器。以下是详细的配置步骤:
bash
http://your_server_ip:8080/your_app
编辑Nginx的配置文件(通常位于/etc/nginx/nginx.conf
或/etc/nginx/conf.d/default.conf
),添加以下内容:
server {
listen 80;
server_name your_domain.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;
}
}
静态文件分离:Nginx直接处理静态文件(如CSS/JS/图片),减轻Tomcat负载。
location ~* \.(jpg|jpeg|gif|png|css|js|ico)$ {
root /path/to/your/static/files;
expires 30d;
}
WebSocket支持(如Tomcat应用使用WebSocket):
location /ws/ {
proxy_pass http://localhost:8080;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
sudo nginx -t # 测试配置语法
sudo systemctl restart nginx
server.xml
(位于/conf/server.xml
):
proxyName
和proxyPort
(如果Nginx启用HTTPS):
xml
<Connector port="8080" protocol="HTTP/1.1"
proxyName="your_domain.com"
proxyPort="443"
redirectPort="8443" />
xml
compression="on"
compressionMinSize="2048"
compressableMimeType="text/html,text/xml,text/css,application/javascript"
使用Let's Encrypt免费证书:
sudo certbot --nginx -d your_domain.com
Nginx会自动更新配置,将HTTP重定向到HTTPS。
http://your_domain.com
或 https://your_domain.com
,应显示Tomcat应用。bash
tail -f /var/log/nginx/access.log
bash
tail -f /opt/tomcat/logs/catalina.out
502 Bad Gateway
systemctl status tomcat
。proxy_pass
地址是否正确。静态文件未加载
HTTPS混合内容警告
https://
(或相对路径)。通过以上步骤,Nginx将作为高性能的前端代理,处理静态内容和SSL,而动态请求则转发给Tomcat,实现高效的分工协作。