1.19 nginx的location配置

1.19 nginx的location配置

安裝第三方模塊echo-nginx-module

git clone https://github.com/openresty/echo-nginx-module.git
./configure --prefix=/usr/local/nginx --add-module=/path/to/echo-nginx-module

安裝echo模塊操作:

cd /usr/local/src/nginx-1.8.0/
./configure --prefix=/usr/local/nginx --add-module=/usr/local/src/echo-nginx-module
make && make install 
/etc/init.d/nginx restart
# nginx -V
nginx version: nginx/1.8.0
built by gcc 4.8.5 20150623 (Red Hat 4.8.5-16) (GCC) 
configure arguments: --prefix=/usr/local/nginx --add-module=/usr/local/src/echo-nginx-module

配置寫法:

server {
        listen 80;
        server_name  2.com;
        root /data/t-nginx/2.com;
        location /abc/
          {
                echo 123;
          }
        }

效果:訪問/abc/要輸出echo的信息

curl -x127.0.0.1:80 2.com/abc/1111
123


location語法

location [=|^~|~|~*] /uri/ { …. }

https://coding.net/u/aminglinux/p/nginx/git/blob/master/location/ruler.md 

location優先級及案例

=  高於  ^~  高於  ~* 等於 ~  高於  /

http://coding.net/u/aminglinux/p/nginx/git/blob/master/location/priority.md 

場景比較:/ 與 ~*

server {
        listen 80;
        server_name  2.com;
        root /data/t-nginx/2.com;
        location /abc/
          {
                echo "/";
          }
        location ~* abc
          {
                echo "~*";
          } 
        }

效果:

 當匹配到 location /abc/的時候,輸出/

 當匹配到 location ~* abc的時候,輸出~*

測試訪問:

curl -x127.0.0.1:80 2.com/abc/1111

~*

實驗證明,同樣的場景~*比/的優先級要高。


場景比較:~~*

當這2個同時存在,會匹配最先出現的location語法。


場景比較:= ^~

vim 2.com.conf 
server {
        listen 80;
        server_name  2.com;
        root /data/t-nginx/2.com;
        location ^~ abc
          {
                echo "^~";
          }
        location = "/abc/1.php"
          {
                echo "=";
          }
}
# curl -x127.0.0.1:80 2.com/abc/1.php
=

實驗證明,同樣的場景,=比^~的優先級要高。


規則示例

location = "/12.jpg" { ... }

如:

www.aminglinux.com/12.jpg     匹配
www.aminglinux.com/abc/12.jpg     不匹配

不匹配原因:因爲“=”是精準匹配


location ^~ "/abc/" { ... }

如:

www.aminglinux.com/abc/123.html 匹配
www.aminglinux.com/a/abc/123.jpg 不匹配

不匹配原因:因爲是以"/abc/"開頭並匹配


location ~ "png" { ... }

如:

www.aminglinux.com/aaa/bbb/ccc/123.png 匹配
www.aminglinux.com/aaa/png/123.html 匹配

都匹配:~匹配"png"即可


location ~* "png" { ... }

如:

www.aminglinux.com/aaa/bbb/ccc/123.PNG 匹配
www.aminglinux.com/aaa/png/123.html 匹配

都匹配:因爲不區分大小寫匹配,所以有"png"都會匹配


location /admin/ { ... }

如:

www.aminglinux.com/admin/aaa/1.php 匹配
www.aminglinux.com/123/admin/1.php 不匹配

不匹配原因:因爲是匹配uri後/admin/的開頭,so第二個不配。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章