Nginx 不在 HTTPS 中 运行

Nginx is not running in the HTTPS

我在 Amazon Linux 机器上安装了 Nginx 并使用配置文件:

http {
        
        upstream allbackend {
            #round robin private IP 
            server 172.31.xx.xxx:8080;
            server 172.31.xx.xx:8080;
        }
        
        server {
              listen 80;
              listen 443 ssl http2;
    
              ssl_certificate /etc/letsencrypt/live/xxx.ddns.net/fullchain.pem;
              ssl_certificate_key /etc/letsencrypt/live/xxx.ddns.net/privkey.pem;
    
              ssl_protocols TLSv1.3;
    
              location / {
                  proxy_pass http://allbackend/;
              }
         }
    
    }
    
    events { } 

但是,站点 xxx.ddns.net 只能在 HTTP 中使用,不能在 HTTPS 中使用。安全组已定义:

cURL returns 对我来说:

curl https://xxx.ddns.net/
curl: (35) OpenSSL SSL_connect: SSL_ERROR_SYSCALL in connection to xxx.ddns.net:443

这里有什么问题?

您需要一个 server-block 用于端口 80 (HTTP) 和一个用于端口 443 (HTTPS)。端口 80 的 server-block 只是重定向到端口 443 的 server-block。整个配置看起来像这样:

server {
      listen 80;
      server_name xxx.ddns.net www.xxx.ddns.net;
      return 301 https://xxx.ddns.net$request_uri;
}

server {
      listen 443 ssl http2;
      server_name xxx.ddns.net www.xxx.ddns.net;

      ssl on;
      ssl_certificate /etc/letsencrypt/live/xxx.ddns.net/fullchain.pem;
      ssl_certificate_key /etc/letsencrypt/live/xxx.ddns.net/privkey.pem;

      ssl_protocols TLSv1.3;

      location / {
          proxy_pass http://allbackend:port;
      }
 }

希望这有助于解决您的问题:)