nginx从1.9.0开始,新增加了一个stream模块,用来实现四层协议的转发、代理或者负载均衡等。比如在内网有一个mysql服务,想暴露到公网上去使用,就可以通过nginx代理的方式通过nginx来进行内网mysql的访问。
首先用nginx -V 查看有没有安装这个模块,(yum安装的默认都有这个模块)然后用find查看下库文件路径,不同的操作系统位置不同。
#find / -name "ngx_stream_module.so"
/usr/lib64/nginx/modules/ngx_stream_module.so
如果没有找到,执行
yum -y install nginx-all-modules.noarch
在nginx头部加入
load_module /usr/lib64/nginx/modules/ngx_stream_module.so;
测试环境用nginx代理mysql tcp端口示例
stream {
upstream mysql63306 {
hash $remote_addr consistent;
server 192.168.1.22:3306 max_fails=3 fail_timeout=300s;
}
upstream mysql64406 {
hash $remote_addr consistent;
server 192.168.1.12:3306 max_fails=3 fail_timeout=300s;
}
upstream mysql62206 {
hash $remote_addr consistent;
server 192.168.1.14:3306 max_fails=3 fail_timeout=300s;
}
upstream mysql65506 {
hash $remote_addr consistent;
server 192.168.1.16:3306 max_fails=3 fail_timeout=300s;
}
upstream mysql61106 {
hash $remote_addr consistent;
server 192.168.1.11:3306 max_fails=3 fail_timeout=300s;
}
upstream mysql60006 {
hash $remote_addr consistent;
server 192.168.1.83:3306 max_fails=3 fail_timeout=300s;
}
upstream mysql61206 {
hash $remote_addr consistent;
server 192.168.1.19:3306 max_fails=3 fail_timeout=300s;
}
server {
listen 63306;
proxy_connect_timeout 30s;
proxy_timeout 600s;
proxy_pass mysql63306;
}
server {
listen 64406;
proxy_connect_timeout 30s;
proxy_timeout 600s;
proxy_pass mysql64406;
}
server {
listen 62206;
proxy_connect_timeout 30s;
proxy_timeout 600s;
proxy_pass mysql62206;
}
server {
listen 65506;
proxy_connect_timeout 30s;
proxy_timeout 600s;
proxy_pass mysql65506;
}
server {
listen 61106;
proxy_connect_timeout 30s;
proxy_timeout 600s;
proxy_pass mysql61106;
}
server {
listen 60006;
proxy_connect_timeout 30s;
proxy_timeout 600s;
proxy_pass mysql60006;
}
server {
listen 61206;
proxy_connect_timeout 30s;
proxy_timeout 600s;
proxy_pass mysql61206;
}
}
转载请注明:梦绘设计 » WEB运维 » nginx unknown directive stream解决办法
版权声明
本站《作品展示》类文章均为原创,转载必须注明出处,技术分享类文章部分来源于网络,版权归原作者所有,若侵权请留言。