location 有“定位”的意思,可以根据URI来进行不同的的定位
在虚拟主机的配置中,是必不可少的,location,他可以把网站的不同部分,定位到不同的处理方式上
location 的语法
location [=|~|~*|^~] patt {
}location 语句大致可以分为三种
location = demo {} 【精准匹配】
location demo {} 【普通匹配】
location ~ demo {} 【正则匹配】
在这三种匹配中精准优先匹配,如果精准匹配成功,则停止匹配过程location = / {
# 精确匹配 / ,主机名后面不能带任何字符串
config A
}
location / {
# 因为所有的地址都以 / 开头,所以这条规则将匹配到所有请求
# 但是正则和最长字符串会优先匹配
config B
}
location ~ image {
# 匹配任何以 /iamge/ 开头的地址,匹配符合以后,还要继续往下搜索
# 只有后面的正则表达式没有匹配到时,这一条才会采用这一条
config C
}
location /foo {
# 字符匹配到 /foo,继续往下
config D
}
=开头表示精确匹配
如 A 中只匹配根目录结尾的请求,后面不能带任何字符串。
~ 开头表示区分大小写的正则匹配;
~* 开头表示不区分大小写的正则匹配
/ 通用匹配, 如果没有其它匹配,任何请求都会匹配到
/ -> config A
精确完全匹配
/image/logo.png -> config C
匹配B以后,往下没有任何匹配,采用C
/foo -> configD
匹配到F,往下匹配到D,停止往下
/abc/def -> config B
匹配规则B
rewrite 重写
重写中用到的指令
if (条件) {} 设定条件,再进行重写
set #设置变量
return #返回状态码
break #跳出rewrite
rewrite #重写
If 语法格式
If 空格 (条件) {
重写模式
}
条件又怎么写?
答:3种写法
1: “=”来判断相等, 用于字符串比较
2: “~” 用正则来匹配(此处的正则区分大小写)
~* 不区分大小写的正则
3: -f -d -e来判断是否为文件,为目录,是否存在.
以上就介绍了Nginx location语法配置详解,包括了location,nginx方面的内容,希望对PHP教程有兴趣的朋友有所帮助。
本文原创发布php中文网,转载请注明出处,感谢您的尊重!