CGI 仕様に従って、http ヘッダーは次のHTTP_
プレフィックスで利用できます。
Meta-variables with names beginning with "HTTP_" contain values read
from the client request header fields, if the protocol used is HTTP.
The HTTP header field name is converted to upper case, has all
occurrences of "-" replaced with "_" and has "HTTP_" prepended to
give the meta-variable name.
つまり、ヘッダーはアプリケーションのSome-Header
ように表示さHTTP_SOME_HEADER
れます。つまり、すべてが機能することが期待されます-httpヘッダーを追加し、HTTP_
プレフィックスで利用できるようにしました。
このSCRIPT_NAME
変数は特別で、どのヘッダーによっても設定されませんが、代わりに、アプリケーションを実行するコードによって URI から構築されます。それを変更するには、実際にバックエンドから見える URI を変更する必要があります。
proxy_pass http://localhost:4567/wiki/;
または/wiki/
、proxy_pass にある限り、 nolocation /wiki/
です。つまり、
location /wiki/ {
proxy http://localhost:4567;
}
ここでの悪い点は、何らかの理由でURI を から/wiki/
に変更した可能性があることです。つまり、バックエンド アプリケーションが を期待しています。この問題にはいくつかの解決策があります。/
/
- 実際にアプリケーションを に移動します
/wiki/
。通常、これを行うのは簡単です。
- アプリを変更して、帯域外の方法でリンクなどを生成するために使用されるベース URL を受け入れるようにします。多くのアプリケーションは、いくつかの構成オプションを介してすでにこれをサポートしています。
- アプリケーションが返すものを nginx 自体で置き換えてみてください。これを行う nginx ディレクティブがいくつかあります。具体的には、 proxy_redirect 、 proxy_cookie_path、およびsub filterです。ただし、これは最も壊れやすい方法であり、アプリケーションが何を返し、何を正確に置き換える必要があるかを理解していない限り、お勧めできません。