反向代理是 Nginx 的常见用途之一,下面我将详细介绍如何配置 Nginx 作为 Tomcat 的反向代理。
确保已安装 Nginx,如果没有安装可以使用以下命令(以 Ubuntu 为例):
sudo apt update
sudo apt install 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; # Tomcat 默认端口是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;
# 可选:WebSocket支持
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
}
sudo nginx -t # 测试配置是否正确
sudo systemctl reload nginx # 重载配置
upstream tomcat_servers {
server 127.0.0.1:8080;
server 127.0.0.1:8081;
# 可以添加更多服务器
# server 192.168.1.100:8080;
}
server {
listen 80;
server_name yourdomain.com;
location / {
proxy_pass http://tomcat_servers;
# 其他代理设置...
}
}
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;
# 其他代理设置...
}
}
# HTTP 重定向到 HTTPS
server {
listen 80;
server_name yourdomain.com;
return 301 https://$host$request_uri;
}
server {
# ...其他配置...
# 静态文件由Nginx直接处理
location ~* \.(jpg|jpeg|png|gif|ico|css|js|html|txt)$ {
root /path/to/static/files;
expires 30d;
access_log off;
}
# 动态请求转发到Tomcat
location / {
proxy_pass http://localhost:8080;
# 其他代理设置...
}
}
502 Bad Gateway 错误:
静态资源加载问题:
会话丢失问题:
proxy_set_header Host $host;
已设置性能调优:
proxy_buffering on;
proxy_buffer_size 4k;
proxy_buffers 8 16k;
proxy_busy_buffers_size 32k;
proxy_temp_file_write_size 32k;
通过以上配置,Nginx 可以高效地为 Tomcat 提供反向代理服务,提高系统的安全性和性能。