nginxが特定のサブディレクトリをリバースプロキシしないようにする方法


11

Apacheでは、1つ以上のサブディレクトリ(「!」付き)を除くすべてをProxyPassできます。

    ProxyPass /subdir !
    ProxyPass / http://localhost:9999/

Nginxに相当するものは何ですか?

私の最初の推測は明らかに機能していません:

 location /subdir {
      root /var/www/site/subdir;
  }

 location / {
      proxy_pass http://localhost:9999/ ;
  }

回答:


11

このように、proxy_passを好きなパスに正確にバインドできます

location = / {
    proxy_pass http://localhost:9999/;
}

これにより、他のパスは渡されませんが、 /

または

この構文を使用して、照合するサブディレクトリのみを指定できます

location ^~ /subdir {
     alias /var/www/site/subdir;
}

location / {
    proxy_pass http://localhost:9999/ ;
}

^~サブディレクトリにマッチし、次にように、検索を停止して/実行されません。こちらで説明します


ルート/ var / www / site / subdirは私の場合ルート/ var / www / siteでなければなりません。そうでない場合、nginxは/ var / www / site / subdir / subdirにアクセスしようとします。
Tinus 14年

あなたが正しいです。それか、alias代わりに使用できますroot
Christopher Perrin '26

1
これについてもっと説明してもらえます^~か?何ができるのかわかりませんでした。送信したリンクを読み取ってみましたが、まだ取得できません。最長の一致するプレフィックスの場所に「^〜」修飾子がある場合、正規表現はチェックされません。
Mohammed Noureldin

@MohammedNoureldinは、本質的にパスのプレフィックスに一致しようとし、正規表現を評価しないことを意味します。
クリストファーペリン

1
@MohammedNoureldinこれは、場所に使用するパスの最初の部分です。そしてはい、それは正規表現なしです。
クリストファーペリン
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.