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