nginx配置文件config
结构说明
nginx配置结构分为三层 http > server > location
http 包含一到多个server, server包含一到多个location
配置项的优先级分别是location, server, http
http {
...
access_log /var/logs/nginx/nginx.log;
server {
server_name A;
location / {
...
}
location /A {
...
}
}
}
localtion
localtion结尾处有/时,访问/user会301重定向到/user/
localtion结尾处无/时,访问/user不重定向
location /a {
root /www/a # loaclhost/a ->/www/a 映射/a=/a
}
location /b/ {
root /www/b # loaclhost/b/test.html ->/www/b/b/ 直接加在了root路径后面
}
root和alias的区别
root和alias都可以定义在location模块中
- root指定的值加上location指定的值,root+locaiton=真实路径
- alias指定的路径是location的别名,不管location的值怎么写,资源的 真实路径都是 alias 指定的路径,alias=location
location /a/ {
root /data/w3/; #localhost/a/test.html ->/data/w3/a/test.html
}
location /i/ {
alias /data/w3/; #localhost/i/test.html ->/data/w3/test.html
}
其他区别:
1、 alias 只能作用在location中,而root可以存在server、http和location中。
2、 alias 后面必须要用 “/” 结束,否则会找不到文件,而 root 则对 ”/” 可有可无。
优先级规则
(=)的优先级最高
匹配(^~)优先级次之。不支持正则表达式。如果有多个location匹配的话,则使用表达式最长的那个
正则表达式类型(~ ~*)的优先级次之
常规字符串匹配,如果有多个location匹配的话,则使用表达式最长的那个
说明
精准匹配,有匹配项,返回结果,结束解析。
前缀匹配,有匹配项,选择最长,返回结果,结束解析。
正则匹配,按正则表达式顺序为准,由上至下一旦匹配成功,返回结果,结束解析
若未结束,继续普通命中,普通命中和前缀普通命中相似,顺序无所谓,按照location表达式的长短来确定命中结果