Nginx未显示Rails应用,反而展示Plesk默认页面问题
解决Nginx显示Plesk默认页而非Rails应用的问题
我之前也碰到过类似的情况,Plesk自带的Nginx配置经常会和手动添加的Rails部署配置冲突,给你几个排查和解决的方向:
1. 检查Plesk的Nginx配置优先级
Plesk会自动为每个托管域名生成专属的Nginx配置文件,这些文件通常存放在/etc/nginx/plesk.conf.d/或者/var/www/vhosts/system/[你的域名]/conf/目录下。由于Plesk的配置加载优先级高于你手动在/etc/nginx/sites-available/创建的Rails应用配置,所以会优先显示Plesk的默认页面。
2. 确认Rails应用的Nginx配置是否正确启用
先检查你按照教程创建的Rails应用配置是否已经软链接到启用目录,同时验证配置语法:
# 替换成你的应用配置文件名,比如myapp.conf sudo ln -s /etc/nginx/sites-available/[你的应用配置文件] /etc/nginx/sites-enabled/ # 检查配置语法是否合法 sudo nginx -t # 重载Nginx使配置生效 sudo service nginx reload
如果nginx -t报错,根据提示修正配置文件中的语法问题。
3. 在Plesk面板中集成Rails应用的Nginx规则
直接修改Plesk的站点配置,让它适配你的Rails应用:
- 登录Plesk面板,找到你的域名对应的站点
- 进入网站与域名 -> Apache & Nginx设置
- 取消勾选「使用Apache提供静态文件」(如果你的Rails应用用Nginx处理静态资源)
- 在附加Nginx指令中添加反向代理规则(替换成你的应用实际端口,比如Unicorn/Puma运行的3000端口):
location / { proxy_pass http://localhost:3000; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; }
保存设置后,Plesk会自动更新Nginx配置,让请求转发到你的Rails应用。
4. 验证Rails应用服务状态
确保你的应用服务器(Unicorn/Puma)正在运行:
# 替换成你的应用服务名,比如puma_myapp sudo service [应用服务名] status
如果服务未启动,手动启动它:
sudo service [应用服务名] start
同时检查应用端口是否被占用:
sudo netstat -tulpn | grep :3000 # 替换成你的应用端口
5. 查看Nginx日志定位问题
通过日志可以清楚看到请求的处理流程和错误信息:
# 查看访问日志,看请求被哪个配置处理 sudo tail -f /var/log/nginx/access.log # 查看错误日志,排查代理或配置错误 sudo tail -f /var/log/nginx/error.log
内容的提问来源于stack exchange,提问作者OKMantis
相关产品推荐
相关产品推荐

