按教程部署Rails应用后,Nginx重载出现server_name冲突警告求助
解决Nginx重载时的"conflicting server name"警告
这个警告的原因很明确:你有两个Nginx server配置块,都将同一个IP地址(或者拼写相近但实际指向同一IP的名称)设为server_name,并且都在监听80端口(即使第一个配置里的listen被注释,Nginx默认也会监听80端口),导致Nginx无法确定哪个server块处理该IP的请求,所以忽略了其中一个的配置。
来看你的两个配置:
/etc/site-available/default里的server_name ip_address/etc/site-available/testapp里的server_name ipaddress
这两个server_name指向的是同一个IP(应该是拼写时的小失误,少了下划线),再加上两个配置文件可能都被启用(软链接到/etc/nginx/sites-enabled/目录),就触发了冲突警告。
具体解决步骤:
第一步:检查启用的配置文件
运行命令查看哪些配置文件被Nginx加载:ls -l /etc/nginx/sites-enabled/如果看到
default和testapp都在列表里,说明两个配置都被启用了,这就是问题根源。第二步:禁用多余的配置文件
如果你只需要运行testapp这个Rails应用,就把默认的default配置禁用:sudo unlink /etc/nginx/sites-enabled/default之后再重载Nginx:
sudo nginx -s reload警告应该就会消失了。
如果需要保留两个配置
要是你确实需要两个server块,那得确保它们的server_name不重复:- 修改其中一个配置的
server_name,比如把default里的server_name改成其他值(比如localhost或者另一个域名/IP) - 或者给其中一个server块指定不同的监听端口,比如在
default里加上listen 8080;,这样两个server块就不会在同一端口上冲突了
- 修改其中一个配置的
另外还要注意:你的default配置里rails_env production,而testapp里是passenger_app_env development,如果同时运行的话,环境不一致可能也会带来问题,建议只保留你实际需要的那个配置。
内容的提问来源于stack exchange,提问作者SethuNagaKarthik
相关产品推荐
相关产品推荐

