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錯


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM