Nginx未将80端口请求转发至8080端口问题求助
问题原因
你的Nginx配置中server_name仅指定了域名example.com和www.example.com,当直接访问服务器IP时,Nginx会优先匹配默认的server块(通常是/etc/nginx/sites-available/default),因此显示默认的欢迎页面,而非转发到Tomcat。
解决方法
以下几种方案任选其一即可:
方案1:让IP访问也转发到Tomcat
修改你的/etc/nginx/sites-available/tomcat.conf,通过两种方式让IP请求匹配到Tomcat的反向代理配置:
- 方法A:把服务器IP添加到
server_name列表中server { listen 80; # 替换成你的实际服务器IP server_name example.com www.example.com 192.168.1.100; access_log /var/log/nginx/tomcat-access.log; error_log /var/log/nginx/tomcat-error.log; location / { proxy_set_header X-Forwarded-Host $host; proxy_set_header X-Forwarded-Server $host; proxy_set_header X-Forwarded-For $remote_addr; proxy_pass http://127.0.0.1:8080; } } - 方法B:将该server块设为默认(所有未匹配到指定
server_name的请求都会走这个块)server { listen 80 default_server; listen [::]:80 default_server; # 不需要IPv6支持可删除此行 server_name example.com www.example.com; access_log /var/log/nginx/tomcat-access.log; error_log /var/log/nginx/tomcat-error.log; location / { proxy_set_header X-Forwarded-Host $host; proxy_set_header X-Forwarded-Server $host; proxy_set_header X-Forwarded-For $remote_addr; proxy_pass http://127.0.0.1:8080; } }
方案2:禁用默认的server块
删除默认站点的软链接,让Nginx仅加载你配置的Tomcat反向代理规则:
sudo unlink /etc/nginx/sites-enabled/default
最后验证并重启Nginx
无论采用哪种方案,都需要先验证配置语法合法性,再重启Nginx使修改生效:
# 检查配置是否有语法错误 sudo nginx -t # 重启Nginx服务 sudo systemctl restart nginx
内容的提问来源于stack exchange,提问作者Nanor
相关产品推荐
相关产品推荐

