- ```html
访问网站出现nginx怎么解决?访问 访问网站出现nginx怎么解决?
你正点开一个链接,期待看到内容,网站结果屏幕上只有一行冷冰冰的出现
Welcome to nginx!或者一个默认的 nginx 测试页。这感觉就像敲了门,解决门开了,访问但里面站着一个不认识的网站保安,告诉你“这儿没你要找的出现人”。这种情况太常见了。解决nginx 本身只是访问个 Web 服务器软件,它不会无缘无故跑出来跟你打招呼。网站你看到它,出现说明请求到达了服务器,解决但 nginx 没把请求转给正确的访问网站程序,也没有配置好对应的网站站点。说白了,出现nginx 在告诉你:“我收到了,但我不知道你要找谁。”
先别急着重装系统或者怀疑服务器炸了。按下面几个方向排查,九成问题都能自己搞定。
1. 检查域名解析是否指对了服务器
有时候你访问的是
example.com,但 DNS 解析到的 IP 根本不是你放网站的那台机器。尤其是刚迁移服务器或者换了 CDN 之后,本地 DNS 缓存没刷新,浏览器还傻乎乎地连旧 IP。那个旧 IP 上可能正好跑着一个默认 nginx 站点。打开终端,
ping example.com或者nslookup example.com,看看返回的 IP 跟你服务器实际公网 IP 是否一致。不一致就先去域名商那里改解析,或者等 TTL 过期。我见过有人折腾一晚上,最后发现是 DNS 没生效,气得想砸键盘。2. 服务器上 nginx 的配置文件里有没有这个站点?
nginx 默认安装后,通常会带一个
default站点,配置文件在/etc/nginx/sites-enabled/default或者/etc/nginx/conf.d/default.conf。这个默认站点会监听 80 端口,返回那个欢迎页。如果你自己新建了站点,但没把默认站点删掉或者没设置好server_name,nginx 就会按顺序匹配,很可能先撞上默认站点。解决办法:找到你的站点配置文件,确认
server_name写了你的域名。然后删掉或禁用默认站点。比如在 Debian/Ubuntu 上:sudo rm /etc/nginx/sites-enabled/default然后
sudo nginx -t测试配置,再sudo systemctl reload nginx。别直接 restart,reload 更平滑。个人踩坑记录: 有一次我帮朋友看服务器,他网站一访问就是 nginx 欢迎页。我登上去一看,配置文件里root指向了/var/www/html,但那个目录里只有一个index.nginx-debian.html。他以为把网站文件扔进/var/www/html就行,结果扔错了目录,真正的项目在/home/user/myapp。改一下root路径,问题消失。所以别光看 nginx 配置,也看看网站文件到底在哪儿。3. 网站程序没启动,或者端口不对
如果你用 nginx 做反向代理,比如把请求转发给本地的 Node.js、Python 或 PHP-FPM,那 nginx 本身只是个“传话的”。传话对象没在监听,或者监听端口跟 nginx 配置里写的不一样,nginx 就会返回 502 Bad Gateway,但有时也会因为默认站点而显示欢迎页。
检查一下你的应用是否在跑:
ps aux | grep node或者systemctl status 你的服务名。再看 nginx 配置里的proxy_pass地址,比如http://127.0.0.1:3000,确认应用真的在 3000 端口。我遇到过应用启动后监听的是localhost:3000,但 nginx 里写的是127.0.0.1:3000,理论上一样,可偏偏应用只绑了 IPv6 的::1,结果 nginx 连不上。改成http://[::1]:3000才通。4. 浏览器缓存或者 CDN 缓存
前面都查了没问题,但你自己电脑上还是看到 nginx 欢迎页?试试无痕窗口,或者
curl -I http://你的域名看看返回头。如果 curl 返回的是你正常的网站,那说明浏览器缓存了之前的错误页面。强制刷新(Ctrl+Shift+R)或者清一下缓存。如果用了 Cloudflare 之类的 CDN,CDN 可能缓存了默认页。去 CDN 后台清一下缓存,或者把开发模式打开。别小看这个,我见过有人排查半天服务器,最后发现是 CDN 缓存没刷新,气得直拍桌子。
5. 实在不行,看日志
nginx 的日志会告诉你真相。错误日志一般在
/var/log/nginx/error.log,访问日志在/var/log/nginx/access.log。用tail -f实时盯着,然后刷新浏览器。如果日志里出现no such file or directory或者connection refused,你就知道往哪个方向修了。举个例子,日志里写
open() "/usr/share/nginx/html/index.html" failed (2: No such file or directory),那说明 nginx 在找默认目录下的文件,但你的网站文件不在那儿。要么把文件放过去,要么改root路径。说到底,nginx 跳出来不是坏事,它至少证明服务器活着、网络通着。剩下的就是配置问题。别把它当黑盒,打开配置文件看一眼,比瞎猜快得多。
``` 顶: 149踩: 628






评论专区