nginx一般都用作http代理,工作在第七层网络, 如果不是http协议的话,就需要用到四层代理, 用到stream模块
设置四层代理
- 编译nginx: 支持stream模块
./configure --with-stream
- 配置nginx: 转发13306请求到3306
# stream与http是同级别的, 内部配置语法跟http模块基本一致
stream {
# 配置反向代理
upstream mysql {
server 127.0.0.1:3306;
}
server {
# 监听13306端口
listen 13306;
# 不需要配置location(因为TCP层没有URL)
# 转发到mysql
proxy_pass mysql;
}
}
测试
mysql -h {host} -P 13306
常见问题
-
nginx: [emerg] unknown directive "stream"
: nginx没有编译stream模块,需要重新编译,并支持stream--with-stream
网友评论