unbekannte Direktive "stream" in /etc/nginx/nginx.conf:86

11

Ich habe nginx/1.12.0und laut Dokument enthält es streamModul. Ich habe nginx mit den folgenden Befehlen installiert.

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

Ich habe versucht, eine Stream-Direktive hinzuzufügen in nginx.conf:

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

aber wenn ich neu nginxstarte, erhalte ich unten Fehler in den nginxProtokollen

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

Ich habe diesen Fehler gegoogelt und einige Leute sagen, dass ich dieses Modul separat installieren / konfigurieren muss. Einige sagen, es kommt mit nginx1.12.0 Release. Kann jemand vorschlagen, wie ich dieses Modul auf bereits installierten installieren / konfigurieren kann nginx?

Grüße VG

user3332404
quelle
Beginnt Nginx mit aktiviertem Stream-Modul? Bitte posten Sie die Ausgabe von nginx -V.
Joe Brailsford
Danke Joe, also habe ich meine Frage aktualisiert und meine Nginx-V-Ausgabe eingefügt.
user3332404
Unter / usr / lib / nginx / modules ich sehen kann folgende Module 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

Antworten:

21

Das Stream-Modul wird wie folgt dynamisch hinzugefügt:

--with-stream=dynamic

Sie müssen "statisch" sein - laden Sie das Modul also direkt. Fügen Sie dazu ganz oben in Ihrer nginx.conf Folgendes hinzu:

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

Dann:

nginx -t

Wenn alles in Ordnung ist:

nginx -s reload
service nginx restart

Bearbeiten:

-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
quelle
Genial!! keine fehler mehr. Vielen Dank Joe, du bist mein Retter. Übrigens, was ist Nginx -s eigentlich, während ich dies ausführe? Ich erhalte den Fehler nginx: Option "-s" erfordert Parameter
user3332404
Ich habe meine Antwort bearbeitet und etwas verpasst. nginx -s reload lädt den Master-Prozess neu - der Service-Neustart macht im Grunde das Gleiche.
Joe Brailsford
Was wird das streamModul tun? Was nützt es
Satish
@ JoeBrailsford Gibt es eine Möglichkeit, diesen Prozess zu automatisieren? Die bcoz EC2-Instanz ist für EBS nicht permanent, auch wenn Sie erklären können, warum das Steam-Modul statisch sein muss, um zu funktionieren
Bikash
5

Habe nicht genug Ruf, um Joes Antwort zu kommentieren, also schreibe hier:

Unter CentOS7 befindet sich der Modulpfad im Ordner lib64. Sie müssen also diese Zeile hinzufügen:

load_module '/usr/lib64/nginx/modules/ngx_stream_module.so';
Illidan
quelle
2

Ich habe über dieses Problem kommen mit nginxauf Amazon Linux auf AWS EC2 - Instanz läuft, und meine /usr/lib64/nginx/modules/Ordner leer war.

Ich habe das Modul installiert mit yum:

yum install nginx-mod-stream

Die streamRichtlinie funktioniert jetzt ohne Änderung der nginx.conf.

Praegustator
quelle