普通HTTP请求已发送到HTTPS端口(NGINX)

时间:2015-06-22 18:14:10

标签: ssl nginx https debian cloudflare

首先,我的问题不同。

我还使用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。

3 个答案:

答案 0 :(得分:5)

您应该为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设置,两个端口都可正常工作。

答案 1 :(得分:2)

如果您在使用Google Compute Engine / Google HTTP负载均衡器时遇到此问题...请确保您的实例组设置了http:80和https:443的单独命名端口。 或者它将随机选择一个端口。

在我的情况下,由于最初设置了HTTP负载均衡器,因为它还处于测试阶段。然后,当我添加另一个负载均衡器时,它刷新了设置并开始随机失败。

它失败了50%的时间,因为我只有Nginx设置了端口80的vhost,并且它试图将HTTP请求推送到网络盒上的端口80.

答案 2 :(得分:-1)

您最有可能收到错误,因为您向SSL端口发送了未加密的HTTP请求。

这样的东西
{{1}}

这是一个客户端问题(服务器只是告诉您它拒绝回答待加密频道上的非加密邮件)