Har*_*ikk 51 ssl nginx certificates
所以我正在设置一个启用了 SSL 的 nginx 服务器,服务器定义类似于:
server {
listen :80;
listen [::]:80;
server_name example.org;
root /foo/bar;
ssl on;
ssl_certificate /path/to/public/certificate;
ssl_certificate_key /path/to/private/key;
...
}
Run Code Online (Sandbox Code Playgroud)
你明白了(请原谅任何错别字)。
无论如何,我想知道的是;如果我更新我的证书,有没有办法安装它们而不必重新启动 nginx?
例如,如果我要使用来自/path/to/public/certificate和 的符号链接/path/to/private/key,指向我当前的证书,nginx如果我只是将它们更改为指向新的(更新的)证书,我是否还需要重新启动?有替代品吗?
rub*_*ils 41
您需要重新加载Nginx 才能使更新的证书显示正确的到期日期(请阅读下面的说明和其他注释,以了解重新加载和重新启动Nginx之间的区别)。
重新加载 Nginx 后,简单的缓存清除和浏览应该允许您查看 SSL 证书上更新的到期日期。
或者,如果您更喜欢 cli,则始终可以使用旧的可信赖的 OpenSSL 命令:
echo | openssl s_client -connect your.domain.com:443 | openssl x509 -noout -dates
Run Code Online (Sandbox Code Playgroud)
这将为您提供证书上的当前日期。
在您的情况下,端口将是 80 而不是 443(OP 后来表示问题中的端口 80 实际上应该是 443,但是 Nginx 将在您提供的任何端口上侦听 HTTP 或 HTTPS,只要它们当前未被其他进程使用)。
很多时候nginx -s reload没有按预期工作。在许多系统(Debian 等)上,您需要使用/etc/init.d/nginx reload.
编辑以更新和澄清此答案:
在带有 的现代系统上systemd,您还可以运行systemctl reload nginx或service nginx reload。
所有这些reload方法的不同之处restart在于它们发送一个SIGHUP信号告诉 Nginx 重新加载其配置而不终止现有连接(这会在完全重启时发生,并且几乎肯定会影响用户)。
如果由于某种原因,Nginx 没有重新加载您的证书,您可以重新加载restart,但请注意,它比reload.
要重新启动Nginx,您只需运行systemctl restart nginx,或者在没有 的系统上systemd,您将执行nginx -s stop && nginx -s start.
如果所有其他方法都失败(无论出于何种原因),只需终止 Nginx PID,并且您始终可以通过直接使用nginx -c /path/to/nginx.conf.
san*_*mai 30
收到SIGHUPnginx 后,将重新加载更新的配置,在打开日志文件和读取 SSL 证书时对其进行验证,然后根据先前的配置正常关闭工作进程。
如果 nginx 无法读取某些 SSL 证书,我将继续使用旧配置运行。否则,无论您对配置文件做了什么,它都会继续运行并处理请求。即使它们坏了,您的网站仍会打开。
所以是的,如果您希望 nginx 看到更新的证书,您不必重新启动 nginx 并冒着使服务器脱机超过几秒钟的风险。应该足以:
sudo service nginx reload
Run Code Online (Sandbox Code Playgroud)
在大多数默认使用 systemd 的当前发行版中,您还可以使用以下命令重新加载 nginx:
sudo systemctl reload nginx
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
51153 次 |
| 最近记录: |