Nginx重写HTTP到HTTPS说重定向循环?

时间:2014-11-11 23:42:57

标签: http redirect ssl nginx https

我正在尝试将所有HTTP流量重定向到HTTPS,因此当我访问www.domain.com时,它会转到https://www.domain.com。这是我当前的.conf文件 -

server {

listen 80;
#listen [::]:80;
server_name www.domain.net;
rewrite ^(.*) https://www.domain.net$1 permanent;
index index.html index.htm index.php default.html default.htm default.php;
root  /home/wwwroot/www.domain.net;

include other.conf;
#error_page   404   /404.html;
location ~ [^/]\.php(/|$)
    {
        # comment try_files $uri =404; to enable pathinfo
        try_files $uri =404;
        fastcgi_pass  unix:/tmp/php-cgi.sock;
        fastcgi_index index.php;
        include fastcgi.conf;
        #include pathinfo.conf;
    }

location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
    {
        expires      30d;
    }

location ~ .*\.(js|css)?$
    {
        expires      12h;
    }

access_log  /home/wwwlogs/www.domain.net.log  access; }

它总是返回一个'重定向循环'我的域名错误,我尝试了很多不同的配置,但我总是遇到同样的问题。 (我很欣赏我的SSL没有配置,但它仍然有效)

如果有人能帮助我开展工作,我将不胜感激。

2 个答案:

答案 0 :(得分:2)

您需要将ssl配置放在服务器中:

  

听443 ssl默认;
  ssl on ssl_certificate<<把你的.crt>&gt ;;
  ssl_certificate_key<<把你的.key>&gt ;;

     

#force https-redirects
      if($ scheme = http){           return 301 https:// $ server_name $ request_uri; }

答案 1 :(得分:0)

你把你的文件放在服务器上来监听端口443吗?

因为如果你没有配置你的nginx来监听端口443,你的服务器将从80重定向到https。从https到http(80) - 这会引起你的循环。

要构建重定向,您只需要这样:

server {
    listen 80 default;
    server_name <<your domain>>;
    return 301 https://<<your domain>>$request_uri;}

使用您在443 ssl上执行的相同配置,但进行以下更改:

listen 443 ssl;
ssl_certificate <<your .crt>>;
ssl_certificate_key <<your .key>>;
ssl_client_certificate <<your client certificate .crt>>;