proxy_pass转发路径

一、引言

在nginx中配置proxy_pass时,proxy_pass后面的路径最后面加“/”和不加“/”会有所区别。加“/”时,nginx不会代理location部分,不加“/”时,nginx会同时代理location部分。下面通过实验来证明。

二、实验

实验环境简要说明:

    node1为httpd服务器(172.16.47.101)

    node2为客户端(172.16.47.102)

    node3为nginx代理服务器,自身不对外提供web服务(172.16.47.103)

以下四个例子都是通过http://172.16.47.103/admin/index.html这个地址来访问。

node1网站目录结构如下:每个目录下面的index.html页面的内容都是该页面相对于/var/www/的路径。

[root@node1 /var/www/html]# tree
.
├── abc
│   ├── admin
│   │   └── index.html
│   └── index.html
├── abcindex.html
├── admin
│   └── index.html
└── index.html

3 directories, 5 files
[root@node1 /var/www/html]#

1.第一种情况:

location /admin/ {
       proxy_pass      http://172.16.47.101/;
    }

会被代理到http://172.16.47.103/index.html,访问结果如下

blob.png

2.第二种情况:(注意,相对于第一种情况,路径后面少了一个“/”)

 location /admin/ {
        proxy_pass      http://172.16.47.101;
    }

会被代理到http://172.16.47.103/admin/index.html,访问结果如下

blob.png

3.第三种情况:

location /admin/ {
        proxy_pass      http://172.16.47.101/abc/;
    }

会被代理到http://172.16.47.103/abc/index.html,访问结果如下

blob.png

3.第四种情况:(注意,相对于第三种情况,路径后面少了一个“/”)

location /admin/ {
        proxy_pass      http://172.16.47.101/abc;
    }

会被代理到http://172.16.47.103/abcindex.html,访问结果如下

blob.png

以上,proxy_pass后面的路径最后面加“/”和不加“/”在写法上,差别很小,很多人没写时会没留意到,但带来的结果却大不一样,在使用中千万要留心。

原创文章,作者:Lurker,如若转载,请注明出处:http://www.178linux.com/66487

(1)
LurkerLurker
上一篇 2017-01-12
下一篇 2017-01-13

相关推荐

  • Linux 基础以及相关基础命令

    1.计算机的组成 计算机由5大部分组成,cpu(运算器,控制器)输入单元,输出单元,内存。  运算器:负责数据的运算  控制器:负责各主件之间的协调控制  输入单元:指令的输入  输出单元:计算结果的输出  内存:为cpu需要运算的数据提供存储 2 linux 常见的发行版   Debian :ub…

    Linux干货 2016-09-14
  • bash的基础特性[更新中]

    2、bash的工作特性之命令执行状态返回值和命令行展开所涉及的内容及其示例演示。
    3、请使用命令行展开功能来完成以下练习:
    (1)、创建/tmp目录下的:a_c, a_d, b_c, b_d
    (2)、创建/tmp/mylinux目录下的:
    mylinux/
    ├── bin
    ├── boot
    │   └── grub
    ├── dev
    ├── etc
    │   ├── rc.d
    │   │   └── init.d
    │   └── sysconfig
    │   └── network-scripts
    ├── lib
    │   └── modules
    ├── lib64
    ├── proc
    ├── sbin
    ├── sys
    ├── tmp
    ├── usr
    │   └── local
    │   ├── bin
    │   └── sbin
    └── var
    ├── lock
    ├── log
    └── run
    5、如何定义一个命令的别名,如何在命令中引用另一个命令的执行结果?
    6、显示/var目录下所有以l开头,以一个小写字母结尾,且中间至少出现一位数字(可以有其它字符)的文件或目录。
    7、显示/etc目录下,以任意一个数字开头,且以非数字结尾的文件或目录。
    8、显示/etc目录下,以非字母开头,后面跟了一个字母以及其它任意长度任意字符的文件或目录。
    9、在/tmp目录下创建以tfile开头,后跟当前日期和时间的文件,文件名形如:tfile-2016-05-27-09-32-22。
    10、复制/etc目录下所有以p开头,以非数字结尾的文件或目录到/tmp/mytest1目录中。
    11、复制/etc目录下所有以.d结尾的文件或目录至/tmp/mytest2目录中。
    12、复制/etc/目录下所有以l或m或n开头,以.conf结尾的文件至/tmp/mytest3目录中。

    2018-03-17
  • 条件选择if语句

    单分支的if语句 if 判断条件; then 条件为真的分支代码 fi       单分支if结构的执行流程:首先判断条件测试操作的结果,如果返回值为0表示条件成立,则执行then后面的命令序列,一直到遇见fi为止表示结束,继续执行其他脚本代码;如果返回不为0,则忽略then后面的命令序列,直接跳至fi行以后执行其他脚…

    Linux干货 2016-08-16
  • LVS 工作模型和调度算法

    简介   LVS是Linux Virtual Server的简写,意即Linux虚拟服务器,是一个虚拟的服务器集群系统。本项目在1998年5月由章文嵩博士成立,是中国国内最早出现的自由软件项目之一。 LVS是四层负载均衡,也就是说建立在OSI模型的第四层——传输层之上,传输层上有我们熟悉的TCP/UDP,LVS支持TCP/UDP的负载均衡 &nbs…

    Linux干货 2016-12-19
  • Oracle 11G 安装图解

    Oracle 11G 安装图解 wmd-preview h1 { color: #0077bb; /* 将标题改为蓝色 */ } Oracle 11G 安装图解 oracle Oracle 介绍   Oracle Database,又名Oracle RDBMS,或简称Oracle 是甲骨文公司的一款关系数据库管理系统。它是在数据库领域一直处于领先地位的产品。…

    2017-04-24
  • HA Cluste 的配置:keepalived:vrrp协议 主备模型

    keepalived:vrrp协议 主备模型 第一步配置出始环境: 准备两节点: 主节点:172.18.57.7 long1 备节点:172.18.57.8 long2 (1) 各节点时间必须同步; 同步时间: ~]# yum -y install chrony ~]# vim /etc/chrony.conf ~]# systemctl start chr…

    Linux干货 2017-05-15