nginx https正向代理

需求

  • 内网访问外网接口,https协议,需要SSL证书认证。

分析

  • 内网访问外网接口,需要走代理,现成已有nginx服务器,需要在服务器上配置https正向代理
  • 原生nginx不支持https正向代理,需要安装ngx_http_proxy_connect_module

实现

  • java程序实现增加代理

    • 增加代理配置

      proxyUrl=http://ng服务器ip:8109
      
    • 代码的代理设置

      if ( !StringUtils.isBlank(proxyUrl) ){
          RequestConfig config = RequestConfig.custom().setProxy(HttpHost.create(proxyUrl)).build();
          httpPost.setConfig(config);
      }
      
  • https正向代理配置

    server {
        resolver 114.114.114.114;
        listen 8109;
        proxy_connect;
        proxy_connect_allow            8125;
        proxy_connect_connect_timeout  10s;
        proxy_connect_read_timeout     10s;
        proxy_connect_send_timeout     10s;
     
        access_log /var/log/nginx/http_proxy.access.log main;
        error_log /var/log/nginx/http_proxy.error.log;
     
        location / {
            proxy_pass https://xxx.xxx.com:8125;
        }
    }
    
  • 注意:

    • resolver不可省略,即使hosts文件已经配置了nameserver

    • 添加了ngx_http_proxy_connect_module,替换了新的nginx后,修改配置文件后,需要停止原ng进程,再启动:

      nginx -s stop
      nginx
      
    • 否则只nginx -s reload的话,会报400 bad request错

posted @ 2020-04-24 18:24  杨海星  阅读(2476)  评论(0编辑  收藏  举报