Nginx将http重定向到https不起作用

时间:2014-06-24 09:35:18

标签: ssl nginx

我正在使用SSL设置nginx服务器。

使用ssl的域名是dev.cooknconnect.com   我想将所有请求从http://domain.com重定向到https://domain.com   我目前有以下服务器块设置:

server {
         listen      1.2.3.4:80 default;
         server_name domain.com;
         server_tokens off;
         rewrite        ^ https://$server_name$request_uri? permanent;
        }
 server {
            listen 443 ssl;
            server_name domain.com www.domain.com;
            keepalive_timeout   70;
            server_tokens off;
            ssl on;
            ssl_certificate /etc/ssl/certs/certificate.crt;
            ssl_certificate_key /etc/ssl/private/certificate.key;
            ssl_session_timeout 5m;
            ssl_protocols SSLv3 TLSv1;
            ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv3:+EXP;
            ssl_prefer_server_ciphers on;

            location / {
                    proxy_pass  http://domain.com;
            }

         }

这目前无效,但我不明白为什么不行。任何人都可以在我的配置中发现任何错误。如果没有,请提示一些方法来跟踪或调试相同的内容。

2 个答案:

答案 0 :(得分:0)

你可以使用它,它应该正常工作

server {
    listen 80;
    server_name domain.com;
    server_tokens off;
    return 301 https://$http_host$request_uri;
}

请记住,https://dev.yourdomain.com不起作用,因为您的证书仅针对根域发布,dev子域的https将显示黄色证书警告。

答案 1 :(得分:0)

这对我来说很好用:

server{
  listen 80;
  server_name *.example.com;
  rewrite ^ https://$host$request_uri? permanent;
}

这会将域本身和子域的http永久重写为https到https模式。