
私は、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;