location的作用是什么?
每个server中都需要配置location,通过location匹配域名后内容,再通过location响应同一个域名下不同请求
location语法 location[=|~*|^~] uri { ... }
location 指令
[=|~*|^~] 匹配标识
{...} 匹配URI后执行的配置段
uri匹配的的域名后面url,去除域名的url段
uri 可以是普通字符串地址路径或者正则表达式:
~* 不区分大小写
~ 区分大小写
^~ 只做字符匹配不做正则匹配
= 精确匹配
/ 表示起始域名或者ip地址
这里有顺序先后,= 是最优先的,其他都没匹配到默认匹配 /
第一名 =
第二名 匹配常规字符串,不做正则匹配
第三名 正则匹配
第四名 匹配常规字符串,如果有正则则优先匹配正则
第五名 所有的location都不能匹配后的默认匹配
location中有两个参数:
root # 表示找html页面的根目录
index # 只是返回符合这个location的内容
对于网页url,会首先匹配域名servername,然后再匹配location, 无论是servername还是location都是按配置上下顺序依次匹配,一旦匹配到内容,不再往下匹配,但是location中 = 的匹配优先级最高
相关配置:
server { listen 80; server_name bbs.etiantian.org; location ^~ /document/ { # 只匹配字符 return 201; } location ~* .(jpg|gif|png)/?$ { # 匹配图片内容 return 200; } location / { # 默认域名或ip,其他都没匹配上,返回这个默认 return 404; } }