J'utilise nginx en tant que proxy inverse. Chaque fois que je mets à jour la configuration pour elle en utilisant
sudo "cp -r #{nginx_config_path}* /etc/nginx/sites-enabled/"
sudo "kill -s HUP `cat /var/run/nginx.pid`"
Je fais face à un bref temps d'arrêt. Comment puis-je éviter cela?
sites-enabled
, pas de le copier. Pas lié à votre problème particulier, mais vous voudrez peut-être examiner cela.kill HUP
est le moyen de faire un rechargement gracieux dans nginx.Réponses:
Courir
service nginx reload
ou/etc/init.d/nginx reload
Il effectuera un rechargement à chaud de la configuration sans temps d'arrêt. Si vous avez des demandes en attente, il y aura des processus nginx en attente qui gèreront ces connexions avant sa mort. Il s'agit donc d'un moyen extrêmement élégant de recharger les configurations.
Parfois, vous voudrez peut-être préfixer avec
sudo
la source
SIGHUP
au processus maître nginx. Il ne devrait pas y avoir de différence. nginx.org/en/docs/control.htmlcat $PIDFILE
|| echo -n "ne peut pas recharger"service nginx reload
etnginx -s reload
? Si je lance l'ancien, j'obtiens le résultat suivant:,Reloading nginx configuration: nginx.
mais mes modifications ne sont pas mises à jour. Si je lance ce dernier, je n'obtiens aucune sortie, mais mes modifications sont reflétées.log_not_found
directive, mais j'ai constaté que je devais faire un redémarrage pour que cela fonctionne. Je suppose que le rechargement ne fonctionne pas pour toutes les directives?Courir
/usr/sbin/nginx -s reload
Voir http://wiki.nginx.org/CommandLine pour plus d'options en ligne de commande.
la source
Non, vous avez tort, vous n'êtes pas censé faire face à un temps mort avec la procédure que vous décrivez. (Nginx peut non seulement recharger la configuration à la volée sans interruption, mais même mettre à niveau l'exécutable à la volée, toujours sans interruption.)
Conformément à http://nginx.org/docs/control.html#reconfiguration , l'envoi du
HUP
signal à nginx garantit son redémarrage en douceur et, si les fichiers de configuration sont incorrects, toute la procédure est abandonnée et vous ' re avec le nginx comme avant d’envoyer leHUP
signal. Aucun temps d'arrêt ne devrait être possible.la source
Habituellement, le rechargement du fichier de configuration d'un service ne devrait pas affecter le service en cours d'exécution. Cependant, cela dépend de la façon dont le
SIGHUP
signal est traité.Si un service spécifique connaît un temps d'arrêt pendant le rechargement, vous pouvez le contourner en exécutant le même service sur plusieurs serveurs, de préférence à l'aide d'un équilibreur de charge. Dans ce cas, vous pouvez retirer un serveur à la fois et le recharger / le redémarrer. Ensuite, il peut être rajouté après confirmation que tout va bien.
la source