今天遇到一个问题,就是在服务器上配置nginx转发tcp时 nginx提示
nginx: [emerg] unknown directive "stream" in /usr/local/webserver/nginx/conf/nginx.conf:16
这是因为nginx默认没有配置stream模块,只需要重新添加模块就可以了。
网上找了很多资料,总结一下。
PCRE的安装模式
首先安装nginx会有两个nginx的文件,一个是nginx你实际运行的nginx(带有sbin文件)。一个是nginxX.XX带有版本号(简称源文件),需要make make install编译后生成nginx。
首先进入nginx的sbin文件执行命令,查看有没有安装stream模块
./nginx -V
这里是没有安装的。
接下来进入到源文件下执行:
./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-stream --with-http_ssl_module
make
make install
执行完毕之后(有文章说只执行make就可以,我测试的时候必须要执行makeinstall才成功)
接下把源文件下的conf下的文件复制到你实际运行的文件下(最好备份一个)
然后执行./nginx -s reload就可以了
stream {
upstream redis {
hash $remote_addr consistent;
server 127.0.0.1:8523;
}
server {
listen 8533;
proxy_pass redis;
}
}
另外如果执行报错
我的解决方案是升级nginx的版本,这里奉上nginx1.9.9的安装包
http://链接:https://pan.baidu.com/s/18J2nI4XovUCpkMLrCZ0qgg 提取码:ubru
希望能帮助你解决遇到的问题!