我们在配置nginx时,会看到默认的Nginx配置规则内有很多的location,这些location每一段就代表一个规则,location的编写方法需要会一点正则,不会的可以继续看我的站长站为大家带来的location新手入门教程。
完整nginx配置规则如下:
server{ listen 80; server_name localhost; location / { } location /abc{ }...}
location:用来设置请求的URI
默认值 —
语法 location [ = | ~ | ~* | ^~ |@ ] uri{...}
位置 server,location
uri变量是待匹配的请求字符串,可以不包含正则表达式,也可以包含正则表达式,那么nginx服务器在搜索匹配location的时候,是先使用不包含正则表达式进行匹配,找到一个匹配度最高的一个,然后在通过包含正则表达式的进行匹配,如果能匹配到直接访问,匹配不到,就使用刚才匹配度最高的那个location来处理请求。
属性介绍:
不带符号,要求必须以指定模式开始
server { listen 80; server_name 127.0.0.1; location /abc{ default_type text/plain;return 200 "access success"; } }
以下访问都是正确的
http://192.168.200.133/abc http://192.168.200.133/abc?p1=TOM http://192.168.200.133/abc/ http://192.168.200.133/abcdef
= : 用于不包含正则表达式的uri前,必须与指定的模式精确匹配
server { listen 80; server_name 127.0.0.1; location =/abc{ default_type text/plain;return 200 "access success"; } }
可以匹配到
http://192.168.200.133/abc http://192.168.200.133/abc?p1=TOM
匹配不到
http://192.168.200.133/abc/ http://192.168.200.133/abcdef
~ : 用于表示当前uri中包含了正则表达式,并且区分大小写
~*: 用于表示当前uri中包含了正则表达式,并且不区分大小写
换句话说,如果uri包含了正则表达式,需要用上述两个符合来标识
server {listen 80; server_name 127.0.0.1; location ~^/abc\w${ default_type text/plain;return 200 "access success"; } } server {listen 80; server_name 127.0.0.1; location ~*^/abc\w${ default_type text/plain;return 200 "access success"; } }
^~: 用于不包含正则表达式的uri前,功能和不加符号的一致,唯一不同的是,如果模式匹配,那么就停止搜索其他模式了。
server { listen 80; server_name 127.0.0.1; location ^~/abc{ default_type text/plain;return 200 "access success"; } }
设置请求资源的目录root / alias
nginx
2022-11-28 19Nginx是一个高性能的HTTP和反向代理web服务器,也是站长常见的网站环境之一.nginx凭借高性能低消耗近几年越来越多站长使用,学习好nginx也成为站长必备知识点.我的...
- 开源的Nginx配置文件解析工具 [2024-09-08]
- Nginx常用301重定向代码整理 [2024-02-07]
- Nginx限制国内IP用户访问网站 [2024-01-05]
- nginx判断某个目录不跳转https,其他目录强制跳转https配置规则 [2024-01-03]
- nginx实现子域名301跳转到另外一个域名对应子域名 [2023-12-29]