要通过Nginx访问运行在Java Servlet容器(如Tomcat、Jetty等)中的Servlet,你需要配置Nginx作为反向代理。以下是详细步骤:
确保Servlet容器正常运行
配置Nginx反向代理
在Nginx配置文件中(通常在/etc/nginx/nginx.conf
或/etc/nginx/sites-available/default
)添加以下内容:
server {
listen 80;
server_name yourdomain.com; # 替换为你的域名或IP
location / {
proxy_pass http://localhost:8080; # 指向Servlet容器的地址
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使配置生效
sudo nginx -t # 测试配置是否正确
sudo systemctl restart nginx
配置特定路径转发
如果你只想将特定路径转发到Servlet容器:
location /yourapp/ {
proxy_pass http://localhost:8080/yourapp/;
# 其他proxy_set_header配置...
}
负载均衡配置
如果你有多个Servlet容器实例:
upstream servlet_servers {
server 127.0.0.1:8080;
server 127.0.0.1:8081;
# 可以添加更多服务器
}
server {
location / {
proxy_pass http://servlet_servers;
# 其他配置...
}
}
WebSocket支持
如果你的Servlet应用使用WebSocket:
location / {
proxy_pass http://localhost:8080;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
# 其他配置...
}
502 Bad Gateway错误
静态文件与动态请求分离
location / {
try_files $uri $uri/ @servlet;
}
location @servlet {
proxy_pass http://localhost:8080;
# 其他配置...
}
性能调优
proxy_buffering on;
proxy_buffer_size 8k;
proxy_buffers 8 32k;
proxy_busy_buffers_size 64k;
proxy_temp_file_write_size 64k;
完成以上配置后,访问Nginx的80端口将会被代理到Servlet容器的8080端口,从而实现对Servlet的访问。