1

nginx+Passenger (Apache+Passenger から) に移行中の古い Rails 2.3 アプリがあります。Nginx は SSL 用に構成されており、正常に機能しているように見えますが、Rails アプリから 302 リダイレクト ループに陥っています。

Rails アプリは、リクエストが ssl ではないと判断します (request.ssl? が false に評価されている必要があります)。production.log では、各ログ エントリにリクエストが http として表示されます。SSLRequirement プラグインを無効にすると、リダイレクト ループがなくなります。ただし、絶対 URL を作成するときにプロトコルを正しく設定できるように、Rails アプリが https 要求を検出していることを確認したいと思います。

以前の Apache+Passenger セットアップについて言及した唯一の理由は、SSLRequirement プラグインがその構成で適切に機能していたからです。

仮想ホストの nginx 構成は次のようになります。

server {
  listen       443 ssl;
  server_name  new.example.com;
  root /home/user/railsapps/example-setup/public;
  passenger_enabled on;
  ssl_certificate /etc/nginx/ssl/2013/example.com.chained.crt;
  ssl_certificate_key /etc/nginx/ssl/2013/example.key;
  ssl_protocols       SSLv3 TLSv1 TLSv1.1 TLSv1.2;
  ssl_ciphers         HIGH:!aNULL:!MD5;
}
4

3 に答える 3

0

答えはここで見つかりました:

エラー 310。 nginx + rails 3 でリダイレクトが多すぎる

構成を次のように変更するだけで済みました。

server {
  listen 443;
  ssl on;
  server_name  new.usfamilytree.com;
  root /home/admin/railsapps/example-setup/public;
  passenger_enabled on;
  ssl_certificate /etc/nginx/ssl/2013/example.com.chained.crt;
  ssl_certificate_key /etc/nginx/ssl/2013/example.key;
  ssl_protocols       SSLv3 TLSv1 TLSv1.1 TLSv1.2;
  ssl_ciphers         HIGH:!aNULL:!MD5;
}

listen 行から ssl off を削除し、「ssl on;」を追加しました。ライン。

于 2013-05-16T11:50:26.373 に答える