反向代理是Nginx的常见用途之一,下面我将详细介绍如何配置Nginx反向代理到Tomcat服务器。
首先确认Tomcat服务器已启动并正常运行,默认监听8080端口(可以修改server.xml
文件更改端口)。
编辑Nginx配置文件(通常在/etc/nginx/nginx.conf
或/etc/nginx/conf.d/default.conf
),添加以下内容:
server {
listen 80;
server_name yourdomain.com; # 替换为你的域名或IP
location / {
proxy_pass http://127.0.0.1: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处理
location ~* \.(jpg|jpeg|png|gif|ico|css|js)$ {
root /path/to/static/files;
expires 30d;
}
}
location /websocket {
proxy_pass http://127.0.0.1:8080;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
upstream tomcat_servers {
server 127.0.0.1:8080 weight=3;
server 192.168.1.100:8080;
server 192.168.1.101:8080;
}
server {
listen 80;
server_name yourdomain.com;
location / {
proxy_pass http://tomcat_servers;
# 其他proxy设置...
}
}
在Tomcat的server.xml
中,确保AccessLogValve
配置了%{X-Forwarded-For}i
:
<Valve className="org.apache.catalina.valves.AccessLogValve"
directory="logs"
prefix="access_log"
suffix=".txt"
pattern="%{X-Forwarded-For}i %l %u %t "%r" %s %b" />
# 测试Nginx配置
sudo nginx -t
# 重载Nginx配置
sudo systemctl reload nginx
502 Bad Gateway错误
静态资源加载问题
Web应用上下文路径问题
nginx
proxy_pass http://127.0.0.1:8080/myapp;
HTTPS配置
通过以上配置,Nginx就能成功反向代理到Tomcat服务器,提供更高效的静态文件服务和负载均衡能力。