GoDaddy VPS(AlmaLinux8+WHM)下Node.js应用域名访问显示默认页求助
Node.js应用Nginx反向代理失效问题排查与解决
问题场景
在搭载AlmaLinux 8和WHM的GoDaddy VPS上部署Node.js应用,已完成以下操作:
- 克隆代码仓库并通过pm2启动应用,
http://myip:3000/可正常访问; - 安装Nginx,编辑配置文件
/etc/nginx/sites-available/defaultes,配置内容如下:
server { listen 80; server_name mydomain.com; location / { proxy_pass http://127.0.0.1:3000; 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; } }
- 创建软链接:
sudo ln -s /etc/nginx/sites-available/defaultes /etc/nginx/sites-enabled/; - Nginx服务处于运行状态。
但访问mydomain.com时显示Nginx默认index.html页面,仅http://mydomain:3000/可正常访问。
可能原因及解决方法
1. Nginx默认配置未禁用,优先匹配请求
Nginx默认会加载/etc/nginx/sites-enabled/default(或主配置内置的server块),其server_name通常为_,会匹配所有未被其他server块明确匹配的请求。若该默认配置仍启用,会优先于自定义配置生效。
解决步骤:
- 查看
sites-enabled目录下的启用配置:ls -l /etc/nginx/sites-enabled/ - 若存在
default软链接,将其移除:sudo unlink /etc/nginx/sites-enabled/default - 重新加载Nginx配置:
sudo systemctl reload nginx
2. Nginx配置未重新加载
修改配置文件后,必须重新加载Nginx才能让新配置生效,仅保持服务运行不会自动更新配置。
解决步骤:
- 先验证配置文件语法是否正确:
sudo nginx -t - 若语法无错误,重新加载配置:
sudo systemctl reload nginx
3. 自定义配置的server_name不匹配访问域名
如果实际访问的是www.mydomain.com,但配置中仅指定了mydomain.com,Nginx会匹配默认配置而非自定义配置。
解决步骤:
- 修改配置文件
/etc/nginx/sites-available/defaultes,将server_name改为包含所有需要匹配的域名:server_name mydomain.com www.mydomain.com; - 验证配置并重新加载Nginx:
sudo nginx -t && sudo systemctl reload nginx
4. 软链接创建错误或配置文件未被加载
检查软链接是否正确指向目标配置文件,以及Nginx主配置是否包含sites-enabled目录的加载指令。
解决步骤:
- 检查软链接状态:
确保输出显示正确指向ls -l /etc/nginx/sites-enabled/defaultes/etc/nginx/sites-available/defaultes; - 查看Nginx主配置文件(通常是
/etc/nginx/nginx.conf),确认存在以下指令:
若不存在,添加该指令后重新加载Nginx。include /etc/nginx/sites-enabled/*;
5. 80端口被WHM自带的Apache占用
WHM默认会安装Apache并占用80端口,即使Nginx显示运行,实际可能未成功监听80端口。
解决步骤:
- 检查80端口的监听进程:
sudo ss -tulpn | grep :80 - 若显示Apache进程,需调整端口配置:
- 通过WHM面板修改Apache监听端口(如改为8080);
- 重启Apache服务;
- 确认Nginx成功监听80端口后,重新加载Nginx配置。
内容的提问来源于stack exchange,提问作者Nikhil Mandaniya
相关产品推荐
相关产品推荐

