本地主机上的Nginx SSL

我正在尝试使用Nginx在本地主机上configurationSSL。 我创build了一个自签名证书,我的Nginxconfiguration如下:

server { listen 443 ssl; server_name localhost; root /usr/share/nginx/html; index index.html index.htm; ssl on; ssl_certificate /etc/nginx/ssl/nginx.crt; ssl_certificate_key /etc/nginx/ssl/nginx.key; ssl_session_timeout 5m; ssl_protocols SSLv3 TLSv1 TLSv1.1 TLSv1.2; ssl_ciphers "HIGH:!aNULL:!MD5 or HIGH:!aNULL:!MD5:!3DES"; ssl_prefer_server_ciphers on; location / { try_files $uri $uri/ =404; } } 

但是,当我尝试访问它给我下面的错误

 $ curl -i https://localhost curl: (7) Failed to connect to localhost port 443: Connection refused 

什么可能是这个错误的可能原因?

这是命令'netstat -tuplen'的输出

 tcp 0 0 0.0.0.0:443 0.0.0.0:* LISTEN 0 71662 - 

你错过了一个listen指令:

 listen [::]:443 ssl; 

这告诉nginx监听IPv6连接。 您现有的listen指令只能侦听IPv4连接,并在netstat输出中显示。

除了现有的listen指令之外,还需要这样做的原因是,除了历史IPv4地址127.0.0.1以外, localhostparsing为IPv6地址::1 。 但是,IPv6是进行连接的首选协议。 因此curl试图通过IPv6连接到nginx并失败。

当然,在全球互联网上,你(可能)最终将把你的网站,你也将不得不使用IPv6,现在或在不久的将来。 所以你今天应该为此做好准备。