неизвестная директива «поток» в /etc/nginx/nginx.conf:86

11

У меня есть nginx/1.12.0и согласно документу он содержит streamмодуль. Я установил nginx с помощью следующих команд.

sudo add-apt-repository ppa:nginx/stable
sudo apt-get update
sudo apt-get install nginx
nginx -v
nginx version: nginx/1.12.0

Я попытался добавить директиву потока в nginx.conf:

stream {
    upstream sys {
        server 172.x.x.x:9516;
        server 172.x.x.x:9516;
    }
    server {
        listen 9516 udp;
        proxy_pass sys;
    }
}

но когда я перезагружаюсь, nginxя получаю ошибку ниже в nginxлогах

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

nginx -V output
nginx version: nginx/1.12.0
built with OpenSSL 1.0.1f 6 Jan 2014
TLS SNI support enabled
configure arguments: --with-cc-opt='-g -O2 -fPIE -fstack-protector --param=ssp                                                                                          -buffer-size=4 -Wformat -Werror=format-security -fPIC -D_FORTIFY_SOURCE=2' --w                                                                                          ith-ld-opt='-Wl,-Bsymbolic-functions -fPIE -pie -Wl,-z,relro -Wl,-z,now -fPIC'                                                                                           --prefix=/usr/share/nginx --conf-path=/etc/nginx/nginx.conf --http-log-path=/                                                                                          var/log/nginx/access.log --error-log-path=/var/log/nginx/error.log --lock-path                                                                                          =/var/lock/nginx.lock --pid-path=/run/nginx.pid --modules-path=/usr/lib/nginx/                                                                                          modules --http-client-body-temp-path=/var/lib/nginx/body --http-fastcgi-temp-p                                                                                          ath=/var/lib/nginx/fastcgi --http-proxy-temp-path=/var/lib/nginx/proxy --http-                                                                                          scgi-temp-path=/var/lib/nginx/scgi --http-uwsgi-temp-path=/var/lib/nginx/uwsgi                                                                                           --with-debug --with-pcre-jit --with-http_ssl_module --with-http_stub_status_m                                                                                          odule --with-http_realip_module --with-http_auth_request_module --with-http_v2                                                                                          _module --with-http_dav_module --with-http_slice_module --with-threads --with-                                                                                          http_addition_module --with-http_geoip_module=dynamic --with-http_gunzip_modul                                                                                          e --with-http_gzip_static_module --with-http_image_filter_module=dynamic --wit                                                                                          h-http_sub_module --with-http_xslt_module=dynamic --with-stream=dynamic --with                                                                                          -stream_ssl_module --with-stream_ssl_preread_module --with-mail=dynamic --with                                                                                          -mail_ssl_module --add-dynamic-module=/build/nginx-ZgS12K/nginx-1.12.0/debian/                                                                                          modules/nginx-auth-pam --add-dynamic-module=/build/nginx-ZgS12K/nginx-1.12.0/d                                                                                          ebian/modules/nginx-dav-ext-module --add-dynamic-module=/build/nginx-ZgS12K/ng                                                                                          inx-1.12.0/debian/modules/nginx-echo --add-dynamic-module=/build/nginx-ZgS12K/                                                                                          nginx-1.12.0/debian/modules/nginx-upstream-fair --add-dynamic-module=/build/ng                                                                                          inx-ZgS12K/nginx-1.12.0/debian/modules/ngx_http_substitutions_filter_module

Я погуглил эту ошибку, и некоторые люди говорят, что я должен установить / настроить этот модуль отдельно. Некоторые говорят, что это идет с nginxвыпуском 1.12.0. Может кто-нибудь подсказать, как можно установить / настроить этот модуль на уже установленный nginx?

С уважением В.Г.

user3332404
источник
Nginx запускается с включенным потоковым модулем? Пожалуйста, оставьте вывод nginx -V.
Джо Брэйлсфорд
Спасибо, Джо. Итак, я обновил свой вопрос и вставил вывод nginx -V.
user3332404
В каталоге / USR / Lib / Nginx / модулей можно увидеть следующие модули ngx_http_image_filter_module.so ngx_http_geoip_module.so ngx_http_echo_module.so ngx_http_dav_ext_module.so ngx_http_auth_pam_module.so ngx_stream_module.so ngx_mail_module.so ngx_http_xslt_filter_module.so
user3332404

Ответы:

21

Потоковый модуль добавляется как динамический, согласно:

--with-stream=dynamic

Вам нужно, чтобы он был «статичным», поэтому загружайте модуль напрямую. Для этого добавьте следующее в самый верх вашего nginx.conf:

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

Потом:

nginx -t

Если все хорошо

nginx -s reload
service nginx restart

Редактировать:

-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
Джо Брэйлсфорд
источник
Потрясающие!! нет больше ошибок. Большое спасибо, Джо, вы мой спаситель. Кстати, что такое nginx -s, на самом деле, когда я запускаю это, я получаю ошибку ниже nginx: опция "-s" требует параметра
user3332404
Я отредактировал свой ответ, я немного пропустил. nginx -s reload перезагружает основной процесс - перезапуск службы в основном делает то же самое.
Джо Брэйлсфорд
что streamбудет делать модуль? какая польза от этого
Satish
@JoeBrailsford Есть ли способ автоматизировать этот процесс? Экземпляр bcoz EC2 не будет постоянным для EBS, также, если вы не могли бы объяснить, почему модуль Steam должен работать статично
Бикаш
6

Не хватает репутации, чтобы комментировать ответ Джо, поэтому пишите здесь:

На CentOS7 путь к модулям находится в папке lib64. Итак, вам нужно добавить эту строку:

load_module '/usr/lib64/nginx/modules/ngx_stream_module.so';
Иллидан
источник
2

Я столкнулся с этой проблемой nginxна Amazon Linux, работающем на экземпляре AWS EC2, и моя /usr/lib64/nginx/modules/папка была пуста.

Я установил модуль с yum:

yum install nginx-mod-stream

streamДиректива теперь работает без изменения nginx.conf.

praegustator
источник