首先我的问题是不同的。
我使用了 listen 443 default ssl;
也使用了 listen 443 ssl;
并注释掉了 #
但似乎没有任何效果。端口 80 工作正常,但在端口 443 上出现此错误。
目前这是 nginx 的默认文件。
server {
listen 80;
listen 443 ssl;
#listen 443 default ssl;
server_name .******.org;
keepalive_timeout 70;
#ssl on;
ssl_certificate /etc/ssl/private/lol/www.*******.crt;
ssl_certificate_key /etc/ssl/private/lol/www.********.key;
ssl_protocols SSLv3 TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers RC4:HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
在 ssl_protocols
上,我也尝试只使用 SSLv3 TLSv1
但它是一样的。我的 nginx 版本是 1.2.1。
即使在这里,我也浏览过许多在线网站,但我认为我的问题并没有用不同极客提到的任何这些方法来解决。
所以我终于来了。 有什么建议么?
P.S:我正在使用 cloudflare,但我已经关闭了 Universal SSL,因为我想使用其他 ssl。
最佳答案
您应该编写两个服务器 block ,一个用于 http,一个用于 https,例如:
server {
listen 80 default_server;
listen [::]:80 default_server;
root /var/www/public/;
index index.html;
#other settings
}
server {
listen 443;
server_name localhost;
root /var/www/public/test/;
index index.html;
ssl on;
ssl_certificate /etc/nginx/certs/wss.pem;
ssl_certificate_key /etc/nginx/certs/wss.pem;
#other settings
}
我已经尝试使用 default
nginx 设置,两个端口都工作正常。
关于ssl - 纯 HTTP 请求被发送到 HTTPS 端口 (NGINX),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30986980/