nginx:unknown directive "stream" in /etc/nginx/nginx.conf:89

909 阅读1分钟

你们好,我是金金金。

image.png

场景

重启nginx失败,报错如下:

image.png

  • 报错意思也非常明显了:nginx.conf:89中的[emerg]未知指令“stream”

排查

先来看一下我的nginx.conf配置

image.png

  • 配置非常简单,就是在http的平级 加了一个 stream 配置,启动过程中报错未知指令,看意思就能知道并不能识别出stream这个配置字段

造成error的原因

自从 nginx 1.9 以后 nginx 通过 stream 模块实现了 tcp 代理功能,无需其他软件配合即可实现四层代理和七层代理,即:访问该服务器的指定端口,nginx 就可以充当端口转发的作用将流量导向另一个服务器,同时获取目标服务器的返回数据并返回给请求者。这是一个非常实用的功能。

# 查看 nginx 编译配置信息(V 大写)
nginx -V

输出信息configure arguments中带有 --with-stream 参数即可代理 TCP 协议。Nginx的stream模块默认不会自动安装,还需要额外手动安装

解决

# 安装 stream 模块
yum install nginx-mod-stream -y

image.png

  • 安装成功,重启nginx 看下状态,成功~

image.png

总结

自动安装是没有携带的,没有手动安装stream模块导致找不到相关指令,安装即可~

  • 编写有误还请大佬指正,万分感谢。