美文网首页
Nginx动态代理

Nginx动态代理

作者: 带马界的神秘人 | 来源:发表于2017-04-12 16:57 被阅读0次

根据不同的version访问不同的版本服务,或者访问不同的服务器,或者根据不同的host访问不同的内网服务器

实现原理

利用auth_request,当请求某个nginx的某个连接的时候,先去请求auth_request,再根据auth_request的返回动态设置代理url

nginx的配置

location /private/ {
    auth_request /auth;
    auth_request_set  $url $sent_http_url; 
    proxy_pass $url;
    ...
}

location = /auth {
    proxy_pass ...
    proxy_pass_request_body off;
    proxy_set_header Content-Length "";
    proxy_set_header X-Original-URI $request_uri;
}

在controller代码中

public Object authRequest(HttpServletRequest request,
HttpServletResponse servletResponse){    
    ...
    //获取原请求地址
    System.out.println("X-Original-URI:"+request.getHeader("X-Original-URI"));
    ...
    servletResponse.setHeader("url", "http://www.baidu.com");//返回新的地址
    ...
}

根据参数动态代理

nginx的配置

location /private/ {
    set $req_version $arg_ReqVersion;   # 将参数ReqVersion设置到变量req_version
    auth_request /auth;
    auth_request_set  $url $sent_http_url; 
    proxy_pass $url;
    ...
}

location = /auth {
    proxy_pass ...
    proxy_pass_request_body off;
    proxy_set_header Content-Length "";
    proxy_set_header   ReqVersion   $req_version;  # 通过header传递参数
    proxy_set_header X-Original-URI $request_uri;
}

需求

auth_request 需要nginx的 ngx_http_auth_request_module模块

相关文章

  • Nginx动态代理

    根据不同的version访问不同的版本服务,或者访问不同的服务器,或者根据不同的host访问不同的内网服务器 实现...

  • nginx动静分离

    准备三台服务器 分别是代理, 静态, 动态 yum装的nginx主配置文件:/etc/nginx/nginx....

  • nginx反向代理实现负载均衡

    假设前端nginx只存在index.html 构建反向代理,nginx仅仅处理静态内容不处理动态内容 客户端访问l...

  • 面试系列~动态代理实现与原理

    动态代理有JDK动态代理, CGLIB动态代理, SpringAOP动态代理 一,JDK动态代理  jdk动态代理...

  • nginx动静分离

    1、准备环境准备一个nginx代理 两个http 分别处理动态和静态。 静态资源配置 动态资源配置:

  • 编程常用的设计模式

    动态代理和静态代理 静态代理 动态代理 静态代理与动态代理的区别 JDK中的动态代理和CGLIB 实现动态代理的方...

  • nginx做代理上网

    nginx不仅可以来做反向代理,也可以用来做正向代理(透明代理,代理上网),nginx反向代理看这里nginx反向...

  • Spring的AOP原理分析

    一 动态代理 动态代理分为JDK动态代理和CGLIB动态代理 jdk动态代理 被代理类(目标类)和代理类必须实现同...

  • 二、架构02-Nginx的反向代理、虚拟主机

    一、Nginx反向代理 1、环境:node01:192.168.32.132 Nginx (前端Nginx反向代理...

  • 设计模式之代理模式

    代理分为静态代理和动态代理。 动态代理又包括基于JDK的动态代理、基于CGlib 的动态代理、基于Aspectj实...

网友评论

      本文标题:Nginx动态代理

      本文链接:https://www.haomeiwen.com/subject/pwbmattx.html