首页 > 系统相关 >nginx的location与proxy_pass配置超详细讲解及其有无斜杠( / )结尾的区别

nginx的location与proxy_pass配置超详细讲解及其有无斜杠( / )结尾的区别

时间:2023-03-22 21:56:14浏览次数:45  
标签:http uri nginx location 斜杠 pass 匹配 proxy

本文所使用的环境信息如下:

  • windows11 (主机系统)
  • virtual-box-7.0环境下的ubuntu-18.04
  • nginx-1.22.1 (linux)

斜杠结尾之争

实践中,nginx里最常用的指令就是locationproxy_pass了。前者用于为不同请求uri指定不同nginx配置,后者用于匹配的location进行转发(通常是动态内容)。关于二者的配置,有一个老生常谈的话题,那便是:配置的值是否有斜杠结尾,对文件路径查找(或请求转发)行为有哪些影响?相关文章也非常多,且多数粗看一眼,照其行事,也能立即解决问题。鄙人私以为其中部分文章的说法是不严谨的,故特撰此文,以备己查。

结论

不再废话,直接上结论(如果对location和proxy_pass的功能和基本配置还不熟悉,建议先看后面的章节):

  • location
    一般情况下,location指令不会对是否有斜杠结尾这个场景做特殊处理,除非满足以下条件:

    满足以上条件后,也只会对一个特定的uri做特殊处理,这个uri除了没有尾部的斜杠外,正好与location定义的前缀一模一样。对这个特殊的uri的处理方式为:返回一个301重定向,重定向的地址为:原始请求uri + /,也就是说,重定向的地址与Location前缀内容完全相同

    示例配置如下:

    location /films/nature/ { 
        proxy_pass http://film-server;
    }
    

    假定请求的url为http://localhost/films/nature,则location的处理方式为:返回一个301重定向,重定向的地址为http://localhost/films/naure/。与原始请求的唯一差别就是,新的uri地址比原来的uri地址尾部多了一个斜杠 /

    标签:http,uri,nginx,location,斜杠,pass,匹配,proxy
    From: https://www.cnblogs.com/sandgull/p/column-nginx-config_of_location_and_proxy_pass_and_the_

相关文章