内网服务器和 DMZ 服务器之间只开了一个端口,但是外网需要访问内网中的 mysql, redis 和 minio

2025 年 9 月 18 日
 badbay

各位大佬,公司部署软件,要求 mysql ,redis ,minio 等存放数据的软件放在内网服务器上,Web 和 api 放在 DMZ 服务器上。原本我想的部署方案是 api 服务放在内网服务器,通过 DMZ 上部署 Nginx 转发访问 api 服务,这样就只需要一个端口。公司的领导说这样不安全,让把 api 放到 DMZ 服务器上,这样到内网的数据就多一层过滤,但是这样的话 api 访问内网的数据库,redis 和 minio 就需要三个端口,开端口的流程特别长,时间来不及,有其他的解决方案吗。

3598 次点击
所在节点    程序员
43 条回复
badbay
2025 年 9 月 22 日
@yinmin #37 ( 1 )我最开始是了一下应用程序直连,证书配置这一块没调好,是不是 stunnelserver 和 mysql 服务应该使用同一个证书啊?
( 2 ) nginx 的 tcp 代理只能做到端口的区分,如果都使用同一个端口的话,无法分流出不同应用数据包。
yinmin
2025 年 9 月 22 日
@badbay #41
( 1 )的答复:mysql server 不安装证书(不启用 tls ),而是用 stunnel server 将 mysql 明文 3306 端口进行 tls 加密,mysql client 启用 tls 直连 stunnel server

( 2 )的回复:nginx 根据 sni 分流 tls 。先使用 nginx 将 mysql tcp3306 转化成 tls 加密端口 或者 启用 mysql 的 tls 端口,然后使用 nginx 的 stream 模块能根据 sni 分流到对应的 tls 端口
badbay
2025 年 9 月 24 日
@yinmin #41 感谢大佬指点

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://v2ex.xtra.eu.org/t/1160146

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX