首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在使用新端口添加配置后,Nginx不监听具有systemctl的新端口

问在使用新端口添加配置后,Nginx不监听具有systemctl的新端口
EN

Server Fault用户
提问于 2022-01-31 22:42:44
回答 1查看 2.7K关注 0票数 0

不知道如何快速总结这个问题,所以我会将我的场景放在公报中:

  • 正常的基本nginx安装
  • 我只使用https(443),所以我删除了所有http(80) config。
  • 启动nginx (或restart it)时,进程似乎也侦听端口80 (ss -tulp)。
  • 当我在/etc/nginx/sites-enabled中添加配置时,在http(80)上添加侦听器,然后;
  • 使用systemctl reload nginx重新加载nginx (注意:重新加载,而不是重新启动)
  • 它不起作用,似乎nginx仍然没有监听端口80上的通信量。
  • 如果我运行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中的(已知的)错误。

谢谢

更新:

代码语言:javascript
复制
nginx version: nginx/1.18.0
Debian 11 (Bullseye)
EN

回答 1

Server Fault用户

发布于 2022-02-04 09:35:28

我不认为这是一个错误,我认为这是错误的,在你的结尾。我不能重现你的问题。

我使用Amazon构建了一个新的EC2实例,并安装了nginx。

注释掉http服务器、未注释的https和生成的证书:

代码语言:javascript
复制
#    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 {
        }
    }

证书:

代码语言:javascript
复制
[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是:

代码语言:javascript
复制
[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,这两者都在使用中:

代码语言:javascript
复制
[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在监听。

安装版本:

代码语言:javascript
复制
[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.4
票数 0
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/1091886

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档