web-dev-qa-db-ja.com

HTTPからHTTPSへのNginxのリダイレクトが多すぎる

LEMPスタックで実行されているWebサイトがあります。ウェブサイトでcloudflareを有効にしました。 httpsにはcloudflare flexible SSL証明書を使用しています。 chromeでウェブサイトを開くと、ウェブサイトが何度もリダイレクトされ、firefoxではサーバーがこのアドレスへのリクエストを完了しない方法でリダイレクトしていることを検出しました。他の質問の答えを見るためにそれらのどれも問題を解決するようではないNGINX confファイル:-

server {
listen 80 default_server;
listen [::]:80 default_server;
server_name mydomain.com www.mydomain.com;
return 301 https://$server_name$request_uri;
}
server {
listen 443 ssl http2 default_server;
listen [::]:443 ssl http2 default_server;
root /var/www/html;

index index.php index.html index.htm index.nginx-debian.html;

location / {
    try_files $uri $uri/ =404;
}

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

location ~ /\.ht {
    deny all;
}
}

誰かが私が間違っていることを指摘できるなら、私は非常に感謝しています。

11

Cloudflare flexible SSLを使用しているため、nginx設定ファイルは次のようになります。

server {
  listen 80 default_server;
  listen [::]:80 default_server;
  server_name mydomain.com www.mydomain.com;

  if ($http_x_forwarded_proto = "http") {
      return 301 https://$server_name$request_uri;
  }

  root /var/www/html;

  index index.php index.html index.htm index.nginx-debian.html;

  location / {
     try_files $uri $uri/ =404;
  }

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

  location ~ /\.ht {
     deny all;
  }
}
35
Kushal

Kushalの推論は正しい。 CloudflareとOriginの間で「柔軟な」SSLを使用しているため、このリダイレクトループに入ります。

CloudflareとOriginの間のトラフィックは安全ではないため、これは理想的ではありません。最適なオプションは、トラフィックを暗号化することです。

Cloudflareのダッシュボードに移動し、Cryptoを選択してから、ニーズに合った別のSSLオプションを選択します。暗号化して証明書をインストールしているため、Full(strict)を使用しています。

https://nginxconfig.io/ を使用して構成を生成することもお勧めします。

Cloudflareのヘルプから:

サイトがHTTPSで動作しないのはなぜですか?最近Cloudflareにサインアップしており、上記の証明書ステータスに「認証証明書」が表示されている場合、Cloudflareには証明書がないため、サイトでHTTPSを使用できません。通常、プロビジョニングには有料プランの場合は約15分かかり、無料プランの場合は最大24時間かかります。それ以降に証明書がない場合は、サポートにお問い合わせください。上記のステータスが「アクティブな証明書」を示している場合、HTTPS経由でサイトにアクセスするときに表示される可能性のある他の一般的な問題がいくつかあります。

どのSSL設定を使用する必要がありますか?この設定は、CloudflareのサーバーがHTTPSリクエストのためにOriginに接続する方法を制御します。可能であれば、Full SSL(Strict)設定を有効にすることをお勧めします。それぞれの一般的な使用例は次のとおりです。

オフ:訪問者はHTTPSでサイトを表示できません。それらはHTTPにリダイレクトされます。

柔軟なSSL:サイトで無効な証明書を使用しても、OriginでHTTPSサポートを構成することはできません。訪問者はHTTPS経由でサイトにアクセスできますが、Originへの接続はHTTP経由で行われます。注:一部のOrigin構成でリダイレクトループが発生する場合があります。

完全なSSL:オリジンはHTTPSをサポートしていますが、インストールされている証明書がドメインと一致しないか、自己署名されています。 CloudflareはHTTPS経由でOriginに接続しますが、証明書を検証しません。

完全(厳密):オリジンには有効な証明書(有効期限が切れておらず、信頼できるCAまたはCloudflare Origin CAによって署名されていない)がインストールされています。 CloudflareはHTTPSで接続し、各リクエストで証明書を確認します。

3
incognick