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第二个不配。


猜你喜欢

转载自blog.51cto.com/13578154/2308993
今日推荐