欢迎光临
我们一直在努力

手头没证书,如何给https做代理?Nginx TCP转发

线上的一个海外充值接口(https)经常因我朝网络问题中断,想借助hk的机器做个https反向代理又没证书。

一开始想到的办法是借助Nginx的tcp转发进行代理:

编译NGINX时加入 –with-stream选项,

upstream backend { server xxxxxx.com:443 ; } server { listen 443; proxy_pass backend; proxy_connect_timeout 5s; proxy_timeout 15s; error_log /data/logs/tcp_xxxxxx.com.log info; } 

服务器通过绑定host,将https://xxxxxx.com的访问请求到中转机再反向到实际的海外服务器确实也ok

不过这里也将面临一个问题:443端口只能被https://xxxxxx.com占用,无法给其他域名的代理提供作用

如果我想https://xxxxxx.com和https://yyyyyy.com都借助这台机器代理呢?
Nginx的stream_ssl_preread_module可以解决这个问题
ngx_stream_ssl_preread_module模块(1.11.5)允许从ClientHello消息中提取信息而不终止SSL / TLS,例如,通过SNI请求的服务器名称或在ALPN中通告的协议。 默认情况下不构建此模块,应使用–with-stream_ssl_preread_module配置参数启用它。

Nginx(1.11+),编译时加入:–with-stream–with-stream_ssl_preread_module 两个选项,

然后配置:

#$ssl_preread_server_name #通过SNI请求的服务器名称 map $ssl_preread_server_name $real_server { xxxxxx.com xxx; yyyyyy.com yyy; } upstream xxx{ server xxxxxx.com:443; } upstream yyy{ server yyyyyy.com:443; } server { listen 443; ssl_preread on; #允许在预读阶段从ClientHello消息中提取信息 resolver 8.8.8.8; proxy_pass $real_server; proxy_connect_timeout 5s; proxy_timeout 15s; error_log /data/logs/stream_ssl_preread.log info; } 

赞(0)
版权声明:本文采用知识共享 署名4.0国际许可协议 [BY-NC-SA] 进行授权
文章名称:手头没证书,如何给https做代理?Nginx TCP转发
文章链接:https://www.jmwz.net/8309.html
本站资源仅供个人学习交流,请于下载后24小时内删除,不允许用于商业用途,否则法律问题自行承担。
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址