首页 > 系统相关 >收藏:加不加「/」?Nginx location 路径与 proxy_pass 的规律

收藏:加不加「/」?Nginx location 路径与 proxy_pass 的规律

时间:2024-09-23 14:35:15浏览次数:7  
标签:0.1 加不加 nginx URL Nginx location pass proxy

从一张梗图开始

起源于在 TG 某个频道看到的一张图:

图下面的评价是:Nginx is so hard!

实际上这张图描述的是 nginx location 的路径配置,及 location 代码块中 proxy_pass 的路径关系,属于 nginx 应用中路径转发的知识。例如图中 Case 1 对应的代码块应该为:

location /test1 {
    proxy_pass http://127.0.0.1:8080;
}

 

 

其中 127.0.0.1:8080 是运行的一个后端服务。

例如域名为example.com,那么我在域名后加上 Test URL:example.com/test1/abc/test,那么我的后端服务接收到的路径将是:/test1/abc/test

咋一看似乎完全没有规律,其实之前在一些 nginx 实践中,我个人也深受这个问题的困扰。网上许多文章也并没有详细地解释这个问题。

但把这张梗图和一位朋友交流后,发现了其中的规律。

规律

重点在于 proxy_pass URL 的 IP(域名)、端口后是否有加东西。

如果 proxy_pass URL 的 IP、端口后没加东西

例如:proxy_pass 为http://127.0.0.1:8080,属于没加东西的,而http://127.0.0.1:8080/http://127.0.0.1:8080/app1http://127.0.0.1:8080/app1/这些都归为一类,属于有加东西的。

那么,将 nginx 接收到的 URL(即图中的 Test URL),原封不动地直接加到 proxy_pass URL 后面,就成为了后端程序接收到的路径。

图中的 Case 1 3 9 都是这种情况。

当然,前提是 Test URL 需要与 location 后声明的表达式本身匹配。

如果 proxy_pass URL 的 IP、端口后有加东西

即使是加了一个「/」,也叫有加东西。

如果是这种情况,则进行如下操作:

  1. 将 nginx 接收到的 URL(即图中的 Test URL)中删掉 nginx location 的前缀。
  2. 将上一步得到的字符串直接加到 proxy_pass URL 后面。
  3. 上一步得到的字符串 IP、端口后面的部分,就是后端程序接收到的路径。

例如在 Case 2 中:

Test URL 是/test2/abc/test,nginx location 是/test2。那么将 Test URL 中去掉 nginx location 的部分即为:/abc/test。而 proxy_pass URL 为http://127.0.0.1:8080/,直接加到这后面,得到http://127.0.0.1:8080//abc/test。取 IP、端口后面的部分,为://abc/test。这也就是后端程序接收到的路径中会有两个「/」的原因。

可以自行用这个规律套一下后面几个 Case,都能够符合。

Licensed under CC BY-NC-SA 4.0

原文链接 https://blog.skyju.cc/post/nginx-proxy-pass-and-paths/

标签:0.1,加不加,nginx,URL,Nginx,location,pass,proxy
From: https://www.cnblogs.com/timseng/p/18427018

相关文章

  • Nginx反向代理
    前言    Nginx是互联网应用的一层网关,是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP代理服务器。它最初是由俄罗斯的伊戈尔·赛索耶夫(IgorSysoev)在2002年开发的,目的是为了解决C10K问题(即同时处理10000个客户端连接的问题)。Nginx以其高稳定性、丰富的功......
  • Keepalived 和 HAProxy的主要区别对比
    Keepalived和HAProxy(HighAvailabilityProxy)都是用于构建高可用性和负载均衡服务的重要工具,但它们的设计目标和主要功能有所不同。主要区别1.功能定位HAProxy:主要用于负载均衡,可以将客户端的请求分发到不同的后端服务器,同时提供健康检查等功能。HAProxy支持多种负载均衡算法,如......
  • Nginx 配置HTTPS
    HTTPS是以安全为目标的HTTP通道,简单讲是HTTP的安全版,即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL。在Nginx中,配置HTTPS也非常的简单,我们首先需要准备好与我们域名关联的HTTPS证书,接着,再配置对应的证书目录即可。Nginx配置HTTPS的详细......
  • dmpushproxy.dll文件丢失导致程序无法运行问题
    其实很多用户玩单机游戏或者安装软件的时候就出现过这种问题,如果是新手第一时间会认为是软件或游戏出错了,其实并不是这样,其主要原因就是你电脑系统的该dll文件丢失了或没有安装一些系统软件平台所需要的动态链接库,这时你可以下载这个dmpushproxy.dll文件(挑选合适的版本文件)把......
  • Nginx 中 proxy_pass 末尾斜杠的奥秘
    一、proxy_pass的类型概述Nginx的官网将proxy_pass分为两种类型:不带URI方式和带URI方式。不带URI方式只包含IP和端口号,例如proxy_passhttp://localhost:8080。而带URI方式在端口号之后有其他路径,包括只有单个“/”的,如proxy_passhttp://localhost:8080/,以及其......
  • 在 NGINX 上托管 Angular 应用程序的终极指南
    在nginx服务器上托管angular应用程序可以增强性能,提供更好的安全性,并为生产环境提供更轻松的配置。以下是在nginx上部署angular应用程序的分步指南。先决条件已安装nginx:确保您的服务器上安装了nginx。您可以使用以下命令将其安装在基于linux的系统上:狂欢sudoaptupd......
  • web架构-nginx负载均衡
    nginx的负载均衡Nginx是一个广泛使用的反向代理服务器,能够高效地实现负载均衡。负载均衡的核心作用是将来自客户端的请求分发到多个后端服务器上,从而平衡每台服务器的压力。通过Nginx,我们可以实现多种负载均衡算法,如轮询、IP哈希等。vi/etc/nginx/nginx.conf插入http的下一......
  • nginx: 按ip地址限流
    一,以固定的速度提供服务语法:例子limit_req_zone$binary_remote_addrzone=test:10mrate=2r/s;server{location/{limit_reqzone=test;}}语法:imit_req_zone用于设置限流和共享内存区域的参数,格式为:limit_req_zonekeyzonerate。key: 定义限流对......
  • 使用 Nginx 搭建 Webdav 服务
    使用Nginx搭建Webdav服务一、自签名根证书1.生成根证书密钥opensslgenrsa-out./root.key20482.生成根证书opensslreq-x509-new-key./root.key-out./root.pem-days365交互信息CountryName(2lettercode)[]:CNStateorProvinceName(fullname)......
  • Nginx配置详解
    #nginx进程数,建议设置为等于CPU总核心数。worker_processes1;#事件区块开始events{#单个进程最大连接数(最大连接数=连接数*进程数)#根据硬件调整,和前面工作进程配合起来用,尽量大,但是别把cpu跑到100%就行。每个进程允许的最多连接数,理论上每台nginx服务器的最大连......