搜尋

首頁  >  問答  >  主體

請Nginx正向代理HTTPS請求解決方案

應用程式伺服器(Tomcat)與代理伺服器(Nginx)在不同的伺服器上,且應用程式伺服器無法直接存取外網,只有透過Nginx將存取外網的HTTP請求正向代理程式出去

例如使用apache.http.client

/** 正向代理地址 */
private static HttpHost forwardProxy = new HttpHost(host, forwardPort, forwardSchema);
HttpClientBuilder builder = HttpClients.custom().setDefaultRequestConfig(globalConfig).setKeepAliveStrategy(keepAliveStrat);
if (isForward) {
    builder.setProxy(forwardProxy);
}
this.httpClient = builder.build();
    server {
        listen 8092;
        location / {
            # 配置 DNS 解析 IP 地址,以及超时时间,
            resolver 219.149.6.99 114.114.114.114;
            resolver_timeout 30s;
            proxy_pass $scheme://$host$request_uri;
            # proxy_set_header 部分的配置,是为了解决如果 URL 中带 "."(点)后 Nginx 503 错误
            proxy_set_header Host $http_host;
            # 配置缓存大小,关闭磁盘缓存读写减少I/O,以及代理连接超时时间
            proxy_buffers 4 256k;
            proxy_max_temp_file_size 0;
            proxy_connect_timeout 30;
            # 配置代理服务器 Http 状态缓存时间
            proxy_cache_valid 200 302 10m;
            proxy_cache_valid 301 1h;
            proxy_cache_valid any 1m;
        }
        access_log logs/proxy-$host-aceess.log main;
        error_log  logs/proxy-$host-error.log;
    }

上述方式對HTTPS請求貌似不起作用,不用回覆Nginx就是不支援正向代理HTTPS,我只想評估這種場景的解決方案

我想大声告诉你我想大声告诉你2809 天前774

全部回覆(2)我來回復

  • 天蓬老师

    天蓬老师2017-05-16 17:10:50

    你的代理這裡$scheme://$host$request_uri; 為啥要用變數,這個變數不是nginx所在伺服器的嗎,這裡感覺很奇怪

    回覆
    0
  • 某草草

    某草草2017-05-16 17:10:50

    沒人提供點思路?

    回覆
    0
  • 取消回覆