求Nginx正向代理HTTPS请求解决方案

【字号: 日期:2022-07-26浏览:44作者:雯心

问题描述

应用服务器(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,我只想评估这种场景的解决方案。

问题解答

回答1:

你的代理这里$scheme://$host$request_uri; 为啥要用变量,这个变量不是nginx所在服务器的吗,这里感觉很奇怪

回答2:

没人提供点思路?

相关文章: