无法连接到 Ubuntu 上的 HTTPS 端口

无法连接到 Ubuntu 上的 HTTPS 端口

我已经安装了新的 SSL 证书并设置了 Nginx 来使用它。但是尝试在网站上访问 HTTPS 时请求超时。当我通过端口 80 远程登录到我的域时,它会连接,但在端口 443 上超时。我不确定 Ubuntu 上是否有一些默认设置阻止了连接。cURL 也会超时到 HTTPS 地址,但会响应常规 HTTP。

UFW 状态显示:

443  ALLOW    Anywhere

netstat -a 显示:

tcp        0      0 *:https                 *:*                     LISTEN  

nmap localhost 显示:

443/tcp  open  https

Nginx 配置中的相关块是:

server {
    listen 443;
    listen [::]:80 ipv6only=on;
    listen 80;
    root /path/to/app;
    server_name mydomain.com

    ssl on;
    ssl_certificate /etc/nginx/ssl/ssl-bundle.crt;
    ssl_certificate_key /etc/nginx/ssl/server.key;

    location / {
      proxy_pass http://mydomain.com;
      proxy_set_header Host $host;
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

编辑:尝试了一系列 nginx 配置选项后,我真的怀疑这是设置问题。如果 ssl-bundle.crt 搞砸了,是否会导致超时?如果是这样,我可以恢复到 PositiveSSL 寻求支持。

答案1

尝试这个:

server {
    listen 443 ssl;
    listen [::]:80 ipv6only=on;
    listen 80;
    root /path/to/app;
    server_name mydomain.com

    ssl_certificate /etc/nginx/ssl/ssl-bundle.crt;
    ssl_certificate_key /etc/nginx/ssl/server.key;

    location / {
      proxy_pass http://mydomain.com;
      proxy_set_header Host $host;
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

(移除ssl on;,添加ssllisten 443;

答案2

我同意 Steffen 的评论(在同一个服务器块中监听 443 和监听 80)。

请在不同的服务器块中处理 HTTP 和 HTTPS。我假设第二个 listen 指令已覆盖您的第一个 listen 指令。此外,我错过了您用于端口 443 的 listen-directives 中的“ssl”关键字。

server {
    listen 80;
    listen [::]:80 ipv6only=on;
    root /path/to/app;
    server_name mydomain.com

    location / {
      proxy_pass http://mydomain.com;
      proxy_set_header Host $host;
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

server {
    listen 443 ssl;
    listen [::]:443 ssl ipv6only=on;
    root /path/to/app;
    server_name mydomain.com

    ssl on;
    ssl_certificate /etc/nginx/ssl/ssl-bundle.crt;
    ssl_certificate_key /etc/nginx/ssl/server.key;

    location / {
      proxy_pass http://mydomain.com;
      proxy_set_header Host $host;
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

正如用户 xofer 所报告的那样,可以在一个服务器块中同时使用 HTTP 和 HTTPS。以下是此一体化解决方案的一个示例:

server {
    listen 80;
    listen [::]:80 ipv6only=on;
    listen 443 ssl;
    listen [::]:443 ssl ipv6only=on;
    root /path/to/app;
    server_name mydomain.com

    ssl on;
    ssl_certificate /etc/nginx/ssl/ssl-bundle.crt;
    ssl_certificate_key /etc/nginx/ssl/server.key;

    location / {
      proxy_pass http://mydomain.com;
      proxy_set_header Host $host;
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

答案3

这个问题不是 Nginx 的问题,也不是任何人都能解决的问题,所以我会把它留在这里,以防将来有人遇到这个问题。

问题是,由于我使用的是免费计划,所以 Cloudflare 上的 443 端口已关闭。免费计划不支持 SSL。

相关内容