nginx虚拟路径中proxy_pass对后端请求的影响

假设nginx中的配置是这样的:


server {

listen 80;

server_name x.x.x.x;

. . . . . .

location /subdir

{

proxy_pass http://y.y.y.y;

}

}

那么,当用户请求http://x.x.x.x/subdir/other时,匹配到该区块,nginx反向代理到后端时会保留虚拟路径。nginx实际向后端发起的请求URL为http://y.y.y.y/subdir/other。

假设nginx中的配置是这样的:


server {

listen 80;

server_name x.x.x.x;

. . . . . .

location /subdir

{

proxy_pass http://y.y.y.y/;

}

}

那么,当用户请求http://x.x.x.x/subdir/other时,匹配到该区块,由于proxy_pass中有指定后端URI路径,nginx代理请求到后端时不会保留虚拟路径。nginx实际向后端发起的请求URL为http://y.y.y.y//other。

假设nginx中的配置是这样的:


server {

listen 80;

server_name x.x.x.x;

. . . . . .

location /subdir

{

proxy_pass http://y.y.y.y/upstream_subdir;

}

}

那么,当用户请求http://x.x.x.x/subdir/other时,匹配到该区块,由于proxy_pass中有指定后端URI路径,nginx代理请求到后端时不会保留虚拟路径。nginx实际向后端发起的请求URL为http://y.y.y.y/upstream_subdir/other。

综合上述三个示例可以发现,问题的关键就在于proxy_pass指令中是否有指定后端服务器的URI,这决定了nginx代理请求到后端时是否会保留location中的虚拟路径。

当将后端服务器写成upstream方式时,效果也是一样的。比如:


upstream backend {

server y.y.y.y:80;

}

server {

listen 80;

server_name x.x.x.x;

. . . . . .

location /subdir

{

proxy_pass http://backend/upstream_subdir;

}

}

当用户请求http://x.x.x.x/subdir/other时,nginx实际向后端发起的请求URL仍然为http://y.y.y.y/upstream_subdir/other。

原文地址:http://blog.51cto.com/techsnail/2138564

时间: 2024-10-11 22:28:19

nginx虚拟路径中proxy_pass对后端请求的影响的相关文章

虚拟路径的转换

using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; public partial class _Default : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { } p

Nginx虚拟主机多server_name的顺序问题

Nginx虚拟主机多server_name的顺序问题  大 | 中 | 小  [ 2008-11-28 11:27 | by 张宴 ] [文章作者:张宴 本文版本:v1.0 最后修改:2008.11.28 转载请注明原文链接:http://blog.zyan.cc/post/382/] 今天在配置Nginx + PHP + MediaWiki中,发现一个问题:MediaWiki所在的Nginx虚拟主机绑定了多个域名,但是不管通过什么域名访问MediaWiki首页,都会被跳转到其中的一个域名上.N

ngxin常用配置--nginx之proxy_pass代理后端https请求完全解析

前言 本文解释了怎么对nginx和后端服务器或代理服务器进行加密http通信 内容提纲 前提条件 获取SSL服务器证书 获取SSL客户端证书 配置nginx 配置后端服务器 完整示例 前提条件 nginx源码或nginx plus源码 一个代理服务器或一个代理服务器组 SSL证书和私钥 获取SSL服务器证书 你可以从一个可信任证书颁发机构(CA)购买一个服务器证书,或者你可以使用openssl库创建一个内部CA签名,并且给自己颁发证书.这个服务器端证书和私钥需要部署在后端的每一个服务器上. 你还

nginx配置虚拟路径下载文件(.apk)

公司将安卓apk文件放到服务器上,实现用户点击链接并下载 nginx version 1.14.1 nginx配置修改 server { listen 80; server_name localhost; location /apk/ { alias /data/app/apks/; autoindex on; default_type application/octet-stream; } } alias指定虚拟目录 比如nginx的域名为www.test.com 访问www.test.com

jsp网页在浏览器中不显示图片_eclipse环境下配置tomcat中jsp项目的虚拟路径

遇到的问题是这种,在jsp网页中嵌入了本地的图片,由于会用到上传到服务器的图片,所以没有放到项目里面,而是把全部图片单独放到一个文件夹里,然后打算使用绝对路径把要显示的图片显示出来.比方是放在了E盘的uploadPhotos文件夹里.可是在使用绝对路径显示时.代码例如以下: <img width="200" height="150" src="E:\uploadPhotos\DSC00216.jpg" border="1"

tomcat配置虚拟路径,可以解决实际开发中测试时前端访问后台电脑上的图片的问题

首先电脑上要已经安装好tomcat,安装tomcat的教程可以从网上找到很多.这里就不赘述了. 一般开始做一个web项目后,会涉及到用户头像,商品图片等信息,这些图片保存在项目中不方便,于是我将选择保存在某个磁盘的一个文件夹中,例如 D:/img 这样的话,使用全路径会相应的有些不方便,于是我就选择在tomcat中配置虚拟路径,打开tomcat目录 找到他的配置文件夹conf,然后打开,看见如下所示 然后用某个文本编辑器(记事本格式乱,不建议使用)打开 server.xml 文件,在最后找到 <

tomcat中虚拟主机 、 web应用 、虚拟路径映射相关问题

1.虚拟主机:tomcat中可以配置管理多个网站,外界在访问这些网站时,并不知道这些网站是运行在同一个tomcat中的,感觉起来就像他们各自运行在各自的虚拟出来的主机中一样,所以将一个网站交给tomcat去管理的过程称为为tomcat配置一台虚拟主机. 2.web应用:一个虚拟主机包含着许多web资源,但这些web资源不能直接交给虚拟主机管理,需要按照 功能将web资源按照一定的目录结构组织成web应用再交给虚拟主机管理. 3.虚拟路径映射:将web应用交给虚拟主机管理,为web应用真实路径配置

python爬虫:解决请求路径中含义中文或特殊字符

一.解决请求路径中含义中文或特殊字符(/n,/t等): 1 httpurl=urllib.parse.quote(new_url, safe=string.printable)  注意:new_url必须是只有一个单引号或者双引号,如果是下面这个既有单引号,也有双引号,就会出现urlerror: new_url='"http://news.sina.com.cn/o/2017-06-08/doc-ifyfzaaq5698972.shtml"'

【IDEA】IDEA中配置tomcat虚拟路径的两种方法

首先要确保使用的是本地的tomcat服务器,而不是maven插件. -------------------------第一种:使用IDEA工具自动配置(推荐这种)---------------------------- 选中本地需要配为虚拟路径的文件夹 编写项目名字: 测试:(例如访问我下面的文件:     G:\jwxt\teachingFile\5b66bbdb54494fc59710dcc2f7ff884e.pdf) --------------第二种:使用tomcat的manager项目