You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

NGINX listen ip:port配置未生效问题求助

排查Nginx监听127.0.0.1:8090无法外部访问的问题

先给你理清核心问题:你的第二个Nginx server块配置的listen 127.0.0.1:8090;只接受来自服务器本地的请求,而你在浏览器用http://myIP:8090/访问是从外部(你的电脑/其他设备)发起的请求,这个server根本不会响应——不是Nginx忽略了listen命令,是监听的IP范围不对。

咱们一步步来排查解决:

1. 先确认Nginx实际的监听状态

先在服务器上执行命令,查看Nginx到底绑定了哪些IP和端口:

sudo ss -tulpn | grep nginx

或者用netstat(如果系统安装了的话):

sudo netstat -tulpn | grep nginx

你会看到8090端口对应的监听IP是127.0.0.1,而不是0.0.0.0(监听所有IP)或者你的服务器公网/局域网IP,这就证明它确实只接受本地请求。

2. 修改第二个server块的监听配置

如果需要外部能直接访问8090端口,把第二个server的listen指令改成下面两种之一:

  • 监听所有可用IP的8090端口(推荐,适合不确定服务器具体IP的情况):
server {
    listen 0.0.0.0:8090;
    # 其他配置...
}
  • 或者指定服务器的具体IP(比如你的myIP):
server {
    listen 你的服务器IP:8090;
    # 其他配置...
}

3. 检查服务器防火墙规则

即使Nginx改了监听,服务器的防火墙可能没开放8090端口,导致外部请求无法到达:

  • 如果用ufw防火墙:
sudo ufw allow 8090/tcp
sudo ufw reload
  • 如果用firewalld防火墙:
sudo firewall-cmd --add-port=8090/tcp --permanent
sudo firewall-cmd --reload
  • 如果用iptables:
sudo iptables -A INPUT -p tcp --dport 8090 -j ACCEPT
sudo service iptables save

4. 验证配置并重启Nginx

修改配置后,先检查语法是否正确:

sudo nginx -t

如果输出test is successful,就重启Nginx让配置生效:

sudo systemctl restart nginx

做完这些,你再用浏览器访问http://myIP:8090/应该就能正常响应了。

内容的提问来源于stack exchange,提问作者Alex Frenkel

火山引擎 最新活动