zoukankan      html  css  js  c++  java
  • [nginx]proxy_pass&rewrite知识点

    While passing request nginx replaces URI part which corresponds to location with one indicated in proxy_pass directive. But there are two exceptions from this rule when it is not possible to determine what to replace:
    
    if the location is given by regular expression;
    if inside proxied location URI is changed by rewrite directive, and this configuration will be used to process request (break):
    location  /name/ {
      rewrite      /name/([^/] +)  /users?name=$1  break;
      proxy_pass   http://127.0.0.1;
    }
    For these cases of URI it is transferred without the mapping.
    注意:
    两种情况下不进行代理转换。
    1.location 标段使用正则表达式
    2.执行代理动作的location段内使用了rewrite指令对location URI进行了修改,并且使用rewrite后的配置发出请求(break)。

    A special case is using variables in the proxy_pass statement: The requested URL is not used and you are fully responsible to construct the target URL yourself.
    
    This means, the following is not what you want for rewriting into a zope virtual host monster, as it will proxy always to the same URL (within one server specification):

    另一种特例是在proxy_pass语句中使用变量:请求的url并没有被使用,你必须自己构造目标url

    location / {
      proxy_pass   http://127.0.0.1:8080/VirtualHostBase/https/$server_name:443/some/path/VirtualHostRoot;
    }
    Instead use a combination of rewrite and proxy_pass:上面的语句要写成下面的:
    
    location / {
      rewrite ^(.*)$ /VirtualHostBase/https/$server_name:443/some/path/VirtualHostRoot$1 break;
      proxy_pass   http://127.0.0.1:8080;
    }
    rewrite的permanent和redirect重写后的url会在url栏显示,在数据包的层面,添加了location http header
    这块东西还是有不少不清楚的地方,继续研究。
  • 相关阅读:
    NConsoler 介绍
    HOWTO:批量删除存储过程和表
    HOWTO:使ASP.NET网站Forms验证可以指定多个登录页面
    [架构模式实践]如何不让第三方服务/组件的故障阻碍开发和测试进度
    GDI+学习笔记
    脚印: SD2C 2009 参会小记(非技术篇)
    Expression Web使用问题,相关资源及今日阅读
    HOWTO:FirePHP乱码问题解决
    [ECSHOP挖寶]用戶注銷過程
    励志好文
  • 原文地址:https://www.cnblogs.com/silenceli/p/3558116.html
Copyright © 2011-2022 走看看