Nginx中的location路径映射问题

 更新时间:2024年08月09日 16:04:51   作者:say荣帅  
这篇文章主要介绍了Nginx中的location路径映射问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

Nginx location路径映射

nginx 配置 proxy_pass时可以实现URL路径的部分替换

1.proxy_pass的目标地址后,默认不带/,表示只代理域名,url和querystring部分不会变(把请求的path拼接到proxy_pass目标域名之后作为代理的URL)

2.目标地址后带/,则表示把path中location匹配成功的部分剪切掉之后再拼接到proxy_pass目标地址

例子:

server {
        location  /xxx {
                proxy_pass http://server_url;
        }

       location  /xxx {
                proxy_pass http://server_url/;
        }
 }

比如请求 域名/xxx/index.html

实际代理的目标url分别是

  • proxy_pass不带/:http://server_url/xxx/index.html(直接拼接到路径后)
  • proxy_pass带/:http://server_url/index.html (xxx被去掉)

Nginx的location匹配规则

Nginx的location语法

location [=|~|~*|^~] /uri/ { … }
  • = 严格匹配。如果请求匹配这个location,那么将停止搜索并立即处理此请求
  • ~ 区分大小写匹配(可用正则表达式)
  • ~* 不区分大小写匹配(可用正则表达式)
  • !~ 区分大小写不匹配
  • !~* 不区分大小写不匹配
  • ^~ 如果把这个前缀用于一个常规字符串,那么告诉nginx 如果路径匹配那么不测试正则表达式

示例1:

location  / { }

匹配任意请求

示例2:

location ~* .(gif|jpg|jpeg)$ {
    rewrite .(gif|jpg|jpeg)$ /logo.png;
}

不区分大小写匹配任何以gif、jpg、jpeg结尾的请求,并将该请求重定向到 /logo.png请求

location ~ ^.+\.txt$ {
    root /usr/local/nginx/html/;
}

区分大小写匹配以.txt结尾的请求,并设置此location的路径是/usr/local/nginx/html/。

也就是以.txt结尾的请求将访问/usr/local/nginx/html/ 路径下的txt文件

alias与root的区别

  • root 实际访问文件路径会拼接URL中的路径
  • alias 实际访问文件路径不会拼接URL中的路径

示例如下:

location ^~ /sta/ {  
   alias /usr/local/nginx/html/static/;  
}
  • 请求:http://test.com/sta/sta1.html
  • 实际访问:/usr/local/nginx/html/static/sta1.html 文件
location ^~ /tea/ {  
   root /usr/local/nginx/html/;  
}
  • 请求:http://test.com/tea/tea1.html
  • 实际访问:/usr/local/nginx/html/tea/tea1.html 文件

last 和 break关键字的区别

(1)last 和 break 当出现在location 之外时,两者的作用是一致的没有任何差异

(2)last 和 break 当出现在location 内部时:

  • last 使用了last 指令,rewrite 后会跳出location 作用域,重新开始再走一次刚才的行为
  • break 使用了break 指令,rewrite后不会跳出location 作用域,它的生命也在这个location中终结

permanent 和 redirect关键字的区别

  • rewrite … permanent 永久性重定向,请求日志中的状态码为301
  • rewrite … redirect 临时重定向,请求日志中的状态码为302

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Nginx中虚拟主机与指定访问路径的设置方法讲解

    Nginx中虚拟主机与指定访问路径的设置方法讲解

    这篇文章主要介绍了Nginx中虚拟主机与指定访问路径的设置方法讲解,也是在同一个Nginx程序中部署多个站点的基本方法,需要的朋友可以参考下
    2016-03-03
  • Nginx文件已经存在全局反向代理问题排查记录

    Nginx文件已经存在全局反向代理问题排查记录

    反向代理除了实现负载均衡之外,还提供如缓存来减少上游服务器的压力,下面这篇文章主要给大家介绍了关于Nginx文件已经存在全局反向代理问题排查的相关资料,需要的朋友可以参考下
    2022-07-07
  • Nginx安装及具体应用小结

    Nginx安装及具体应用小结

    Nginx 动静分离简单来说就是把动态请求跟静态请求分开,Nginx 处理静态请求,Tomcat处理动态请求,这篇文章主要介绍了Nginx安装及具体应用小结,需要的朋友可以参考下
    2024-02-02
  • nginx代理的缓存配置

    nginx代理的缓存配置

    代理缓存能够有效提高网站访问速度和服务器性能,本文详细介绍了使用nginx的ngx_http_proxy_module模块配置代理缓存,包括设置缓存路径、配置代理服务等,感兴趣的可以了解一下
    2024-09-09
  • 详解nginx rewrite和根据url参数location

    详解nginx rewrite和根据url参数location

    本篇文章主要是介绍了nginx rewrite和根据url参数location,有兴趣的同学可以了解以下。
    2016-11-11
  • nginx限流及配置管理实战记录

    nginx限流及配置管理实战记录

    流量限制(rate-limiting)是Nginx中一个非常实用,却经常被错误理解和错误配置的功能,下面这篇文章主要给大家介绍了关于nginx限流及配置管理的相关资料,文中通过图文介绍的非常详细,需要的朋友可以参考下
    2022-04-04
  • Nginx图片防盗链配置实例

    Nginx图片防盗链配置实例

    这篇文章主要介绍了Nginx图片防盗链配置实例,并对代码做了详细的说明,让你充分理解配置的意图,需要的朋友可以参考下
    2014-07-07
  • 使用nginx配置访问wgcloud的方法

    使用nginx配置访问wgcloud的方法

    这篇文章主要介绍了使用nginx配置访问wgcloud的方法,在这里大家需要记得agent的配置文件项serverUrl的80端口也要写上,需要的朋友可以参考下
    2021-06-06
  • 关于nginx+uWsgi配置遇到的问题的解决

    关于nginx+uWsgi配置遇到的问题的解决

    uWSGI 是在像 nginx 、 lighttpd 以及 cherokee 服务器上的一个部署的选择,本篇文章主要介绍了关于nginx+uWsgi配置遇到的问题的解决,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-03-03
  • Nginx捕获并自定义proxy_pass返回的错误问题

    Nginx捕获并自定义proxy_pass返回的错误问题

    这篇文章主要介绍了Nginx捕获并自定义proxy_pass返回的错误问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-06-06

最新评论