Node.js应用(PM2+Nginx部署)可通过IP访问但域名无法访问求助
我之前也碰到过一模一样的情况——用服务器IP能正常访问,域名却打不开,ping域名还能得到正确的IP,大概率是这几个环节出了问题,咱们一步步排查:
先检查Nginx的完整配置,别漏了关键的server块
你只贴了location部分的配置,可能server块没设置对。完整的server配置得明确绑定你的域名和监听80端口,参考下面的写法:server { listen 80; server_name your-domain.com; # 这里一定要换成你的实际域名 location / { proxy_pass "http://127.0.0.1:8000"; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection 'upgrade'; proxy_set_header Host $host; proxy_cache_bypass $http_upgrade; } }改完配置后记得重启Nginx生效:
sudo systemctl restart nginx确认域名DNS解析是否完全同步
Ping能拿到正确IP不代表所有地区的DNS都更新了,尤其是刚修改的解析记录。可以用nslookup your-domain.com或者dig your-domain.com多查几次,看看是不是所有返回的IP都是你的服务器IP。另外,浏览器可能缓存了旧的DNS记录,试试用无痕模式访问,或者清除浏览器缓存后再试。检查服务器的防火墙/安全组规则
虽然IP能访问,但有些云服务商的安全组默认可能没开放80端口的入站权限(或者你之前只给了IP的访问规则?)。去你的云控制台看看安全组配置,确保80端口(HTTP)允许所有IP地址访问。查看Nginx错误日志找线索
直接看Nginx的错误日志能快速定位问题,日志一般在/var/log/nginx/error.log。用命令实时查看:sudo tail -f /var/log/nginx/error.log,然后用域名访问网站,看看有没有报错信息——比如域名不匹配、权限不足这类问题都会在这里体现。确认Node应用确实在正常监听8000端口
用netstat -tulpn | grep 8000或者ss -tulpn | grep 8000检查8000端口是不是被你的Node进程占用,确保PM2管理的应用没有挂掉,状态正常。
内容的提问来源于stack exchange,提问作者Abdullah Al Mohammad

