web-dev-qa-db-ja.com

Nginxでサブホストを外部ホストにリダイレクトする

同じサブネットにある別のサーバーにサブパスをリダイレクトする非常に単純なマップをNginxで作成する必要があります。

  • Nginxサーバー:192.168.0.2
  • Tomcatサーバー:192.168.0.3:8443

これをサーバーセクションに入れてみました

    location /tomcatapi/ {
        rewrite /tomcatapi/(.*) $1 break;
        proxy_pass http://192.168.0.3:8443;
    }

しかし、私がアクセスするのは http://www.myservice.com/tomcatapi/ は500エラーページであり、nginxログファイルには次のエラーがあります。

    the rewritten URI has a zero length

このconfで何が欠けていますか?

15
carlo.polisini

書き換え行を見てみましょう:

rewrite /tomcatapi/(.*) $1 break;

括弧内のビット(つまり、/tomcatapi/の後のすべて)を取得します。これは$1に割り当てられ、書き換えられたURIの唯一のコンテンツとして使用します。

あなたの例では、/tomcatapi/の後には何もないので、書き換えは最終的に空になり、これがnginxがうめくものです。

書き換えルールを次のように変更した場合

rewrite /tomcatapi/(.*) /$1 break;

その場合、書き換え出力には常に少なくとも/が含まれます。

14
Flup