http到https重定向失败

时间:2016-11-23 11:38:31

标签: nginx

我似乎无法让http重定向工作。 知道为什么吗? 我总是得到

400 Bad Request
The plain HTTP request was sent to HTTPS port

我试过这些服务器块:

server {
  listen         80;
  server_name    server.com;
  rewrite        ^(.*) https://$host$1 permanent;
}

server {
  listen 80 ;
  server_name server.com;
  return 301 https://$server_name;
}

这里要求的是443部分 443服务器块

     server {
     listen 443 ;

    root /folder/;
    index index.html index.htm;
    # Make site accessible from http://localhost/
    server_name server.com;


    location / {
            try_files $uri $uri/ /index.html;


            set $cors '';
            if ($http_origin ~* 'https?://(localhost|www\.server\.com|www\.server.\.com)') {
            set $cors 'true'; }
    add_header 'Access-Control-Allow-Origin' "$http_origin" always;

     }
     }

1 个答案:

答案 0 :(得分:0)

在您的情况下,nginx正在侦听端口443并期望在那里进行纯文本连接。至少,这是我从配置中看到的(令人困惑的是消息说明了相反的事实)。

server {
  listen 443;

仅指定端口,但不指定协议。相反,以下配置告诉nginx期望HTTPS / TLS(以前是 SSL )连接:

server {
  listen 443 ssl;