大家好,今天来介绍nginx启动失败是什么原因(nginx 无法启动)的问题,以下是渲大师小编对此问题的归纳和整理,感兴趣的来一起看看吧!
求教NGINX启动不了
nginx启动不了一般有以下原因:
1.监听的端口冲突,一般是有程序已经监听了80端口,需要关闭正在监听80端口的程序,或让nginx监听其他端口
2.配置文件错误,配置文件存在语法错误会导致启动报错,需要根据文档正确的对配置文件枝雹进行改正
3.配置文件使用记事本编辑过,导致保存为带BOM头的utf-8文件,报错中可以看到乱码,需要使用其他猛拿帆编辑器将文件敏肢编码改为无BOM头的utf-8类型
nginx 不能启动问题
当启动nginx的时候,发现启动不起来,尤其是兆蔽念修改过配置文件之后,那么八成就是配置文件出问题了;
比如上图;
这时候我们可以运并宴行一下命令:
journalctl -xe
看一下出什么问题了;
像我这个就是配置文件改错了,然后根据个人配族困置的nginx错误修改就好了。
<h3 id="nginx启动错误: [emerg] host not found in upstream """>nginx启动错误: [emerg] host not found in upstream ""
在nginx的错误日志里面:
就是说不可达,袭蔽卖解析不了;但我们实际上能ping通这个地址,说明地址是拍逗有效的。
nginx的配置例子:
Google了一下,看到这么个解释:
原文: https://stackoverflow.com/questions/17685674/nginx-proxy-pass-with-remote-addr
这正好是我的场景。
我们根据路径的serviceID路由到一个真正的swarm service上面去,这里正好使用了变量$1,表示service ID。举例来说,就是把nginx的请求:http://:/service/service1/api/v1/hello地址转发到swarm service: http://service1:8080/api/v1/hello
nginx启动的时候需要去解析upstream的DNS,如果解析失败就无法启动(这可能是nginx预留的问题)。
怎么办呢,最简单的办法是把机器名换成IP地址,这样虽然可以绕开问题,但是一般不会用IP地址吧,都是用的机器名域名。
如果proxy_pass的URL里面包含变量,那么nginx就使用内置并唤的resolver,而这个内置的resolver无法解析docker swarm service的地址。
使用resolver指令,让它指向docker swarm的内置DNS地址,这样就可以解析swarm service的地址了。
127.0.0.11是docker swarm的内资DNS server,可以用来解析swarm service地址。
另外一般建议使用valid=30s,因为resolver缺省的刷新时间是5分钟,那是对普通静态DNS的,而对于docker swarm这种类型服务,由于swarm可能会不确定的重启,为降低service down的时间,可以把valid值缩短:
求教NGINX启动不了
nginx启动不了一般有以下原因:
1.监听的端口冲突,一般是有程序已经监听了80端口,需要关闭正在监听80端口的程序,或让nginx监听其他端口
2.配置文件错误,配置文件存在语法错误会导致启动报错,需要根据文档正确的对配置文件枝雹进行改正
3.配置文件使用记事本编辑过,导致保存为带BOM头的utf-8文件,报错中可以看到乱码,需要使用其他猛拿帆编辑器将文件敏肢编码改为无BOM头的utf-8类型
nginx打开网站失败
大概率就是nginx的用户权限与配置文件的用户不是一个,导致权笑差限不足,你可以去配置文件看一下 user group 用户与nginx的用户是不是碰丛皮一郑简致,不一致就改成一致,重启一下就可以了。
本文地址:https://gpu.xuandashi.com/72427.html,转载请说明来源于:渲大师
声明:本站部分内容来自网络,如无特殊说明或标注,均为本站原创发布。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。分享目的仅供大家学习与参考,不代表本站立场!