nieznana dyrektywa „stream” w /etc/nginx/nginx.conf:86

11

Mam nginx/1.12.0i jak na dokument zawiera streammoduł. Zainstalowałem nginx z następującymi poleceniami.

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

Próbowałem dodać dyrektywę strumieniową w nginx.conf:

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

ale po ponownym uruchomieniu pojawia nginxsię błąd w nginxdziennikach

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

Znalazłem ten błąd i niektórzy ludzie mówią, że muszę osobno instalować / konfigurować ten moduł. Niektórzy twierdzą, że pochodzi z nginxwersją 1.12.0. Czy ktoś może zasugerować, jak mogę zainstalować / skonfigurować ten moduł na już zainstalowanym nginx?

Pozdrawiam VG

użytkownik3332404
źródło
Czy Nginx zaczyna się od włączonego modułu strumieniowego? Proszę opublikować wynik nginx -V.
Joe Brailsford
Dzięki Joe, więc zaktualizowałem swoje pytanie i wkleiłem dane wyjściowe nginx -V.
user3332404
/ Usr / lib / nginx / moduły można zobaczyć następujące moduły 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

Odpowiedzi:

22

Moduł strumienia jest dodawany jako dynamiczny, zgodnie z:

--with-stream=dynamic

Musisz być statyczny - ładuj więc moduł bezpośrednio. Aby to zrobić, dodaj następujące u góry pliku nginx.conf:

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

Następnie:

nginx -t

Jeśli wszystko jest w porządku:

nginx -s reload
service nginx restart

Edytować:

-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
Joe Brailsford
źródło
Niesamowite!! nigdy więcej błędów. Dziękuję bardzo Joe, jesteś moim wybawcą .BTW czym właściwie jest nginx -s podczas uruchamiania Mam błąd nginx: opcja „-s” wymaga parametru
3332404
Zredagowałem swoją odpowiedź, trochę mi umknęło. nginx -s reload ponownie ładuje proces główny - restart usługi zasadniczo robi to samo.
Joe Brailsford
co streamzrobi moduł? jaki jest z tego pożytek
Satish
@JoeBrailsford Czy istnieje jakiś sposób na zautomatyzowanie tego procesu instancja bcoz EC2 nie będzie trwała dla EBS, również jeśli możesz wyjaśnić, dlaczego moduł Steam musi działać statycznie
Bikash
6

Nie mam wystarczającej reputacji, aby skomentować odpowiedź Joe, więc pisząc tutaj:

W CentOS7 ścieżka modułów znajduje się w folderze lib64. Musisz więc dodać ten wiersz:

load_module '/usr/lib64/nginx/modules/ngx_stream_module.so';
Illidan
źródło
2

Natknąłem się na ten problem z nginxAmazon Linux działającym na instancji AWS EC2, a mój /usr/lib64/nginx/modules/folder był pusty.

Zainstalowałem moduł z yum:

yum install nginx-mod-stream

streamDyrektywa działa teraz bez zmiany nginx.conf.

praegustator
źródło