Ich habe Nginx 1.6.2 mit Konfiguration zum Upgrade der Verbindung zum WebSocket.
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
Wenn keine WebSocket-Verbindung geöffnet wird, funktioniert „service nginx stop“ und sowohl der Master- als auch der Worker-Prozess werden ordnungsgemäß gestoppt.
killproc $prog -QUIT
Aber wenn ich einen geöffneten Websocket habe, kann Nginx nicht gestoppt werden, obwohl ich Folgendes erhalte:
Stopping nginx: [ OK ]
Ich habe es versucht :
killproc $prog -KILL
Aber wie erwartet wird der Master zwangsweise beendet, wenn ich den Befehl zum ersten Mal ausführe, und der Worker, wenn ich ihn erneut ausführe.
Was empfehlen Sie, um ein Herunterfahren von nginx zu erzwingen? Ich denke daran, killproc durch Folgendes zu ersetzen:
pkill $prog
Antwort1
http://nginx.org/en/docs/control.html
Versuchen Sie, TERM
oder INT
anstelle von zu verwenden KILL
.
KILL
ist zu „schnell“, es gibt dem Nginx-Master keine Chance, die Worker anzuhalten.