全球主机交流论坛

标题: nginx 万能中转 [打印本页]

作者: jarmoku    时间: 2021-4-2 22:14
标题: nginx 万能中转
本帖最后由 jarmoku 于 2021-4-2 22:26 编辑
  1. stream {
  2.     map $ssl_preread_server_name $targetBackend {
  3.         yourdomian 127.0.0.1:8443;
  4.         default $ssl_preread_server_name:443;
  5.     }

  6.     server {
  7.         listen 443;

  8.         proxy_connect_timeout 10s;
  9.         proxy_timeout 10s;
  10.         resolver 1.1.1.1;

  11.         proxy_pass $targetBackend;
  12.         ssl_preread on;
  13.     }
  14. }
复制代码


我来解释一下,该方法目前仅适用于中转tls的TCP流量。
服务器443端口链接获取到tls请求的sni值(也就是域名),赋值给$ssl_preread_server_name变量,然后又直接通过TCP转发到$ssl_preread_server_name对于的服务器443端口
作者: pangyuxing    时间: 2021-4-2 22:16
没看明白,解释下?
作者: aipage    时间: 2021-4-2 22:16
此时一位流着没有技术眼泪的MJJ路过。并表示很蒙B
作者: 药丸    时间: 2021-4-2 22:19
mark
作者: hcyme    时间: 2021-4-2 22:23
万能青年旅店
作者: 翻车的老司机    时间: 2021-4-2 22:28
这个能做隐性转发吗?流量还不走中转机器上过
作者: GeogreKing    时间: 2021-4-2 22:42
巧了,刚好也是今晚了解到这个

补充两句,文档在这里 https://nginx.org/en/docs/stream/ngx_stream_ssl_preread_module.html

本质上是个sniproxy,用haproxy也可以实现,相比更复杂也更灵活一点,nginx 这个配置更简单些
作者: zzx396    时间: 2021-4-2 22:45
MJJ连四层转发都不知道?我不信
作者: 四叶草    时间: 2021-4-2 22:52
正好要弄个这个。。

作者: sagit    时间: 2021-4-2 23:07
虽然本人看不懂,但是为你这种分享精神点赞。
作者: clcavril    时间: 2021-4-2 23:08
就是四层转发啊,nginx stream模块
作者: CFCF    时间: 2021-4-2 23:30
有什么具体有意义的使用场景吗?
作者: eMGG    时间: 2021-4-3 01:26
CFCF 发表于 2021-4-2 23:30
有什么具体有意义的使用场景吗?

看实际转发的目的服务器,如果是别的机器,隐藏主机真实ip,隐藏主机ip与域名之间的关系,避免被全网扫描探测。当然还能加一些实际的访问限制规则,减少一部分自动探测的攻击等。

即便是转发到本机,也是有同样的防御作用。看具体的设置策略了。

比较常规的使用场景,使用docker部署不同的服务,服务需要对外的443可以映射到127.0.0.1的其他端口,避免这部分端口的直接对外暴露。然后通过4层转发 对不同域名的数据进行分派。
作者: Goood    时间: 2021-4-3 08:25
谢谢分享,学习了
作者: dole    时间: 2021-4-3 09:42
感谢大佬分享
作者: nisekoi    时间: 2021-4-3 09:56
这个和普通的反向代理websocket有什么区别? 不懂
作者: G奶    时间: 2021-4-3 10:20
这个和普通的brook转发有说明优势吗?
作者: uuh    时间: 2021-4-3 10:26

    我还以为大家都会        




  ∮⊱⊱⊱     停止联系是我们做过最默契的事。   ⊰⊰⊰∮

              

  尾巴不止能用来挠痒痒
   还能凑字数

作者: dvbhack    时间: 2021-4-3 11:00
四层转发的基础上,多了通过sni获取访问域名的能力。

可以实现一个端口做多域名4层转发
作者: Ep_Msn    时间: 2021-4-3 11:50
mark
作者: a197382176    时间: 2021-4-3 12:06
感谢分享,虽然暂时用不到
作者: turi    时间: 2021-4-3 12:08
这个特性好久了吧
作者: jarmoku    时间: 2021-4-3 12:21
nisekoi 发表于 2021-4-3 09:56
这个和普通的反向代理websocket有什么区别? 不懂

这个是直接转发TCP数据包哦
作者: zhongziso    时间: 2021-4-3 13:31
mark
作者: Clost    时间: 2021-4-3 13:44
收藏
作者: banyet    时间: 2021-4-5 15:21
更加精简的版本:

  1. stream {
  2.     server {
  3.         listen 443;
  4.         ssl_preread on;
  5.         resolver 8.8.8.8;
  6.         proxy_pass $ssl_preread_server_name:$server_port;
  7.     }
  8. }
复制代码


域名DNS解析过去,就可以转发了,或者直接修改/etc/hosts




欢迎光临 全球主机交流论坛 (https://hostloc.gdisk.cf/) Powered by Discuz! X3.4