すべての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;
}
}
どこがいけないの?
設定を以下に変更してください
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つのサーバーブロックに分割します
私の場合、それはCloudflareでした。フルSLL暗号化に変更する必要がありました
同じ問題がありました。私はそれに関する多くの質問/回答と記事を見つけましたが、何も助けにはなりませんでした。次に、別のブラウザーから自分のサイトにアクセスしようとしたところ、問題なく動作しました。私からキャッシュを削除chromeブラウザはそれを解決しました。
だから-あなたもキャッシュをクリアするために別の解決策を試すときは覚えておいてください