私は非常にシンプルに思える何かをしようとしていますが、それを理解できないので、私は愚かであるか、非常に明白な何かを見逃す必要があります。
サーバーで実行されている複数のWebアプリケーションに、それぞれに一意のプレフィックスを付けてアクセスしたい:
http://mywebserver/app1 -> localhost:9001
http://mywebserver/app2 -> localhost:9002
...
私が理解したことから、Nginxをリバースプロキシとして構成する必要があるため、次のようにしました。
server {
listen 80;
server_name mywebserver;
location /app1{
proxy_set_header Host $Host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_pass http://127.0.0.1:9001/;
}
...
}
この構成により、http://mywebserver/app1
でアプリケーションのホームページにアクセスできますが、静的コンテンツはロードされません。
ブラウザのコンソールを開くと、http://mywebserver/static/custom/index.js
などではなくhttp://mywebserver/app1/static/custom/index.js
からリソースを取得しようとしていることがわかります。
静的を提供するためにroot
ディレクティブをロケーションブロックに追加しようとしましたが、静的コンテンツ要求は/
ではなく/app1
に対して行われるため、考慮されません。
これを修正するには?私が見落としている明らかなものはありますか、それともリバースプロキシの概念を完全に誤解しましたか?
ありがとうございました。
@sikianからの提案でうまくいきました。ロケーション宣言をlocation /app1 { ... }
からlocation /app1/ { ... }
に変更しました。
静的ファイルはコンソールでエラーなしに提供され、アプリケーションは完全に機能しているようです。