需求
- 內網訪問外網接口,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錯
-