21

空のserver { }定義で期待どおりに機能するこの構成があります

location ^~ /foo/ {
    alias /var/www/foo/;
}

しかし、これをかなり大きなサーバー定義 (WordPress のマルチサイト構成に使用されるもの) に移動すると、動作が停止し、wordpress がそれに応答します (これは明らかに私の意図ではありませんでした)。

サーバーブロックの先頭または末尾に配置しようとしましたが、これは変更されませんでした。

Nginx にこの場所を強制的に使用させるにはどうすればよいですか?

4

3 に答える 3

27

あなたはおそらく を探していbreakます。

location ^~ /foo/ {
    alias /var/www/foo/;
    break;
}

HttpRewriteModuleドキュメントから:

last- 現在の書き換えディレクティブの処理を完了し、使用可能なすべての場所から URI の一致を検索してプロセス (書き換えを含む) を再開します。

break- 現在の書き換えディレクティブの処理を完了し、非書き換え処理は現在のロケーション ブロック内でのみ続行します。

ロケーション ブロックの外側、last および break は事実上同じであることに注意してください。

于 2012-12-27T05:39:29.570 に答える
3

Nginx のロケーション ブロックは排他的です。使用する場合location ^~、同じ場所ブロックの下にネストされたルールをコピーしない限り、静的オブジェクトのおそらく期限切れヘッダーの他のルールは適用されません。

完全な設定を共有していただければ、それを機能させることができます。ほとんどの場合、ネストされたロケーション ブロックを使用する必要があります。

于 2014-08-05T10:35:20.850 に答える
0
location = /aliasname/ { 
  alias /path/to/alias/
}

末尾のスラッシュが URI に存在しない場合、問題になります。https://www.digitalocean.com/community/tutorials/understanding-nginx-server-and-location-block-selection-algorithms#matching-location-blocksを参照してください

于 2017-01-10T20:36:06.180 に答える