nginx反向代理是日常使用nginx时最常用到的功能之一。在配置url的过程中,“/”的有无经常是影响我们配置成功的关键,也是困扰我们的问题所在。在此,结合实际例子,作简要辨析。

场景一:利用根目录进行代理

location / {
proxy_pass http://example.test.com/;
}
location / {
proxy_pass http://example.test.com;
}

  这两个配置实现的效果是一样的。

场景二:下面四种情况分别用http://192.168.1.10/proxy/test.html 进行访问。

第一种情况:
location /proxy/ {
proxy_pass http://127.0.0.1:8080/;
}

实现效果:当访问http://192.168.1.10/proxy/test.html时,会被代理到http://127.0.0.1:8080/test.html 这个url,并将结果返回给我们。

第二种情况:(相对于第一种,最后少一个 /)
location /proxy/ {
proxy_pass http://127.0.0.1:8080;
}

实现效果:当访问http://192.168.1.10/proxy/test.html时,会被代理到http://127.0.0.1:8080/proxy/test.html 这个url,并将结果返回给我们。

第三种情况:
location /proxy/ {
proxy_pass http://127.0.0.1:8080/real/;
}

实现效果:当访问http://192.168.1.10/proxy/test.html时,会被代理到http://127.0.0.1:/real/test.html 这个url,并将结果返回给我们。

第四种情况(相对于第三种,最后少一个 / ):
location /proxy/ {
proxy_pass http://127.0.0.1:8080/real;
}

实现效果:当访问http://192.168.1.10/proxy/test.html时,会被代理到http://127.0.0.1:81/realtest.html 这个url,并将结果返回给我们。

分析如下: proxy_pass http://127.0.0.1/ 和proxy_pass http://127.0.0.1  ==>这个”/”,会使代理出来的结果完全不同。

前者,相当于告诉nginx,我这个location,是代理访问到http://127.0.0.1这个server的,我的location是什么,nginx 就把location 加在proxy_pass 的 server 后面,这里是/proxy/,所以就相当于http://127.0.0.1/proxy/。如果是location /blog/ 就是代理访问到http://127.0.0.1/blog/。

后者,相当于告诉nginx,我这个location,是代理访问到http://127.0.0.1/的,http://127.0.0.1/proxy/ == http://127.0.0.1/ ,可以这样理解。改变location,并不能改变返回的内容,返回的内容始终是http://127.0.0.1/ 。 如果是location /blog/ ,那就是 http://127.0.0.1/blog/ == http://127.0.0.1/ 。

这样,也可以解释了上面那个location / 的例子,/ 嘛,加在server 的后面,仍然是 / ,所以,两种写法出来的结果是一样的。

注意: 如果是 location ~* ^/proxy/(.*)\.html 这种正则的location,是不能写”/”上去的,nginx -t 也会报错的了。因为,路径都需要正则匹配了嘛,并不是一个相对固定的locatin了,必然要代理到一个server。

nginx反向代理时有无”/”的辨析的更多相关文章

  1. nginx 反向代理时丢失端口的解决方案

        今天,配置nginx反向代理时遇到一个问题,当设置nginx监听80端口时转发请求没有问题.但一旦设置为监听其他端口,就一直跳转不正常:如,访问欢迎页面时应该是重定向到登录页面,在这个重定向的 ...

  2. nginx 反向代理时丢失端口的解决方案(转)

    今天,配置nginx反向代理时遇到一个问题,当设置nginx监听80端口时转发请求没有问题.但一旦设置为监听其他端口,就一直跳转不正常:如,访问欢迎页面时应该是重定向到登录页面,在这个重定向的过程中端 ...

  3. 使用nginx反向代理时,如何正确获取到用户的真实ip

    在记录日志的的时候,获取用户的信息,比如用户的ip,浏览器等等信息是十分重要的. 但是在使用nginx反向代理的时候,可能经过转发无法获取到用户的真实的ip, 在此情况下需要配置nginx,让其在转发 ...

  4. Nginx 反向代理时获取用户的真实 IP

    在平时我们开发后端程序的过程中,应该多多少少都会碰到记录客户端 IP 的场景,例如我之前写过的 APP 用户的一个审计功能,就需要获取用户的 IP 地址:还有广告系统里面,也是需要获取用户的 IP 地 ...

  5. nginx反向代理时保持长连接

    ·[场景描述] HTTP1.1之后,HTTP协议支持持久连接,也就是长连接,优点在于在一个TCP连接上可以传送多个HTTP请求和响应,减少了建立和关闭连接的消耗和延迟. 如果我们使用了nginx去作为 ...

  6. nginx反向代理时配置访问密码

    在有些情况下,我们需要对服务器上的某些资源进行限流或者禁止陌生人访问,我们可以通过nginx配置来对url添加访问密码. 效果如下 nginx 开启访问验证在 nginx 下,提供了 ngx_http ...

  7. Nginx反向代理时tomcat日志获取真实IP

    对于nginx+tomcat这种架构,如果后端tomcat配置保持默认,那么tomcat的访问日志里,记录的就是前端nginx的IP地址,而不是真实的访问IP.因此,需要对nginx.tomcat做如 ...

  8. 如何取得nginx做反向代理时的真实IP?

    1. 编译 对于client -> nginx reverse proxy -> apache, 要想在程序中取得真实的IP,在执行nginx的configure时,必须指定参数" ...

  9. nginx做反向代理时获取真实IP

    原文:http://blog.csdn.net/aquester/article/details/48657395 1. 编译 对于client -> nginx reverse proxy - ...

随机推荐

  1. WebServer Project-01-反射

    简介 上网浏览网页,离不开服务器,客户请求页面,服务器响应页面,响应的内容是根据每个web请求来产生动态内容的,其内部即启动多个线程来产生不同内容.这种请求响应的交互,都是基于HTTP协议的. 当然现 ...

  2. kubeadm生成的token重新获取

    当你的token忘了或者过期,解决办法如下: 1.先获取token #如果过期可先执行此命令kubeadm token create #重新生成token#列出tokenkubeadm token l ...

  3. 网址URL知识

    URL由三部分组成:资源类型.存放资源的主机域名.资源文件名. URL的一般语法格式为: (带方括号[]的为可选项): protocol :// hostname[:port] / path / [; ...

  4. leetcood学习笔记-83-删除链表中的重复元素

    题目描述: 第一次提交: class Solution: def deleteDuplicates(self, head: ListNode) -> ListNode: if head==Non ...

  5. 廖雪峰Java13网络编程-1Socket编程-2TCP编程

    1. Socket 在开发网络应用程序的时候,会遇到Socket这个概念. Socket是一个抽象概念,一个应用程序通过一个Socket来建立一个远程连接,而Socket内部通过TCP/IP协议把数据 ...

  6. NX二次开发-UFUN体找面函数UF_MODL_ask_body_faces

    NX9+VS2012 #include <uf.h> #include <uf_modl.h> #include <uf_obj.h> #include <u ...

  7. Sublime 安装、删除插件

    安装 按 Ctrl + Shift + P 输入Install Package 输入 要安装的插件名称,enter即可 删除 按 Ctrl + Shift + P 输入Remove Package 选 ...

  8. sql中desc的妙用

    很多情况下对表内部结构不熟悉,想看下我创建的表里面又多少表明,又想他按照首字母的规律排列, 这时候就要用desc +表名了. desc t_bike_info; hive> desc t_bik ...

  9. PAT_A1043#Is It a Binary Search Tree

    Source: PAT A1043 Is It a Binary Search Tree (25 分) Description: A Binary Search Tree (BST) is recur ...

  10. ps-通道错位制作奇幻海报

    效果图 素材 1.载入素材 点击通道 点击下面的蓝色通道,全选-复制 点击绿色通道,全选-黏贴 编辑-变化-水平翻转 点击RGB即可.