nginx社区有一个模块,名字是nginx-mod-stream
它的作用的可以代理和负载均衡tcp/udp的流量 不用通过7层应用层,而是通过4层传输层
代理是nginx去请求后端而不是客户端请求,这是一个盲区
配置文件实例:
实际应用举例:
nginx通过这个模块去代理mysql的好处,不单单是速度快
而是:
TCP代理是传输层代理,不关心应用层协议,如HTTP
当你使用TCP代理来代理MySQL流量时,它会以字节流的形式将数据从客户端传递到服务器,而不会解析或修改数据。
因此,TCP代理会保持MySQL协议的原始性,不会对MySQL请求和响应进行任何修改。它不理解MySQL协议的内容,只是按原样传递数据,这对于数据库通信来说非常重要,因为MySQL客户端和服务器之间的通信需要遵循特定的协议。
HTTP代理是应用层代理,专门设计用于处理HTTP请求和响应。
当你使用HTTP代理来代理MySQL流量时,代理会尝试将MySQL请求和响应数据封装为HTTP请求和响应。
这会导致代理对MySQL协议进行解析和封装,并将数据包装成HTTP请求头和HTTP响应头。这意味着MySQL数据不再保持原始的MySQL协议格式,而是被包裹在HTTP协议中。
因此,HTTP代理会修改MySQL请求和响应,将其嵌套在HTTP层中。这可能导致与原始MySQL通信的不兼容性和错误,因为MySQL客户端和服务器期望遵循原始协议格式。
所以这个模块还是有作用的