我正在尝试使用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,现在或在不久的将来。 所以你今天应该为此做好准备。