nginx proxy_pass指令’/’使用注意事项

1. proxy_pass配置说明

不带/

代码如下:

location /test/
{
proxy_pass http://t6:8300; 
}

带/

代码如下:

location /test/ 

                proxy_pass http://t6:8300/; 
 }

上面两种配置,区别只在于proxy_pass转发的路径后是否带 “/”

针对情况1,如果访问url = http://server/test/test.jsp,则被nginx代理后,请求路径会便问http://proxy_pass/test/test.jsp,将test/ 作为根路径,请求test/路径下的资源

针对情况2,如果访问url = http://server/test/test.jsp,则被nginx代理后,请求路径会变为 http://proxy_pass/test.jsp,直接访问server的根资源

2. 典型实例

同一个域名下,根据根路径的不同,访问不同应用及资源
例如:A应用 http://server/a  ; B应用 http://server/b

A 应用和 B应用共同使用访问域名 http://server;
配置nginx代理转发时,如果采用情况2的配置方式,则会导致访问http://server/a/test.jsp时,代理到http://proxy_pass/test.jsp,导致无法访问到正确的资源,页面中如果有对根资源的访问,也都会以http://server 做为根路径访问资源,导致资源失效

针对此类情况,需要采用情况1,分别针对不用应用,设置不同的根资源路径,并保证代理后的根路径也依然有效

(0)

相关推荐

  • Nginx服务器的反向代理proxy_pass配置方法讲解

    就普通的反向代理来讲 Nginx的配置还是比较简单的,如: location ~ /* { proxy_pass http://127.0.0.1:8008; } 或者可以 location / { proxy_pass http://127.0.0.1:8008; } Apache2的反向代理的配置是: ProxyPass /ysz/ http://localhost:8080/ 然而,如果要配置一个相对复杂的反向代理 Nginx相对Apache2就要麻烦一些了 比如,将url中以/wap/开

  • nginx proxy_pass反向代理配置中url后加不加/的区别介绍

    前言 nginx作为web服务器一个重要的功能就是反向代理.nginx反向代理的指令不需要新增额外的模块,默认自带proxy_pass指令,只需要修改配置文件就可以实现反向代理. 而在日常的web网站部署中,经常会用到nginx的proxy_pass反向代理,有一个配置需要弄清楚:配置proxy_pass时,当在后面的url加上了/,相当于是绝对根路径,则nginx不会把location中匹配的路径部分代理走;如果没有/,则会把匹配的路径部分也给代理走(这样配置可以参考这篇文章). 下面举个小实

  • nginx proxy_pass指令’/’使用注意事项

    1. proxy_pass配置说明 不带/ 复制代码 代码如下: location /test/ { proxy_pass http://t6:8300;  } 带/ 复制代码 代码如下: location /test/  {                  proxy_pass http://t6:8300/;   } 上面两种配置,区别只在于proxy_pass转发的路径后是否带 "/" 针对情况1,如果访问url = http://server/test/test.jsp,则被

  • 详解Nginx proxy_pass的一个/斜杠引发的血案

    背景 一个nginx的server模块下需要proxy到两个server,所以就通过location的不同路径来区分转发到不同的服务器上. 一开始是这么写的 location / { proxy_pass http://server1/; } location /index { proxy_pass http://server2/; } 但是忘记了server1上有个服务路径是/indexNew,结果就被proxy到了server1,出现404问题,然后紧急修改配置如下: location /i

  • 详解nginx location指令

    location 介绍 location是Nginx中的块级指令(block directive),,location指令的功能是用来匹配不同的url请求,进而对请求做不同的处理和响应,这其中较难理解的是多个location的匹配顺序,本文会作为重点来解释和说明. 开始之前先明确一些约定,我们输入的网址叫做请求URI,nginx用请求URI与location中配置的URI做匹配. Nginx的HTTP配置主要包括三个区块,结构如下: http { //这个是协议级别 include mime.t

  • nginx 配置指令之location使用详解

    目录 前言 配置策略 具体属性介绍 Nginx是支持世界上所有网站三分之一的Web服务器.因为轻巧,模块化,用户友好的配置格式以强大的反向代理能力,Nginx迅速取代其他Web服务器成了互联网上最常用Web服务器之.作为一个门户和对外暴露的入口,Nginx也是Web服务在保障企业服务在性能和安全方面功不可没,虽然Nginx也暴露过一些漏洞(比如CVE-2013-4547,CVE-2017-7529,CVE-2018-16843/16844,CVE-2019-9516和CVE-2020-12440

  • nginx配置指令之server_name的具体使用

    目录 前言 server_name指令 精确匹配配置 通配符模式配置 正则表达式配置 server_name与host匹配优先级如下: 如果都不匹配 前言 作为nginx的http模块中的重要指令,对于使用nginx的同学来说,有必要做深入的了解: server_name指令 用于设置虚拟主机服务名称,如:127.0.0.1 . localhost .域名[www.baidu.com | www.jd.com] 关于 server_name 的配置方式有三种,分别是: 精确匹配 通配符匹配 正则

  • Nginx Location指令URI匹配规则详解小结

    1.介绍 location指令是http模块当中最核心的一项配置,根据预先定义的URL匹配规则来接收用户发送的请求,根据匹配结果,将请求转发到后台服务器.非法的请求直接拒绝并返回403.404.500错误处理等. 2.location指令语法 location [=|~|~*|^~|@] /uri/ { - } 或 location @name { - } 3.URI匹配模式 location指令分为两种匹配模式: 1> 普通字符串匹配:以=开头或开头无引导字符(-)的规则 2> 正则匹配:以

  • Nginx配置指令location匹配符优先级和安全问题

    最近一直在做location 配置,遇到优先级别问题(如果配置不当可能存在安全隐患哦),以下是个人学习一点体会. 一. location 的匹配符1.等于匹配符:=等于匹配符就是等号,特点可以概括为两点:精确匹配不支持正则表达式2.空匹配符空匹配符的特点是:匹配以指定模式开始的 URI不支持正则表达式3.正则匹配符:~正则匹配符是可以使用正则表达式的匹配符.不过这里要强调的是,一般来说~是指:区分大小写的正则匹配而~*表示:不区分大小写的正则匹配但是对于一些对大小写不敏感的操作系统,这两者没有区

  • nginx try_files指令判断文件是否存在实例

    现在有这样一个需求,网站根目录下有静态文件,static目录下也有静态文件,static目录下的静态文件是程序批量生成的,我想让nginx在地址不变的前提下优先使用static目录里面的文件,如果不存在再使用根目录下的静态文件,比如访问首页http://example.com/index.html则nginx返回/static/index.html,如果不存在返回/index.html. 经过一番研究可以用if指令实现,关键配置如下,这条配置需要放到靠前的位置 复制代码 代码如下: if (-e

  • Nginx Location 指令简明指南

    Nginx 中的 Location 指令 是NginxHttpCoreModule中重要指令.Location 指令比较简单,但却是配置 Nginx 过程中不得不去了解的. Location 指令,是用来为匹配的 URI 进行配置,URI 即语法中的"/uri/",可以是字符串或正则表达式.但如果要使用正则表达式,则必须指定前缀. 一.基本语法 1.location [=|~|~*|^~|@] /uri/ { - } [=] 表示精确匹配,如果找到,立即停止搜索并立即处理此请求. [~

随机推荐