Nginx プロキシ パス

Nginx プロキシ パス

私は、nginx から localhost:20000 上の別の Web サーバーをプロキシしようとしています。これは動作します:

location/ {
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_pass http://127.0.0.1:20000
}

ただし、次のように変更すると:

location /myApp {
proxy_set_header..

index.html ファイルしかロードできません。他の .css と .js はすべて 404 です。ブラウザのヘッダーを見ると、これらのファイルへのリクエストが mysite.com/myApp/jquery.js ではなく mysite.com/jquery.js に送られていることがわかります。そのため、その時点ではプロキシされていないため 404 になっているのだと思います。これらの URL へのパスは相対的にコード化されています ()。これを機能させるにはどうしたらよいでしょうか。プロキシされた index.html ファイル内のパスを変更することはできません。ありがとうございます。

編集。バックエンドの Web サーバーは thttpd ですが、古いものです。これは set_head ホストに影響しますか? 申し訳ありませんが、そのレイヤーの動作についてはあまり詳しくありません。

答え1

まず、location /myApp {}は より上である必要があります。次に、おそらくより重要なのは、次のようにセクションをlocation {}適切に割り当てて追加することで、静的ファイルを直接提供できることです。root

location ~* \.(css|jpg|png|gif|jpeg|js|ico|swf|mp3)$ { break; }

代わりに URI を変更したい場合は、次のセクションが役立ちますlocation / {}:

rewrite ^/(.*)$ /myApp/$1 break;

関連情報