2017-08-17 9 views
0

これらの2つのnginxディレクティブの違いは何ですか?次のコードブロック内nginx:ロケーションチルド正規表現とパス

location ^~ /sub-directory

location /sub-directory

すなわち差を行う場合、リダイレクトするproxy_passを使用します。

+0

http://nginx.org/r/他の場所に依存する場所 –

答えて

0

は、私はあなたが私はによりことはできません見ることができるように今、カール文以下

$ curl http://192.168.33.100/sub-director/abc 
~* /sub.* 

$ curl http://192.168.33.100/sub-director/ 
~* /sub.* 

$ curl http://192.168.33.100/sub-director 
~* /sub.* 

$ curl http://192.168.33.100/sub-directory 
^~ /sub-directory 

$ curl http://192.168.33.100/sub-directory/ 
^~ /sub-directory 

$ curl http://192.168.33.100/sub-directory/abc 
^~ /sub-directory 

を検討ドッキングウィンドウコンテナ

sudo docker run -p 80:80 -v $PWD/nginx.conf:/usr/local/openresty/nginx/conf/nginx.conf openresty/openresty 

を使用して、上記走っ以下のnginxの設定

worker_processes 1; 

events { 
    worker_connections 1024; 
} 

server { 
    listen 80; 
    server_name _; 

    location ^~ /sub-directory { 
     echo "^~ /sub-directory"; 
    } 

    location /sub-director 
    { 
     echo "/sub-director"; 
    } 

    location ~* /sub-* { 
     echo "~* /sub-*"; 
    } 
} 

を考えてみましょういずれにしても下の場所ブロックに到達する

location /sub-director 
    { 
     echo "/sub-director"; 
    } 

正規表現がこのブロックをオーバーライドするためです。しかし、私はまだ到達することができます

location ^~ /sub-directory { 
     echo "^~ /sub-directory"; 
    } 

だから違いはあります。 ^~を使用し、位置が一致すると、正規表現のベース位置はまったく評価されません。