【问题标题】:The plain HTTP request was sent to HTTPS port(NGINX)普通的 HTTP 请求被发送到 HTTPS 端口(NGINX)
【发布时间】:2015-09-08 07:40:06
【问题描述】:

首先我的问题是不同的。

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

【问题讨论】:

  • 您希望所有的 HTTP 请求都通过您的 SSL 服务器吗?或者有两个单独的域,即 example.orgexample.org
  • 在你写给你这个错误的问题中。你在说什么错误?如果你也可以添加你的错误,事情会更好理解。
  • @ObscureGeek The plain HTTP request was sent to HTTPS port
  • @ajtrichards 我真的想要两者兼得。有和没有 SSL。在某些文件上我不想要 SSL,所以我希望连接是 HTTP,即端口 80,但在某些文件上我希望连接是 SSL。端口 80 没有错误并且工作正常,但是 443 给了我这个错误The plain HTTP request was sent to HTTPS port
  • @nix 尝试我刚刚发布的答案中的设置。我想它会解决你的问题。

标签: ssl nginx https debian cloudflare


【解决方案1】:

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

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

50% 的时间都失败了,因为我只设置了 Nginx 并为端口 80 设置了一个虚拟主机,并且它试图将 HTTP 请求推送到网络盒上的端口 80。

【讨论】:

    【解决方案2】:

    您得到的错误很可能是因为您向 SSL 端口发送了未加密的 HTTP 请求。

    类似

    wget http://example.com:443/
    

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

    【讨论】:

      【解决方案3】:

      您应该编写两个服务器块,一个用于 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 设置,两个端口都可以正常工作。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-07-28
        • 2020-02-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-03-05
        • 2021-11-09
        • 2017-02-01
        相关资源
        最近更新 更多