問題:
- URI 内の特定のパスを持つリクエストを に
proxy_pass
リダイレクトするには、 nginx ディレクティブを使用します(例: ) 。https
location
https://domain/path/index.html
http://container_ip:port/index.html
- これは最初のリクエストでは正常に機能します。
- ただし、HTML ファイルで読み込むリソースが指定されている場合、クライアントはパスなしでベース URL のみを使用してこれらのリソースを検索します (例 )
https://domain/main.css
。
質問:https://domain/path/main.css
このようなリソースも元のパスで検索されるように nginx を構成するにはどうすればよいでしょうか。 例では、
現在の不正な nginx 構成:
server {
listen 443 ssl;
server_name domain;
[...]
location /path/ {
proxy_set_header Host $host;
proxy_pass http://container_ip:port/;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
proxy_set_header X-Forwarded-For $remote_addr;
}
}
答え1
リソースへのパスはアプリケーションによって生成されます。適切で信頼性の高いアプローチは、正しいパスを持つリソース URL を生成するようにアプリケーションを修正することです。
信頼性の低い解決策が必要な場合は、nginx.org/ja/docs/http/ngx_http_sub_module.html を参照してください。nginx がプロキシする応答内のリソース URL を置き換えます。ただし、診断が難しい望ましくない副作用が発生する可能性があります。