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第二个不配。
转载于:https://blog.51cto.com/13578154/2308993