全球主机交流论坛
标题:
nginx 万能中转
[打印本页]
作者:
jarmoku
时间:
2021-4-2 22:14
标题:
nginx 万能中转
本帖最后由 jarmoku 于 2021-4-2 22:26 编辑
stream {
map $ssl_preread_server_name $targetBackend {
yourdomian 127.0.0.1:8443;
default $ssl_preread_server_name:443;
}
server {
listen 443;
proxy_connect_timeout 10s;
proxy_timeout 10s;
resolver 1.1.1.1;
proxy_pass $targetBackend;
ssl_preread on;
}
}
复制代码
我来解释一下,该方法目前仅适用于中转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
更加精简的版本:
stream {
server {
listen 443;
ssl_preread on;
resolver 8.8.8.8;
proxy_pass $ssl_preread_server_name:$server_port;
}
}
复制代码
域名DNS解析过去,就可以转发了,或者直接修改/etc/hosts
欢迎光临 全球主机交流论坛 (https://hostloc.gdisk.cf/)
Powered by Discuz! X3.4