nginx を静的ファイルのフロントエンド Web プロキシとして使用し、バックエンド Web サーバーに Starman を使用して、Catalyst アプリケーションを実装しようとしています。(私は Apache と FastCGI を使用でき、それは問題なく動作しますが、PSGI / Plack と Starman のすべてを解決したいと本当に思っています)
Starman は正常に起動し、 で私のリクエストを問題なく処理できますhttp://localhost:5000
。フロントエンド プロキシとして使用するために nginx を起動すると、URL が醜くなり、$c->uri_for
メソッドを使用するたびにポート番号 (5000) が乱れます。
例 :
$c->uri_for("/login") になる http://myapp.example.com:5000/login それよりも http://myapp.example.com/login
いくつかのログが作成されているので、何が設定されているかX-Forwarded-Host
を確認できます。X-Forwarded-For
通常のリクエストの場合、(nginx からの) 値が設定されていますが、$c->uri_for
メソッドが使用されるときはいつでも、それらの値は存在しません。
他の誰かがこの問題を抱えていますか?
nginx または Catalyst conf の設定で他に何か不足していますか?
ありがとう!
nginx 構成:
サーバー { 80を聞いてください。 server_name myapp.example.com; 場所/静的{ ルート /data/users/MyApp/root; 有効期限は 30 日です。 } 位置 / { proxy_set_header ホスト $host; proxy_set_header X-Forwarded-Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_pass http://localhost:5000/; } }
これは同じ物理サーバー上で実行されますが、MyApp 構成で設定しました:
MyApp->config(using_frontend_proxy => 1)
バージョン:
触媒:5.80024 nginx: 0.7.67 プラック:0.9942 スターマン : 0.2006