出现这个问题,是不影响服务器正常使用的,但是作为程序员,看不惯有“warning”的瑕疵存在……
搜了很多帖子,发现有很多类似的情况出现,有些是在 Linux 下报这样的错,但我的是在集成环境PHPStudy_pro中启动WNMP出现了这样的提醒。
【发现问题】
在部署服务器时,需要按照本地配置进行编写nginx配置文件,
修改nginx配置参数后,使用nginx -t检查配置.
提示successfull后就可以使用 nginx -s reload来重新加载配置
配置的过程中遇到这样的问题,就是绑定了主机名后,重新加载配置时会出现警告
nginx: [warn] conflicting server name "localhost" on 0.0.0.0:80, ignored
意思是重复绑定了server name,但这个警告不会影响到服务器运行。而且,这个重复绑定的意思是现在运行的nginx服务和将要加载的新配置中的重复,所以,这个警告其实是不必的。
重启nginx时出现如下警告:
nginx: [warn] conflicting server name "localhost" on 0.0.0.0:80, ignored
【问题原因】
原因是 “localhost” 这个域名出现了两次甚至多次,把同一个域名解析到了不同的目录, 一般将配置文件单独分离出来容易出现这个错误。
就是同一个IP或端口号,绑了两三个域名的,要改!
不过这个警告不影响使用,大多数人会忽视它,无视!
在给第一个主机设定了default_server的时候,重新加载配置就会出错,
最初就是这个原因,误以为nginx不能在同一ip端口绑定多个域名。
但其实是可以的!!!(我做的在后边,同时一个IP被三个域名解析了:host 、host.ll 、test.ll)
一般的办法是杀掉nginx进程重新启动(taskkill-windows下,kill-Linux下),或者先去掉default_server设定,重新加载nginx配置后,再加上,再重新配置。
(这个方法比较麻烦,有大牛级别的方法,欢迎留言提供)
参考:https://www.shirne.com/blog/linux/nginxxunizhujipeizhibeiwang.html
【解决方法】
(一)、命令修改
Linux系统环境下,需要查询出现这个域名的文件,使用grep这个命令
grep -r localhost /*nginx的路径*/conf
找到配置文件的位置再进行配置
cd /usr/local/nginx/conf vi nginx.conf
修改之后重启即可
nginx虚拟主机配置可参考:https://blog.csdn.net/Shiloh_My/article/details/79996426
配置参数的含义可参考:https://blog.csdn.net/qq_37818095/article/details/105515177 (Nginx配置文件 nginx.conf 配置详解)
配置文件的功能注释可参考:https://blog.csdn.net/zhao8848jun/article/details/8254590 (Nginx配置文件功能注释)
(有空了,我再自己整理一个Apache的配置文件相关注释)
(二)、文件编辑
nginx有个默认的端口检测,如443,80等等,它也会报这个错,因为这端口可能被mysql或者redis或者tomcat,https之类的占了
还有127.0.0.1,0.0.0.0,localhost之类的也不要用,迟早会报错。
打开服务器的配置文件,该修改的修改,按照命名规范来操作,
避免出现冲突!
打开 vhosts 文件夹:phpstudy_pro\Extensions\Nginx1.15.11\conf\vhosts
找到 0localhost_80.conf 文件,把以前的 “server_name localhost” 注释重写或稍作修改均可:
#为避免冲突警告尽量避免使用 localhost、127.0.0.1、0.0.0.0等等之类 #server_name localhost; server_name host host.ll test.ll;
(这就是我做的,一个IP同时被三个域名解析了:host 、host.ll 、test.ll)
紧接着,最重要的一步就是:还需要配置linux / win下边的host文件
附nginx本地hosts映射 :
#域名解析IP地址 #本地IP->hosts映射 127.0.0.1 host 127.0.0.1 host.ll 127.0.0.1 test.ll
(这就是我做的,一个IP同时被三个域名解析的hosts映射:host 、host.ll 、test.ll)
Linux系统和Windows系统是一样的,文件都是hosts,路径分别是在/etc/hosts 和 C:\Windows\System32\drivers\etc\hosts(通常是被隐藏起来的文件)
参考:https://www.cnblogs.com/ydymz/p/9542912.html
OK!如此配置完毕,一切正常运行:
不在有弹出warning的弹框
测试本地host ,如果使用Google浏览器的话需要把 http 也加入地址中:http:test.ll 这是避免浏览器自动使用搜索引擎来搜索地址 test.ll ,
测试成功的结果如下(自己写的一个index.html 测试页面):
【小结】
出现这样的问题,就是命名不规范的原因,现在nginx 1.14/15 是警告/报错,以后注意规范自己的命名,不然wran迟早会变成error的。
也提醒我们开发时,要时刻规整自己的习惯,按照规范化标准来要求自己,慢慢养成好习惯,聚沙成塔、集腋成裘,但要避免积重难返!
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
凡事预则立不预则废,养成复盘总结的微小习惯:改变自己,改变世界,把握当下,把握现在,每天前进1%,享受“复利式成长”!
Anthony_GM
2022-4-8 11:57:02