不知道如何快速总结这个问题,所以我会将我的场景放在公报中:
restart it)时,进程似乎也侦听端口80 (ss -tulp)。/etc/nginx/sites-enabled中添加配置时,在http(80)上添加侦听器,然后;systemctl reload nginx重新加载nginx (注意:重新加载,而不是重新启动)systemctl restart nginx,它确实会工作。我注意到了这一点,因为LetsEncrypt不能更新我的证书。在调查这个问题之后,我注意到了上面描述的行为。
因为我没有在http( 80 )上监听nginx配置,所以我认为nginx只是在启动nginx时没有添加任何侦听器或其他东西(尽管nginx声称端口80)。
如果Certbot随后尝试更新我的证书,它将向nginx配置目录添加一个临时的http(80)配置,然后可能是nginx的“重新加载”,而不是重新启动(这是预期的,也是应该的)。
但是,由于nginx是在没有http(80) config的情况下启动的,所以它没有处理从LetsEncrypt到临时挑战配置的通信量。
我的解决方案非常简单,只使用一个return 404;向nginx添加一个基本的http(80)配置块,然后重新启动nginx。在那之后,Certbot工作得很好,可以续签我所有的证书。
我想知道这是否是预期的行为,还是Nginx中的(已知的)错误。
谢谢
更新:
nginx version: nginx/1.18.0
Debian 11 (Bullseye)发布于 2022-02-04 09:35:28
我不认为这是一个错误,我认为这是错误的,在你的结尾。我不能重现你的问题。
我使用Amazon构建了一个新的EC2实例,并安装了nginx。
注释掉http服务器、未注释的https和生成的证书:
# server {
# listen 80;
# listen [::]:80;
# server_name _;
# root /usr/share/nginx/html;
#
# # Load configuration files for the default server block.
# include /etc/nginx/default.d/*.conf;
#
# error_page 404 /404.html;
# location = /404.html {
# }
#
# error_page 500 502 503 504 /50x.html;
# location = /50x.html {
# }
# }
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name _;
root /usr/share/nginx/html;
ssl_certificate "/etc/pki/nginx/cert.pem";
ssl_certificate_key "/etc/pki/nginx/key.pem";
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 10m;
# ssl_ciphers PROFILE=SYSTEM;
# ssl_prefer_server_ciphers on;
# Load configuration files for the default server block.
include /etc/nginx/default.d/*.conf;
error_page 404 /404.html;
location = /40x.html {
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
}证书:
[root@ip-10-0-0-110 nginx]# ls -l /etc/pki/nginx/
total 8
-rw-r--r-- 1 nginx nginx 2155 Feb 4 09:28 cert.pem
-rw-r--r-- 1 nginx nginx 3272 Feb 4 09:28 key.pem启动服务器,端口80没有使用,但443是:
[root@ip-10-0-0-110 nginx]# ss -plunt | grep ':80'
[root@ip-10-0-0-110 nginx]# ss -plunt | grep ':443'
tcp LISTEN 0 511 0.0.0.0:443 0.0.0.0:* users:(("nginx",pid=32264,fd=6),("nginx",pid=32262,fd=6),("nginx",pid=32205,fd=6))
tcp LISTEN 0 511 [::]:443 [::]:* users:(("nginx",pid=32264,fd=7),("nginx",pid=32262,fd=7),("nginx",pid=32205,fd=7))取消注释HTTP并执行systemctl reload nginx,这两者都在使用中:
[root@ip-10-0-0-110 nginx]# vim /etc/nginx/nginx.conf
[root@ip-10-0-0-110 nginx]# systemctl reload nginx
[root@ip-10-0-0-110 nginx]# ss -plunt | grep ':443'
tcp LISTEN 0 511 0.0.0.0:443 0.0.0.0:* users:(("nginx",pid=32288,fd=6),("nginx",pid=32287,fd=6),("nginx",pid=32205,fd=6))
tcp LISTEN 0 511 [::]:443 [::]:* users:(("nginx",pid=32288,fd=7),("nginx",pid=32287,fd=7),("nginx",pid=32205,fd=7))
[root@ip-10-0-0-110 nginx]# ss -plunt | grep ':80'
tcp LISTEN 0 511 0.0.0.0:80 0.0.0.0:* users:(("nginx",pid=32288,fd=13),("nginx",pid=32287,fd=13),("nginx",pid=32205,fd=13))
tcp LISTEN 0 511 [::]:80 [::]:* users:(("nginx",pid=32288,fd=14),("nginx",pid=32287,fd=14),("nginx",pid=32205,fd=14))
[root@ip-10-0-0-110 nginx]#注释掉,然后再重新加载,只有443在监听。
安装版本:
[root@ip-10-0-0-110 nginx]# yum list nginx
Loaded plugins: extras_suggestions, langpacks, priorities, update-motd
Installed Packages
nginx.x86_64 1:1.20.0-2.amzn2.0.4https://serverfault.com/questions/1091886
复制相似问题