1. location 参数

location :配置请求的路由,可以使用修饰符或正则表达式。

注意事项:location uri 前边的/不能省略,uri后边的/可以省略

如下内容的优先级从高到低

用于标准 URI 前,要求请求字符串与其精准匹配,成功则立即处理,nginx 停止搜索其他匹配。

1
2
3
4
5
#  只有当访问 www.nginx-test.com/match_all/ 时才会匹配 /usr/share/nginx/html/match_all/index.html
location = /match_all/ {
root /usr/share/nginx/html
index index.html
}

用于标准 URI 前,并要求一旦匹配到就会立即处理,不再去匹配其他的那些个正则 URI,一般用来匹配目录

1
2
3
4
5
# 当访问 www.nginx-test.com/bbs/ 时会匹配上 /usr/share/nginx/html/bbs/index.html
location ^~ /bbs {
root /usr/share/nginx/html;
index index.html index.htm;
}

用于正则 URI 前,表示 URI 包含正则表达式, 区分大小写

1
2
3
4
用于正则 URI 前,表示 URI 包含正则表达式, 区分大小写	# 当访问 www.nginx-test.com/a.jpg 等路径时会去 /usr/share/nginx/images/a.jpg 找对应的资源
location ~ \.(jpeg|jpg|png|svg)$ {
root /usr/share/nginx/images;
}

用于正则 URI 前, 表示 URI 包含正则表达式, 不区分大小写

1
2
3
4
# 当访问 www.nginx-test.com/A.jpg 等路径时会去 /usr/share/nginx/images/A.jpg 找对应的资源
location ~* \.(jpeg|jpg|png|svg)$ {
root /usr/share/nginx/images;
}

location 后没有参数直接跟着 标准 URI,表示前缀匹配,代表跟请求中的 URI 从头开始匹配

1
2
3
location / {
root /usr/share/nginx/html
}

2. root 参数

root : 指令用于指定一个文件系统路径和静态资源文件的根目录。

  • 语法
1
2
3
4
location / {
# root路径+location路径
root path
}
  • 示例
1
2
3
location ^~ /test {
root /opt
}
  • 请求示例
1
http://x.x.x.x/test
  • 实际访问目录
1
/opt/test

3. alias 参数

alias :指令用于指定文件系统路径,但它与 root 指令有所不同。

指定文件路径,使用 alias 时,目录后面一定要加 /

  • 语法
1
2
3
4
location / {
# root路径+location路径
alias path
}
  • 示例
1
2
3
location ^~ /test-alias/ {
alias /opt/test/alias/;
}
  • 请求示例
1
http://x.x.x.x/test-alias/index.html
  • 实际访问目录
1
/opt/test/alias/

4. proxy_pass 修饰符

反向代理配置,用于代理请求,适用于前后端负载分离或多台机器、服务器负载分离的场景。

匹配到location配置的URL路径后,转发请求到【proxy_pass】配置的URL。

是否会附加location配置路径与【proxy_pass】配置的路径后是否有”/“有关,有”/“则不附加。

具体博文请参考 Nginx-代理转发(四)

5. 参考博文

什么是NGINX的动静分离;什么是负载均衡