Nginx配置文件location标签的学习笔记
title: Nginx配置文件location标签的学习笔记
date: 2018-11-01 11:57:49
tags:
- Nginx
- 配置文件
- location
- 学习笔记
location [/|=|~|~*|^~] url {}
location @name {}
修饰符
-
/
通配符,如果没有找到任何匹配规则,则执行该项; -
=
表示精确匹配。只有请求的url路径与后面的字符完全匹配时,才会执行; -
~
表示该规则是使用正则表达式,区分大小写 ; -
~*
表示该规则时使用正则表达式,不区分大小写 ; -
^~
表示如果该符号后面的字符是最佳匹配,采用该规则,不再进行后续的查找,该项不是正则表达式;
- location有两种表达形式:前缀字符\正则规则
- 【Nginx配置文件location标签的学习笔记】匹配过程
- 首先检查使用前缀 字符定义的
location
,选择最长匹配项并记录下来; - 如果找到了精确匹配的
location
,也就是使用了=
的location
,则执行该项,结束查找; - 如果没有精确匹配,则开始寻找使用正则表达定义的
location
,如果找到匹配项,则执行,结束查找; - 如果没有找到匹配的正则
location
,则使用前面记录的最长匹配前缀字符location
;
- 首先检查使用前缀 字符定义的
- Tips
- 使用正则表达的
location
按照出现的先后顺序查找,优先执行先匹配到的正则location
; - 使用精确匹配
=
可以提高查找速度;
- 使用正则表达的
location = / {A}
# 使用精确匹配,请求/,则执行A,不再往下查找
location / {B}
# 请求/index.html,首先查找匹配的前缀字符,找到最长匹配是B,继续查找正则表达的location,没有找到正则表达的,则执行最长匹配B
location /user/ {C}
# 请求/user/index.html,首先查找前缀字符,找到最长匹配是C,继续查找正则表达,没有找到正则表达的location,则执行最长匹配C
location ^~ /images/ {D}
# 请求/images/1.jpg ,首先查找前缀字符,找到最长匹配D,因为该location使用了字符^~,所以最佳匹配为D,不再继续查找
location ~* \.(gif|jpg|png)$ {E} # \是转义字符,$表示以某字符结尾
# 请求/user/2.gif,首先查找前缀字符,找到最长匹配C,继续查找正则表达,找到匹配E,则执行E
location @的用法
- 前面我们看到了
location
有2种表达的方式,location @
用来内部重定向,不能用来处理正常的请求; - 用法:
location / { try_files $url $url/ @inside # 当尝试访问url url/时,找不到对应的文件,则重定向到@inside } location @inside { ........ }
- 临时跳转
- 临时需要将原有的url跳转到新的url,可以使用精确匹配,并将其放置在其他location之前
location /admin {return 302 http://newurl/; }
- 访问控制
- 有一些目录为了安全,我们想限制访问,仅允许某些ip地址访问,如需使用此功能,nginx需要安装ngx_http_stus_status_module模块
location /admin { stub_status; # 开启ngx_http_stub_status_module模块; allow 127.0.0.1; allow ip1; allow ip2; deny all; }
- 列出目录
location ^~ /filesys { autoindex on; # 开启目录索引 autoindex_exact_size off; # 默认为on,显示文件的确切大小,单位为byte; # 改为off后,显示文件的大概大小,单位为kb、MB、GB autoindex_localtime on; # 默认为off,显示的文件时间为GMT时间; # 改为on后,显示的文件时间为文件服务器的时间 }
- https://segmentfault.com/a/1190000013267839
- https://segmentfault.com/a/1190000013980557
推荐阅读
- 监控nginx
- Linux|Linux 服务器nginx相关命令
- Nginx|Nginx Tomcat 构造https服务应对苹果要求
- Nginx详细教程
- Nginx进阶(1)——nginx本地代理配置访问node服务
- linux操作集-配置keepalived+nginx实现双机热备
- Day-38nginx(1)
- hadoop三个配置文件的参数含义说明(转)
- Go|Docker后端部署详解(Go+Nginx)
- 后台|NATAPP内网穿透通过nginx实现一个端口访问多个不同端口服务