したがって、nginx.confのnode.jsアプリケーションを指すときに仮想パスを設定しています。関連するセクションは次のようになります:Express.jsが仮想パスでリダイレクト
location /app {
rewrite /app/(.*) /$1 break;
proxy_pass http://localhost:3000;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
私のエクスプレスアプリがリダイレクトを呼び出す場合を除き、素晴らしいです。
例として、DEVボックスは、ポート8080上でnginxの実行されている、そしてそのノードアプリのルートへのURLのは、次のようになります。私は急行からres.redirect('/app')
を呼び出すと
http://localhost:8080/app
、実際のリダイレクト
http://localhost/app
ポート80で何も実行されていないため、これは失敗します。また、URLを絶対URLにするためのリクエストオブジェクトのプロパティも見つけられませんでした。それをハードコーディングしたり、環境変数にしたりするのに不十分なアイデアはありますか?
*編集:ちょっと調べてみると、この場合はホストヘッダーが「localhost」と定義されているように見えますが、expresアプリケーションに直接接続すると、ホストヘッダーは「localhost :3000 '(3000はノード・アプリケーションがリッスンしているポートです)。では、上記のマッピングをnginxサーバーのポートを含むように変更するにはどうすればよいですか?
完璧でした。ありがとう! – Paul