nginx location块
location块在server块中使用,它的作用是根据客户端请求URL去定位不同的应用。
匹配格式 | 作用 |
---|---|
location = /uri | = 表示精确匹配,只有完全匹配上才能生效 |
location ^~ /uri | ^~ 匹配以某个URL前缀开头的请求,不支持正则表达式 |
location ~ pattern | ~区分大小写的正则匹配 |
location ~* pattern | ~*不区分大小写的正则匹配 |
location /uri | 前缀匹配,不带任何修饰符,但是在正则匹配之后 |
location / | 通用匹配,任何未匹配到其它location的请求都会匹配到,相当于switch中的default |
location @ | 命名空间,不提供常规的请求匹配 |
1、“=”优先级最高
2、如果“=”匹配不到,会和“^~”进行匹配;
3、继而是“~”,如果有多个“~”,则按照在文件里的先后顺序进行匹配;
4、如果还匹配不到,则与“/uri”进行匹配;
5、通用匹配“/”的优先级最低,如果找不到其他配置,就会进行通用匹配;
6、“@”表示命名空间的位置,通常在重定向时,进行匹配,且不会改变URL的原始请求。
前缀匹配时,Nginx 不对 url 做编码,因此请求为 /static/20%/xx,可以被规则 ^~ /static/ /XX 匹配到(注意是空格)
当有匹配成功时候,停止匹配,按当前匹配规则处理请求。
root
location中root指定的只是相对路径,需要和路径结合起来映射地址,比如
location ^~/static/ {
#这里的root需要和路径结合使用,即是映射的文件位置为 /usr/lxw/static
root /usr/lxw/;
index index.html
}
此时我们访问 IP/static/a.css ,那么就会找到 /usr/lxw/static/a.css
alias
alias指定的是绝对路径,不会和location中的路径结合使用,而是直接使用地址映射到文件,比如
location ^~/static/ {
#不会路径结合映射地址,那么这里就会直接映射到/usr/lxw/文件夹下的文件
alias /usr/lxw/;
index index.html
}
如果定义的路径是文件夹,那么需要使用/结尾
proxy_pass
在nginx中配置proxy_pass代理转发时,如果在proxy_pass后面的url加/,表示绝对根路径;如果没有/,表示相对路径,把匹配的路径部分也给代理走。
假设下面四种情况分别用 http://192.168.1.1/proxy/test.html 进行访问。
第一种
location /proxy/ {
proxy_pass http://127.0.0.1/;
}
代理到URL:http://127.0.0.1/test.html
第二种(相对于第一种,最后少一个 / )
location /proxy/ {
proxy_pass http://127.0.0.1;
}
代理到URL:http://127.0.0.1/proxy/test.html
第三种
location /proxy/ {
proxy_pass http://127.0.0.1/lxw/;
}
代理到URL:http://127.0.0.1/lxw/test.html
第四种(相对于第三种,最后少一个 / )
location /proxy/ {
proxy_pass http://127.0.0.1/lxw;
}
代理到URL:http://127.0.0.1/lxwtest.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?