nginx: [emerg] unknown directive “stream“ in /etc/nginx/nginx.conf
在nginx中做tcp端口转发时,在nginx中加入
# 四层负载不在http模块里面,和http模块同级别
stream {
upstream mysql {
server 127.0.0.1:3306;
}
upstream redis {
server 127.0.0.1:6379;
}
upstream mongodb {
server 127.0.0.1:27017;
}
server {
listen 61306;
proxy_connect_timeout 10s;
proxy_timeout 30s;
proxy_pass mysql;
}
server {
listen 61379;
proxy_connect_timeout 10s;
proxy_timeout 30s;
proxy_pass redis;
}
server {
listen 27018;
proxy_connect_timeout 10s;
proxy_timeout 30s;
proxy_pass mongodb;
}
}
nginx默认不带stream的,或者默认不加载stream,直接添加可能会有如下错误提示:
解决方法:
网上的解决方案都是说要根据nginx源码重新编译什么的,这个不太适合与正在运行的项目,可以采用以下方案实施
(1)第一步:yum -y install epel-release
(2)第二步:yum -y install nginx-all-modules.noarch
执行完成后,会得到如下内容:
查看nginx.conf是否有此项:
include /usr/share/nginx/modules/*.conf;
# /usr/share/nginx/modules 应该包含有 mod-stream.conf
如果没有,可手动增加至nginx.conf:
load_module /usr/lib64/nginx/modules/ngx_stream_module.so;
配置好后:
就可以执行nginx重载了