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

posted @   天天代码码天天  阅读(17)  评论(0编辑  收藏  举报  
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
点击右上角即可分享
微信分享提示