web-dev-qa-db-ja.com

nginxでのERR_TOO_MANY_REDIRECTS

すべてのhttpトラフィックをhttpsにリダイレクトしたい。 letsencryptを使用しています。私はオンラインでreturn 301 https://$server_name$request_uri;はすべてのトラフィックを私のウェブサイトにhttpsにリダイレクトしますが、代わりにERR_TOO_MANY_REDIRECTS

上記の言及文がなくてもすべて正常に機能しますが、URLでhttpsを具体的に指定する必要があります。これが私の/etc/nginx/sites-available/defaultファイル:

server {
        listen 80 default_server;
        listen 443 ssl default_server;

        ssl_certificate /etc/letsencrypt/live/mywebsite.me/fullchain.pem;
        ssl_certificate_key /etc/letsencrypt/live/mywebsite.me/privkey.pem;

        root /home/website/mywebsite/public;

        index index.html index.htm index.php;

        server_name mywebsite.me www.mywebsite.me;

        return 301 https://$server_name$request_uri;

        location / {
                try_files $uri $uri/ /index.php$is_args$args;
        }

        location ~ \.php$ {
                include snippets/fastcgi-php.conf;
                fastcgi_pass unix:/var/run/php/php7.1-fpm.sock;
        }
}

どこがいけないの?

6
Pritam Bohra

設定を以下に変更してください

server {
        listen 80 default_server;
        server_name mywebsite.me www.mywebsite.me;

        return 301 https://$server_name$request_uri;
}

server {

        listen 443 ssl default_server;

        ssl_certificate /etc/letsencrypt/live/mywebsite.me/fullchain.pem;
        ssl_certificate_key /etc/letsencrypt/live/mywebsite.me/privkey.pem;

        root /home/website/mywebsite/public;

        index index.html index.htm index.php;

        server_name mywebsite.me www.mywebsite.me;

        location / {
                try_files $uri $uri/ /index.php$is_args$args;
        }

        location ~ \.php$ {
                include snippets/fastcgi-php.conf;
                fastcgi_pass unix:/var/run/php/php7.1-fpm.sock;
        }
}

現在の設定は、httpとhttpsの両方でhttpsにリダイレクトされます。したがって、returnステートメントがあるため、無限ループになります。接続がhttpの場合にのみ、returnステートメントが必要です。だからあなたはそれを2つのサーバーブロックに分割します

9
Tarun Lalwani

私の場合、それはCloudflareでした。フルSLL暗号化に変更する必要がありました

2
ZyQux

同じ問題がありました。私はそれに関する多くの質問/回答と記事を見つけましたが、何も助けにはなりませんでした。次に、別のブラウザーから自分のサイトにアクセスしようとしたところ、問題なく動作しました。私からキャッシュを削除chromeブラウザはそれを解決しました。

だから-あなたもキャッシュをクリアするために別の解決策を試すときは覚えておいてください

2
OritK