(実施例との)位置にnginxの詳細構成モジュール

碑文

いくつかの時間を投げ、いくつかのバグを遮るnginxの場所の割り当てでプレーする前。その後、インターネットは少し混乱探して、関連情報へのアクセスを持っています。自分の手で、この週末の良いきちんと設定位置モジュールの思考実験を解放、コンフィギュレーションの場所モジュールをまとめました。

位置モジュール構成

整合特性は、おおよそ以下のセクション(優先順)に分けることができます

最も高い優先度(=)は、第2の優先順位(^〜)第三の優先度(一致シーケンスに従って〜、〜*)第四の優先(/)

1.試合が停止されます

=:完全に一致することを示し、または最後の試合、またはマッチされることはありません。マッチがオンになっている場合は、そのブロックは場所へのアクセスを、他の人が表示されません。
^〜:一致によって優先順位の試合は、URLに上から順に下には、^〜後で、それはブロックの場所に移行した場合、他のは見ていません。

2.注文のマッチング

〜:URLの上から下への順序に従ってマッチングあれば、通常の大文字と小文字を区別一致を示し、そしてそれは、すなわち、このブロックの場所の用途を探索していきません。
〜*:上からURLの下に順序に従って一致する場合は、大文字と小文字を区別しない正規の一致を示し、それはそのブロックのために、この場所の使用を見ていきません。

3.一般的な試合

/:すべての要求が一致した表現。

位置を用いた例

# 输入http://ip+port/images/1.p
# 此时显示的是'= /images/1.p',因为=匹配优先级最高
location = /images/1.p {
    default_type 'text/plain';
    echo '= /images/1.p';
}
location ^~ /images/1.p {
    default_type 'text/plain';
    echo ' /images/1.p';
}
# 输入http://ip+port/images/1.p
# 此时显示到的是'^~ /images/1.p',因为^~只要匹配到了就会停止匹配,哪怕后续的长度更长
location ^~ /images/ {
    default_type 'text/plain';
    echo '^~ /images/1.p';
}
location ~ /images/1.p {
    default_type 'text/plain';
    echo '~ /images/1.p';
}
# 输入http://ip+port/images/1.pxyzxyz
# 此时显示到的是'~ /images/',因为这是按照顺序匹配的,匹配到了后面的就不再匹配了
location ~ /images/ {
    default_type 'text/plain';
    echo '~ /images/';
}
location ~ /images/1 {
    default_type 'text/plain';
    echo '~ /images/1';
}
# 输入http://ip+port/images/  显示'/',因为没有匹配到后面的URL,使用默认的/规则
# 输入http://ip+port/images/1xyzxyz  显示'~ /images/1',因为匹配到了后面的正则
location / {
    default_type 'text/plain';
    echo '/';
}
location ~ /images/1 {
    default_type 'text/plain';
    echo '~ /images/1';
}
# 输入http://ip+port/images/ 显示'/images/'
# 输入http://ip+port/images/1/ab 显示'/images/'
# 输入http://ip+port/images/1/abc 显示'/images/1/abc'  匹配上第一个location后,会继续向下匹配寻找,如果有更加完整的匹配,则会有下面的。如果没有,则使用当前的。
location /images/ {
    default_type 'text/plain';
    echo '/images/';
}
location /images/1/abc {
    default_type 'text/plain';
    echo '/images/1/abc';
}

注意事項

# 在使用“=”的时候会有意外情况,比方说下面这个例子。当输入'http://ip+port/'时,发现返回的状态码是304&404
# 原因在于Nginx发现请求的是个目录时,会重定向去请求'http://ip+port/index.html',此时返回码是304
# 而后Nginx收到了'http://ip+port/index.html'这个请求,发现没有location能够匹配,就返回404了
location = / {
    default_type 'text/plain';
    index index.html index.htm;
    root /web/;
}

おすすめ

転載: www.cnblogs.com/zimskyzeng/p/11442239.html