我也作过这个尝试,如果我没理解错的话,我再详细解释一下 @
noe132 的答案:
1. mysql 客户端收到
mysql.test.com:8443 的连接配置
2. mysql 通过操作系统的 DNS 功能查询到
mysql.test.com 的 ip 为 69.172.200.109
3. mysql 向 69.172.200.109:8443 发起连接
对于 redis 也是一样的。
所以你可以看到,对于提供 TCP 服务(非 HTTP )的服务器,是收不到域名(或主机名)信息的。
总结:对于目前大部分基于 TCP 而非 HTTP 的服务而言,想通过域名或主机名区分流量是不可能的,因为客户端并未发送域名(或主机名)信息。
其它思路:Linux 内核提供了多个服务复用同一个端口的功能,也有通过嗅探连接类型作转发的代理服务(比如 sslh ),我没有尝试过,楼主有需要可以参考一下。