web-dev-qa-db-ja.com

Nginx構成は無限のリダイレクトループにつながります

だから私は見つけることができるすべてのサンプル構成を見てきましたが、sslを必要とするページを表示しようとするたびに、リダイレクトループになってしまいます。私はnginx/0.8.53とパッセンジャー3.0.2を実行しています。

これがSSL構成です

server  {
  listen 443 default ssl;
  server_name <redacted>.com www.<redacted>.com;
  root /home/app/<redacted>/public;
  passenger_enabled on;
  Rails_env production;  
  ssl_certificate      /home/app/ssl/<redacted>.com.pem;
  ssl_certificate_key  /home/app/ssl/<redacted>.key;

  proxy_set_header  X-Real-IP  $remote_addr;
  proxy_set_header  X_FORWARDED_PROTO https;
  proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;
  proxy_set_header  Host $http_Host;
  proxy_set_header  X-Url-Scheme $scheme;
  proxy_redirect    off;
  proxy_max_temp_file_size 0;

  location /blog {
    rewrite ^/blog(/.*)?$ http://blog.<redacted>.com/$1 permanent;
  }

  location ~* \.(js|css|jpg|jpeg|gif|png)$ {
    if (-f $request_filename) {
      expires      max;
      break;
    }
  }

  error_page   500 502 503 504  /50x.html;
  location = /50x.html {
    root   html;
  }
}

これが非SSL設定です

server  {
  listen 80;
  server_name <redacted>.com www.<redacted>.com;
  root /home/app/<redacted>/public;
  passenger_enabled on;
  Rails_env production;  

  location /blog {
    rewrite ^/blog(/.*)?$ http://blog.<redacted>.com/$1 permanent;
  }

  location ~* \.(js|css|jpg|jpeg|gif|png)$ {
    if (-f $request_filename) {
      expires      max;
      break;
    }
  }

  error_page   500 502 503 504  /50x.html;
  location = /50x.html {
    root   html;
  }
}

問題の診断に役立つ追加情報があるかどうかをお知らせください。

27
brianthecoder

ここにあなたの行があります:

  listen 443 default ssl;

それを次のように変更します。

listen 443;
ssl on;

これを古いスタイルと呼びます。また、それとともに

              proxy_set_header X_FORWARDED_PROTO https;
              proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;
              proxy_set_header  Host $http_Host;
              proxy_set_header  X-Url-Scheme $scheme;
              proxy_redirect    off;
              proxy_max_temp_file_size 0;

私のためにトリックをしました。今、私はあなたが持っている本当のIP回線を見逃していますが、これまでのところ、これはssl_requirementとssl_enforcerによる私の無限ループ問題を取り除きました。

31
pjammer

この線だとわかりました

 proxy_set_header  Host $http_Host;

どちらに変更する必要があります

 proxy_set_header  Host $Host;

nginxのドキュメントによると '$ http_Hostを使用して、「変更されていないリクエストヘッダー」を渡します。

6
toxaq

X_FORWARDED_PROTOの代わりに「X-Forwarded-Proto」を使用してみましたか?

以前にこのヘッダーで問題が発生しました。リダイレクトの原因ではありませんでしたが、このヘッダーを変更すると修正されました。

5
britg

Sslセクションとnon-sslセクションの両方にrewriteステートメントがあるので

location /blog {
  rewrite ^/blog(/.*)?$ http://blog.<redacted>.com/$1 permanent;
}

Blog..comのサーバーセクションはどこにありますか?それが問題の原因でしょうか?

4
Peter Petrik

Symfony2アプリケーションにも同様の問題がありましたが、別の原因はありましたが、fastcgi_param HTTPS off;もちろん必要なときfastcgi_param HTTPS on;私のnginx構成で。

    location ~ ^/(app|app_dev|config)\.php(/|$) {
            satisfy any;
            allow all;
            fastcgi_pass unix:/var/run/php5-fpm.sock;
            fastcgi_split_path_info ^(.+\.php)(/.*)$;
            include fastcgi_params;
            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
            fastcgi_param HTTPS on;
    }
3
k0pernikus

他の誰かがこれにつまずく場合に備えて、同じサーバー{}ブロックを介してhttpとhttpsの両方を構成しようとしましたが、「この行はデフォルトであり、暗黙的である」ということは、 80も聴いてください。 "listen 80"行のコメントを外して、両方のlisten行が存在するようにして、無限ループを修正しました。なぜリダイレクトが発生していたのかはわかりませんが、実際にはリダイレクトされていました。

1
Brian J. Miller

自分のクラウドが良い構成ファイルを持っているにもかかわらずリダイレクトループを作成し続ける理由を必死に検索している人のために、それが機能しない理由を見つけました。

私の構成:nginx + php-fpm + mysqlを新しいCentOS 6.5で

php-fpmおよびnginxをインストールする場合、/ var/lib/php/session /のデフォルトの権限はroot:Apacheです。

nginxにphpセッションを格納するphp-fpmは、ここにphpセッションを格納します。nginxに書き込み権限がない場合、ログインセッションを維持するために無惨に失敗し、無限ループが発生します。

Apacheグループ(usermod -a -G Apache nginx)にnginxを追加するか、このフォルダーの所有権を変更してください。

ごきげんよう。

1
user3613475

私はこれらの答えの束をいじくり回しましたが、何もうまくいきませんでした。その後、Cloudflareを使用しているため、問題はサーバーではなくCloudflareにある可能性があることに気付きました。 SSLをFull (Strict)に設定すると、すべてが正常に機能します。

cloudflare ssl

0
Zaki Aziz

X_FORWARDED_PROTOあなたのファイルのようにエラーを引き起こす可能性があり、それは私の場合に起こりました。 X-Forwarded-Protoは正しいですが、ハイフンは大文字や小文字よりも重要です。

あなたは慣習に固執することでそれらの問題を回避することができます;)

こちらもご覧ください カスタムHTTPヘッダー:命名規則 そしてこちら: http://www.ietf.org/rfc/rfc2047.txt

0
Steven