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错
-