使用nginx最多的功能是转发http请求,包含识别url中的路径,然后通过路径转发到对应的服务。但如何指直接转发tcp请求呢?比如我后端有个mysql数据库,暴露的是3306端口,如何通过nginx将外部的访问转发到mysql客户端呢?
解决方案
- 重新编译nginx时,添加
--with-stream
参数
./configure --prefix=${your_nginx_path_install} --with-http_image_filter_module --with-stream
- 安装nginx
make && make install
- 编辑 nginx.conf 配置stream
# 转发1978到内部服务器 ... stream { server { listen 33006; proxy_connect_timeout 360s; proxy_timeout 360s; proxy_pass 192.168.3.103:3306; } } ...
- 重新加载配置
nginx -s reload