1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 | server { listen 80 default_server; server_name ~^(\w+\.)?( test \.com)$; root /www/ $1$2; set $san $1; set $er $2; location ~* \.(jpeg|png|gif|jpg)$ #location / { types {} default_type text /html ; echo $san "</br>" ; echo $er "</br>" ; echo $1 "</br>" ; echo $2 "</br>" ; echo $uri; } } # 当访问 http://img.test.com/1.txt 时,返回404错误,日志中报错: open () "/www/img.test.com/1.txt" failed (2: No such file or directory) 说明正则匹配的值为img. test .com($1=img. $2= test .com)去 /www/ 目录下寻找此目录 # 当访问 http://img.test.com/1.jpeg 时,页面返回内容: img. test .com jpeg /1 .jpeg 可以发现$2为空,猜测可能是因为出现第二个正则匹配并捕获内容导致$2变为未定义变量(并不知道真实原因是什么,只是猜测)。 因为第一个捕获组定义了,但是没有定义第二个捕获组。 当注释掉location ~* \.(jpeg|png|gif|jpg)$ 开启 #location / 时,则echo的内容全部返回。 如果想用之前的变量可以通过 set 设置自定义变量。 |
原创文章,转载请注明。本文链接地址: https://www.rootop.org/pages/5312.html