访问服务器 IP 时未显示 Nginx 默认的 “Welcome to nginx!” 页面,可能是 Nginx 未正常启动、端口被占用、配置错误或防火墙拦截等原因导致。以下是逐步排查步骤:
一、确认 Nginx 是否正常运行
首先检查 Nginx 进程是否启动,避免“安装成功但服务未运行”的情况。
- 查看 Nginx 进程bash
ps -ef | grep nginx- 正常情况下会显示
master process(主进程)和worker process(工作进程),例如:root 1234 1 0 10:00 ? 00:00:00 nginx: master process /opt/nginx/sbin/nginx nobody 1235 1234 0 10:00 ? 00:00:00 nginx: worker process - 若没有进程,说明 Nginx 未启动,执行启动命令:
- 源码安装(
/opt/nginx):sudo /opt/nginx/sbin/nginx - 包管理器安装:
sudo systemctl start nginx
- 源码安装(
- 正常情况下会显示
二、检查 Nginx 监听端口是否正确
Nginx 默认监听 80 端口(HTTP),若端口被占用或配置了其他端口,会导致无法访问。
查看 Nginx 监听的端口
检查配置文件中listen指令(默认在nginx.conf或虚拟主机配置中):- 源码安装:
cat /opt/nginx/conf/nginx.conf | grep "listen " - 包管理器安装(Ubuntu):
cat /etc/nginx/nginx.conf /etc/nginx/sites-enabled/* | grep "listen "
正常应显示
listen 80;(或其他自定义端口,如 8080)。- 源码安装:
确认端口是否被占用
若端口被其他程序(如 Apache、PHP-FPM)占用,Nginx 可能启动失败或无法监听该端口:bash# 查看 80 端口占用情况(替换为实际监听的端口) sudo netstat -tulpn | grep 80- 若显示其他进程占用(如
apache2),需停止该进程或修改 Nginx 监听端口(在配置文件中改listen 8080;,再重载配置)。
- 若显示其他进程占用(如
三、检查防火墙是否拦截端口
即使 Nginx 正常运行,防火墙若未开放监听端口(如 80),外部也无法访问。
查看防火墙规则
Ubuntu/Debian(ufw):
bashsudo ufw status若状态为
active,需确认80/tcp或Nginx Full规则已允许:bash# 若未允许,添加规则 sudo ufw allow 80/tcp sudo ufw reloadCentOS/RHEL(firewalld):
bashsudo firewall-cmd --list-all若
services中无http(对应 80 端口),添加规则:bashsudo firewall-cmd --permanent --add-service=http sudo firewall-cmd --reload临时关闭防火墙测试(快速验证是否为防火墙问题):
bash# Ubuntu: sudo ufw disable # CentOS: sudo systemctl stop firewalld若关闭后可访问,说明是防火墙规则问题,重新配置允许端口即可。
四、检查 Nginx 配置是否正确
配置文件错误(如路径错误、语法错误)可能导致 Nginx 启动成功但无法加载默认页面。
检查配置文件语法
bash# 源码安装: /opt/nginx/sbin/nginx -t # 包管理器安装: sudo nginx -t- 若显示
nginx: configuration file ... test failed,根据提示修改错误(如缺少分号、路径不存在)。
- 若显示
确认默认页面路径是否正确
Nginx 默认页面(index.html)的路径由配置文件中的root指令指定:- 源码安装默认路径:
/opt/nginx/html/index.html - 包管理器安装(Ubuntu):
/usr/share/nginx/html/index.html
检查该文件是否存在:
bash# 替换为实际路径 ls /opt/nginx/html/index.html- 若文件不存在,手动创建一个测试页面:bash
echo "<h1>Welcome to nginx!</h1>" | sudo tee /opt/nginx/html/index.html
- 源码安装默认路径:
检查虚拟主机配置冲突
若配置了多个server块,可能存在监听端口或server_name冲突,导致默认页面被覆盖。- 确保默认
server块(通常server_name localhost)的root路径正确,且无更高优先级的server块抢占请求。
- 确保默认
五、通过日志定位错误
Nginx 错误日志会记录访问失败的具体原因(如权限不足、文件不存在)。
查看错误日志
- 源码安装:
cat /opt/nginx/logs/error.log - 包管理器安装:
cat /var/log/nginx/error.log
常见错误及解决:
Permission denied:Nginx 运行用户(如nobody)无权限访问root目录或index.html,执行sudo chmod -R 755 /opt/nginx/html并确保用户有读取权限。No such file or directory:root路径或index.html不存在,检查路径是否正确。
- 源码安装:
六、其他测试方法
本地 curl 测试
在服务器本地执行curl http://localhost或curl http://127.0.0.1:80(替换为实际端口),若能返回页面内容,说明 Nginx 本身正常,问题可能在防火墙或网络层面(如服务器公网 IP 未绑定、端口映射错误)。更换浏览器或清除缓存
浏览器缓存可能导致旧页面残留,尝试用隐私模式访问或清除缓存后重试。
总结
按优先级排查:
- 确认 Nginx 进程正常运行 → 2. 检查监听端口是否被占用/防火墙是否开放 → 3. 验证配置文件语法和默认页面路径 → 4. 查看错误日志定位具体原因。
多数情况是防火墙未开放端口、Nginx 未启动或配置文件路径错误,逐步排查即可解决。