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

Solution 1:

The stream module is being added as dynamic, as per:

--with-stream=dynamic

You need it to be 'static' - so load the module directly. To do so, add the following at the very top of your nginx.conf:

load_module /usr/lib/nginx/modules/ngx_stream_module.so;

Then:

nginx -t

If all is well:

nginx -s reload
service nginx restart

Edit:

-s signal' Send signal to the master process. The argument signal can be one of: stop, quit, reopen, reload. The following table shows the corresponding system signals.

stop' SIGTERM
quit' SIGQUIT
reopen' SIGUSR1
reload' SIGHUP

Solution 2:

Have not enough reputation to comment Joe's answer, so writing here:

On CentOS7, the modules path located under lib64 folder. So, you need to add this line:

load_module '/usr/lib64/nginx/modules/ngx_stream_module.so';

Solution 3:

I have come across this issue with nginx on Amazon Linux running on AWS EC2 instance, and my /usr/lib64/nginx/modules/ folder was empty.

I installed the module with yum:

yum install nginx-mod-stream

The stream directive works now without changing the nginx.conf.

Tags:

Nginx

Stream