J'ai spécialement créé une nouvelle machine virtuelle pour les tests. La machine virtuelle a deux IP : a.a.a.a et b.b.b.b. J'espère que nginx n'écoutera que a.a.a.a:80
.
Mais lorsque l'adresse IP d'écoute spécifiée est définie dans le fichier de configuration listen a.a.a.a:80;
后重启系统,nginx 会启动失败并报错Starting nginx: [emerg]: bind() to a.a.a.a failed (99: Cannot assign requested address)
,但是此时只要手动 systemctl start nginx
, elle peut démarrer normalement.
Après avoir supprimé l'adresse IP dans le fichier de configuration listen 80;
et redémarré le système, nginx peut démarrer normalement.
Résumé :
Après avoir spécifié l'adresse IP d'écoute, le service ne peut pas être démarré automatiquement avec le système, mais le service peut être démarré manuellement et utilisé normalement.
Si vous ne spécifiez pas l'adresse IP d'écoute, le service sera automatiquement démarré avec le système et fonctionnera normalement.
Comment résoudre cette situation ?
Voir les commentaires sur cet article pour les solutions temporaires (non développées par défaut)
La raison supposée est que nginx doit détecter l'adresse IP pour la liaison, mais le système ne renvoie pas de valeur lors de la détection ou le timing de détection est trop rapide, ce qui empêche le système d'autoriser la liaison. Veuillez attendre que le maître ajoute plus de détails
Vérifiez si l'utilisateur qui démarre nginx est l'utilisateur root. Par défaut, le port 80 ne peut être occupé que par root. Vous devez également modifier la configuration appropriée pour permettre aux utilisateurs ordinaires d'occuper le port 80.