我已将新的 SSL 证书添加到我的 nginx 服务器(我之前已多次这样做)。但是,当我重新启动 nginx 时,所有网站均无法正常运行。
当我运行 configtest 时,它显示:
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
如果 nginx 正在运行并且我运行 nginx reload,则站点和新的 ssl 证书可以正常工作。
仅当 Nginx 重新启动时,我才会收到以下内容:
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
Stopping nginx: [ OK ]
Starting nginx:
因此,启动 nginx 后什么也不会发生。也没有消息写入 nginx 错误日志。
如果我只是使用“开始”,通常它确实有效。
我该如何修复这个问题以及可能导致这个问题的原因是什么?
答案1
您如何运行重启?通过 init 脚本或使用服务,还是只是运行“nginx restart”
要调试 nginx,正确的方法是将其添加debug
到 HTTP 下的 error_log 指令末尾。请参阅http://nginx.org/en/docs/debugging_log.html
但我确信重新启动时你的 PID 文件不会被清除。
首先终止 nginx,然后通过添加以下命令在前台模式下重新启动它master_process off
或者daemon off
到你的 nginx.conf 文件。
跑步:
nginx -c /etc/nginx/nginx.conf | tee ~/nginx.log
现在在另一个终端运行:
nginx -s restart
我希望你得到很多错误。你也可以通过运行以下命令将自己附加到主 nginx 进程:strace -fqp <pid>
然后尝试看看它在做什么。(我猜这是一种万福玛利亚的方法,但是当你想确切地知道为什么东西不起作用时,为什么不获取所有的信息呢)。
答案2
最后我改变了 ssl 文件本身的编码,然后它就开始工作了。
注意:我使用 > 命令将 ssl 文件合并在一起,但无法正常工作。将各个密钥下载到我的计算机,手动将它们放在 1 个文件中,然后上传,它就开始工作了。