我使用Nginx和certbot在Ubuntu服务器上设置https失败,并显示ERR_ADDRESS_UNREACHABLE

ygya80vv  于 2023-02-21  发布在  Nginx
关注(0)|答案(2)|浏览(632)

我的目标是让Nginx在使用https时返回它的示例欢迎页面。
我使用certbot通过以下命令创建证书:certbot --nginx -d api.example.com
在我的/etc/nginx/conf.d/nginx-example-server.conf中,我有以下代码块:

server {
       listen      443 ssl;
       server_name api.example.com
       ssl_certificate     /etc/letsencrypt/live/api.example.com/cert.pem;
       ssl_certificate_key /etc/letsencrypt/live/api.example.com/privkey.pem;
       include /etc/letsencrypt/options-ssl-nginx.conf;
}

include /etc/letsencrypt/options-ssl-nginx.conf;包括以下各项:

ssl_session_cache shared:le_nginx_SSL:1m;
ssl_session_timeout 1440m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
ssl_ciphers: "<Lots of cyphers>"

ufw status verbose返回:

Status: active
Logging: on (low)
Default: deny (incoming), allow (outgoing), disabled (routed)
New profiles: skip

To                         Action      From
--                         ------      ----
443/tcp                    ALLOW IN    Anywhere                   # Open all to access Nginx port 443
80/tcp                     ALLOW IN    Anywhere                   # Open access Nginx port 80
22/tcp                     ALLOW IN    Anywhere                   # Open access OpenSSH port 22
8000                       DENY IN     Anywhere                  
443/tcp (v6)               ALLOW IN    Anywhere (v6)              # Open all to access Nginx port 443
80/tcp (v6)                ALLOW IN    Anywhere (v6)              # Open access Nginx port 80
22/tcp (v6)                ALLOW IN    Anywhere (v6)              # Open access OpenSSH port 22
8000 (v6)                  DENY IN     Anywhere (v6)

如果我访问https://api.example.com(当然不是真实的的url),它的响应是ERR_ADDRESS_UNREACHABLE
/var/log/nginx/access.log/var/log/nginx/error.log都不记录与ERR_ADDRESS_UNREACHABLE有关的任何内容。
我试图找到我的ufw日志文件,但没有任何。我试图找到他们在这里描述:https://serverfault.com/a/516840
我已经找遍了所有的提示,并遵循了一些教程。所有的结果都是相同的响应。我可以成功地通过http到达Nginx欢迎页面。
帮助是非常受欢迎的!即使它只是一个更好的方法来调试这个东西。

1qczuiv0

1qczuiv01#

这修复了它:sudo iptables -I INPUT -p tcp --dport 443 -j ACCEPT
如下所示:https://stackoverflow.com/a/50373181/6565435

snz8szmq

snz8szmq2#

死灵在这里。
如果有人有同样的问题,试着检查你的ip route。也许一些接口“覆盖”了必要的ip地址。例如,它可能是一些docker-compose桥(接口的名称将像“br-...”)。
要检查是否如此,您可以执行以下步骤:

  1. systemctl disable docker-禁用Docker服务自动启动。
    1.重新启动
    1.再次检查ip route。如果一些桥现在没有出现,它们与docker服务绑定。为什么?有时候当你使用docker-compose时会发生这种情况:它创建了许多虚拟网络接口。

相关问题