nginx - nginx: [Emerg] bind () à [::]: 80 a échoué (98: adresse déjà utilisée)

248

Tout d'un coup, je reçois l'erreur ci-dessous nginx

 * Restarting nginx
 * Stopping nginx nginx
   ...done.
 * Starting nginx nginx
nginx: [emerg] bind() to [::]:80 failed (98: Address already in use)
nginx: [emerg] bind() to [::]:80 failed (98: Address already in use)
nginx: [emerg] bind() to [::]:80 failed (98: Address already in use)
nginx: [emerg] bind() to [::]:80 failed (98: Address already in use)
nginx: [emerg] bind() to [::]:80 failed (98: Address already in use)
nginx: [emerg] still could not bind()
   ...done.
   ...done.

Si je cours

lsof -i :80 or sudo fuser -k 80/tcp 

Je ne reçois rien. Rien sur le port 80

Ensuite, je lance ce qui suit:

sudo netstat -pan | grep ":80"
tcp        0      0 127.0.0.1:8070          0.0.0.0:*               LISTEN      15056/uwsgi     
tcp        0      0 10.170.35.97:39567      10.158.58.13:8080       TIME_WAIT   -               
tcp        0      0 10.170.35.97:39564      10.158.58.13:8080       TIME_WAIT   -               
tcp        0      0 10.170.35.97:39584      10.158.58.13:8080       TIME_WAIT   -               
tcp        0      0 10.170.35.97:39566      10.158.58.13:8080       TIME_WAIT   -               
tcp        0      0 10.170.35.97:39571      10.158.58.13:8080       TIME_WAIT   -               
tcp        0      0 10.170.35.97:39580      10.158.58.13:8080       TIME_WAIT   -               
tcp        0      0 10.170.35.97:39562      10.158.58.13:8080       TIME_WAIT   -               
tcp        0      0 10.170.35.97:39582      10.158.58.13:8080       TIME_WAIT   -               
tcp        0      0 10.170.35.97:39586      10.158.58.13:8080       TIME_WAIT   -               
tcp        0      0 10.170.35.97:39575      10.158.58.13:8080       TIME_WAIT   -               
tcp        0      0 10.170.35.97:39579      10.158.58.13:8080       TIME_WAIT   -               
tcp        0      0 10.170.35.97:39560      10.158.58.13:8080       TIME_WAIT   -               
tcp        0      0 10.170.35.97:39587      10.158.58.13:8080       TIME_WAIT   -               
tcp        0      0 10.170.35.97:39591      10.158.58.13:8080       TIME_WAIT   -               
tcp        0      0 10.170.35.97:39589      10.158.58.13:8080       TIME_WAIT   - 

Je suis perplexe. Comment déboguer cela?

J'utilise uwsgi avec une passe proxy sur le port 8070. uwsgi est en cours d'exécution. Nginx ne l'est pas. J'utilise Ubuntu 12.4

Voici les parties pertinentes de mon fichier de configuration nginx

upstream uwsgi_frontend {
          server 127.0.0.1:8070;
        }
server {
listen 80;
        server_name 127.0.0.1;
        location = /favicon.ico {
                  log_not_found off;
                }



                location / {
                       include uwsgi_params;
                       uwsgi_buffering off;

                       uwsgi_pass 127.0.0.1:8070;
                 }
        }

Voici comment installer nginx sur Ubuntu 12.04

nginx=stable;add-apt-repository ppa:nginx/$nginx;
apt-get update
apt get install nginx-full
Tampa
la source
19
J'ai trouvé le problème que je n'avais jamais rencontré auparavant. J'ai dû supprimer / etc / nginx / sites-available / default. Ensuite, cela a fonctionné. Ma conf était dans / etc / nginx / default
Tampa
J'exécutais Nginx + Varnish et j'ai eu cette erreur. La solution était top stop à la fois, puis démarrez nginx d'abord et ensuite vernissez.
Ben
vous pouvez essayer d'arrêter le service nommé.
amal
avez-vous supprimé votre valeur par défaut des sites activés?
Wolfpack'08
j'ai essayé toutes les solutions ici. Vérifié tous les ports utilisés (il était utilisé par NGINX lui-même), j'ai donc tué le port et l'ai redémarré. A fonctionné comme un charme.
gavin

Réponses:

202

[::]:80 est une adresse ipv6.

Cette erreur peut être provoquée si vous avez une configuration nginx qui écoute sur le port 80 et également sur le port [::]:80.

J'avais les éléments suivants dans mon fichier de sites disponibles par défaut:

listen 80;
listen [::]:80 default_server;

Vous pouvez résoudre ce problème en ajoutant ipv6only=onà la [::]:80présente comme suit:

listen 80;
listen [::]:80 ipv6only=on default_server;

Pour plus d'informations, voir:

http://forum.linode.com/viewtopic.php?t=8580

http://wiki.nginx.org/HttpCoreModule#listen

Nathan
la source
11
Vous pouvez également le corriger en supprimant simplement l'écoute 80; parce que écouter [::]: 80 personnes écoutent à la fois IPv4 et IPv6. Attention cependant, car certains systèmes (comme FreeBSD) séparent les sockets IPv4 et IPv6 et cela ne fonctionnera pas, mais pour Linux ça devrait aller. wiki.nginx.org/HttpCoreModule#listen
gitaarik
4
Merci d'avoir creusé cela et d'expliquer pourquoi la suppression /etc/nginx/sites-available/defaultaide à l'erreur ci-dessus.
Oliver
1
Même lorsque je commente la ligne ipv6, j'obtiens toujours la même erreur lorsque j'essaie sudo service nginx restart. Quand je le fais netstat -tulpn |grep 80, je ne reçois qu'une seule fois le processus nginx (0.0.0.0:80). Des idées pourquoi il ne redémarrera pas?
Roman
J'appuie ce que @rednaw a dit, mais au lieu de supprimer l'écoute, vous pouvez simplement le commenter
d4nyll
Le réglage a ipv6only=onrésolu le problème, mais nginx devrait vraiment détecter qu'il essaie de se lier à la même interface: port deux fois.
Dan Dascalescu
246

j'ai corrigé cela en exécutant sudo apachectl stop - il s'avère qu'Apache fonctionnait en arrière-plan et a empêché nginx de démarrer sur le port souhaité.

Sur Ubuntu Run sudo /etc/init.d/apache2 stop

lfender6445
la source
8
Utilisez sudo /etc/init.d/apache2 stoppour arrêter Apache sur Ubuntu 14.04
Footniko
3
La raison en est que vous ne pouvez pas avoir deux serveurs Web écoutant le même port. Choisissez-en un et, si nécessaire, un proxy. Par exemple, utilisez nginx, mais pour certaines demandes (comme pour les phpfichiers), proxy vers le port Apache.
d4nyll
Idem ici sur une nouvelle installation de Debian 9.
jirarium
Merci. Mais une idée pourquoi cela a-t-il soudainement commencé? Je n'ai pas touché le serveur pendant une semaine, mais il avait commencé hier soir.
Ajay Singh
1
Merci pour votre solution. Cela fonctionne pour moi, j'utilise Google Cloud Platform
congle
93

Mon cas est différent, j'ai dû tuer Nginx en cours d'exécution pour le redémarrer.

Au lieu de

sudo systemctl restart nginx

J'ai dû utiliser:

sudo pkill -f nginx & wait $!
sudo systemctl start nginx
datdinhquoc
la source
1
Je prenais 404 Not Found, et j'ai utilisé votre suggestion, maintenant j'ai résolu mon problème. Merci.
Bay
3
Cela a fonctionné pour moi. Rien d'autre ne l'a fait. Je ne sais pas quel processus démarre lorsque le système redémarre, mais je vais simplement l'ajouter dans ma routine de redémarrage nginx. Merci!
Khom Nazid
38

J'ai trouvé le problème que je n'avais jamais rencontré auparavant.

Je devais juste supprimer /etc/nginx/sites-available/default. Ensuite, cela a fonctionné.

Ma conf était dedans /etc/nginx/default.

Tampa
la source
2
+1 Cette solution a fonctionné pour moi, mais j'ai pensé qu'il devait y avoir quelque chose par défaut qui causait réellement le problème, alors j'ai creusé un peu plus profondément et fourni une réponse avec plus d'informations.
Nathan
11
Je dirais que la suppression du modèle de configuration de site par défaut n'est pas la meilleure solution - commenter la ligne qui contient listen 80;dans ce même modèle résout déjà le problème et correctement. Votre astuce fonctionne mais ce n'est pas ce que je ferais aux futurs lecteurs de votre question. C'est pourquoi je vous suggère de sélectionner la réponse de @ Nathan comme bonne réponse.
Oliver
4
J'ai eu le même problème après l'exécution apt-get dist-upgrade, qui a mis à niveau le package nginx, qui a créé un lien /etc/nginx/sites-enabledvers /etc/nginx/sites-available/default. nginx essayait de charger cette configuration par défaut, qui écoute le port 80 sur IPv6, puis il chargeait également ma lecture de mes vraies configurations. La suppression de ce lien symbolique a résolu le problème.
Dan Dascalescu
15
VOUS N'AVEZ PAS BESOIN DE SUPPRIMER /etc/nginx/sites-available/default , supprimez simplement le lien symbolique vers celui-ci -sudo rm /etc/nginx/sites-enabled/default
d4nyll
J'ai rencontré ce problème en essayant de s'exécuter nginxsur le port 8080 et varnishsur le port 80 et similaire à cette réponse, j'ai trouvé le problème dans une nginxconfiguration par défaut toujours à l'écoute sur le port 80 même si mes sites-availableconfigs écoutaient toutes sur le port 8080. Cela se trouvait sur/etc/nginx/conf.d/default
zigojacko
24

J'obtenais également la même erreur.

nginx: [Emerg] bind () à [::]: 80 a échoué (98: adresse déjà utilisée)

et quand j'ai tapé l'hôte local dans le navigateur, je recevais

Ça marche!

Ceci est la page Web par défaut pour ce serveur.

Le logiciel du serveur Web est en cours d'exécution mais aucun contenu n'a encore été ajouté. au lieu de la page d'accueil de nginx, apache2 fonctionne sur le même port,

  1. trouver le fichier apache2 ports.conf

    sudo /etc/apache2/ports.conf
    
  2. changer le port autre alors 80, je le fais comme70

  3. enregistrez le fichier

  4. redémarrez votre système

cela fonctionnera pour vous aussi, si vous tapez l'hôte local dans le navigateur, vous obtiendrez la page d'accueil de nginx

SAURABH
la source
1
Vous pouvez simplement ne pas vouloir exécuter Apache2 et nginx en même temps. J'ai trouvé que l'installation d'Apache démarre le service. J'ai donc lancé "sudo /etc/init.d/apache2 stop", puis j'ai pu démarrer nginx normalement. Cela vous évite également de redémarrer votre système.
Chris Westin
1
Vous avez raison de dire que la suppression du lien sym / etc / nginx / sites-enabled / default l'empêche d'écouter sur deux ports. Je trouve en fait un peu ennuyeux que chaque tutoriel sur nginx commence par suggérer à tout le monde de supprimer le lien "par défaut" mais c'est un sujet différent, je suppose.
eschipul
@IgorGanapolsky passer Apache à un autre port?
Menasheh
10

essayez de faire cette commande

sudo fuser -k 443/tcp
service nginx restart
jack
la source
8

Mon problème était que j'avais des directives d'écoute qui se chevauchaient. J'ai réussi à comprendre les directives qui se chevauchent en exécutant

grep -r listen /etc/nginx/*

Deux fichiers écoutaient sur le même port:

/etc/nginx/conf.d/default.conf:           listen 80;  
/etc/nginx/sites-enabled/default.conf:    listen 80;
Noir
la source
3
C'est une façon très soignée de vérifier les choses: grep -r listen /etc/nginx/*merci pour le partage!
Newskooler
6

J'ai eu le même problème dans letsencrypt (certbot) et nginx,

réf: https://github.com/certbot/certbot/issues/5486

cette erreur n'a pas encore de solution

donc, a changé un cron pour le renouvellement (mettre un rechargement après le renouvellement) (en utilisant la suggestion de certbot)

-- in /etc/cron.d/certbot
from
0 */12 * * * root test -x /usr/bin/certbot -a \! -d /run/systemd/system && perl -e 'sleep int(rand(3600))' && certbot -q renew 
to
0 */12 * * * root test -x /usr/bin/certbot -a \! -d /run/systemd/system && perl -e 'sleep int(rand(3600))' && certbot -q renew --pre-hook "service nginx stop" --post-hook "service nginx start"

journaux (courts):

-- in /var/log/syslog
Jun 10 00:14:25 localhost systemd[1]: Starting Certbot...
Jun 10 00:14:38 localhost certbot[22222]: nginx: [error] open() "/run/nginx.pid$
Jun 10 00:14:41 localhost certbot[22222]: Hook command "nginx" returned error c$
Jun 10 00:14:41 localhost certbot[22222]: Error output from nginx:
Jun 10 00:14:41 localhost certbot[22222]: nginx: [emerg] bind() to 0.0.0.0:443 $
Jun 10 00:14:41 localhost certbot[22222]: nginx: [emerg] bind() to 0.0.0.0:80 f$
Jun 10 00:14:41 localhost certbot[22222]: nginx: [emerg] bind() to 0.0.0.0:443 $
Jun 10 00:14:41 localhost certbot[22222]: nginx: [emerg] bind() to 0.0.0.0:80 f$
Jun 10 00:14:41 localhost certbot[22222]: nginx: [emerg] bind() to 0.0.0.0:443 $
Jun 10 00:14:41 localhost certbot[22222]: nginx: [emerg] bind() to 0.0.0.0:80 f$
Jun 10 00:14:41 localhost certbot[22222]: nginx: [emerg] bind() to 0.0.0.0:443 $
Jun 10 00:14:41 localhost certbot[22222]: nginx: [emerg] bind() to 0.0.0.0:80 f$
Jun 10 00:14:41 localhost certbot[22222]: nginx: [emerg] bind() to 0.0.0.0:443 $
Jun 10 00:14:41 localhost certbot[22222]: nginx: [emerg] bind() to 0.0.0.0:80 f$
Jun 10 00:14:41 localhost certbot[22222]: nginx: [emerg] still could not bind()
Jun 10 00:14:41 localhost systemd[1]: Started Certbot.


-- in /var/log/nginx/error.log
2018/06/10 00:14:27 [notice] 22233#22233: signal process started
2018/06/10 00:14:31 [notice] 22237#22237: signal process started
2018/06/10 00:14:33 [notice] 22240#22240: signal process started
2018/06/10 00:14:34 [notice] 22245#22245: signal process started
2018/06/10 00:14:38 [notice] 22255#22255: signal process started
2018/06/10 00:14:38 [error] 22255#22255: open() "/run/nginx.pid" failed (2: No $
2018/06/10 00:14:39 [emerg] 22261#22261: bind() to 0.0.0.0:443 failed (98: Addr$
2018/06/10 00:14:39 [emerg] 22261#22261: bind() to 0.0.0.0:80 failed (98: Addre$
2018/06/10 00:14:39 [emerg] 22261#22261: bind() to 0.0.0.0:443 failed (98: Addr$
2018/06/10 00:14:39 [emerg] 22261#22261: bind() to 0.0.0.0:80 failed (98: Addre$
2018/06/10 00:14:39 [emerg] 22261#22261: bind() to 0.0.0.0:443 failed (98: Addr$
2018/06/10 00:14:39 [emerg] 22261#22261: bind() to 0.0.0.0:80 failed (98: Addre$
2018/06/10 00:14:39 [emerg] 22261#22261: bind() to 0.0.0.0:443 failed (98: Addr$
2018/06/10 00:14:39 [emerg] 22261#22261: bind() to 0.0.0.0:80 failed (98: Addre$
2018/06/10 00:14:39 [emerg] 22261#22261: bind() to 0.0.0.0:443 failed (98: Addr$
2018/06/10 00:14:39 [emerg] 22261#22261: bind() to 0.0.0.0:80 failed (98: Addre$
2018/06/10 00:14:39 [emerg] 22261#22261: still could not bind()
Wagner Pereira
la source
1
super aléatoire, mais c'était mon problème, je crois. merci d'avoir posté ça. mon erreur a semblé se manifester à cause d'une entrée de domaine obsolète qu'elle essayait de renouveler mais ne pouvait pas parce que je ne contrôlais plus le domaine.
w--
Je suppose que c'est probablement aussi mon problème. mais je dois attendre pour y jeter un œil
Oscar Zhou1989
2

Changez d'abord le port d'écoute Apache 80 en 8080 apache dans /etc/apache2/ports.conf

Listen 1.2.3.4:80 to 1.2.3.4:8080
sudo service apache2 restart 

ou

sudo service httpd restart    // in case of centos

puis ajoutez nginx comme serveur proxy inverse qui écoutera le port apache

server {
 listen   1.2.3.4:80;
 server_name  some.com;

 access_log  /var/log/nginx/something-access.log;

 location / {
  proxy_pass http://localhost:8080;
  proxy_redirect off;
  proxy_set_header Host $host;
  proxy_set_header X-Real-IP $remote_addr;
  proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
 }


location ~* ^.+\.(jpg|js|jpeg|png)$ {
   root /usr/share/nginx/html/;
}

location /404.html {
  root /usr/share/nginx/html/40x.html;
}

error_page 404 /404.html;
    location = /40x.html {
}

error_page 500 502 503 504 /50x.html;
    location = /50x.html {
}

# put code for static content like js/css/images/fonts
}

Après les modifications, redémarrez le serveur nginx

sudo service nginx restart

Maintenant, tout le trafic sera géré par le serveur nginx et enverra toutes les requêtes dynamiques à apache et le contenu statique sera servi par le serveur nginx.

Pour une configuration avancée comme le cache:

https://www.linode.com/docs/web-servers/nginx/slightly-more-advanced-configurations-for-nginx/#basic-nginx-caching

Kamal Kumar
la source
1

J'ai rencontré un problème similaire. le journal est comme ci-dessous

2018/10/31 12:54:20 [emerg] 128005#128005: bind() to 0.0.0.0:80 failed (98: Address already in use)
2018/10/31 12:54:20 [emerg] 128005#128005: bind() to 0.0.0.0:443 failed (98: Address already in use)
2018/10/31 12:54:20 [emerg] 128005#128005: bind() to [::]:80 failed (98: Address already in use)
2018/10/31 12:54:20 [emerg] 128005#128005: bind() to 0.0.0.0:80 failed (98: Address already in use)
2018/10/31 12:54:20 [emerg] 128005#128005: bind() to 0.0.0.0:443 failed (98: Address already in use)
2018/10/31 12:54:20 [emerg] 128005#128005: bind() to [::]:80 failed (98: Address already in use)
2018/10/31 12:54:20 [emerg] 128005#128005: bind() to 0.0.0.0:80 failed (98: Address already in use)
2018/10/31 12:54:20 [emerg] 128005#128005: bind() to 0.0.0.0:443 failed (98: Address already in use)
2018/10/31 12:54:20 [emerg] 128005#128005: bind() to [::]:80 failed (98: Address already in use)
2018/10/31 12:54:20 [emerg] 128005#128005: bind() to 0.0.0.0:80 failed (98: Address already in use)
2018/10/31 12:54:20 [emerg] 128005#128005: bind() to 0.0.0.0:443 failed (98: Address already in use)
2018/10/31 12:54:20 [emerg] 128005#128005: bind() to [::]:80 failed (98: Address already in use)
2018/10/31 12:54:20 [emerg] 128005#128005: bind() to 0.0.0.0:80 failed (98: Address already in use)
2018/10/31 12:54:20 [emerg] 128005#128005: bind() to 0.0.0.0:443 failed (98: Address already in use)
2018/10/31 12:54:20 [emerg] 128005#128005: bind() to [::]:80 failed (98: Address already in use)
2018/10/31 12:54:20 [emerg] 128005#128005: still could not bind()
2018/10/31 12:54:23 [alert] 127997#127997: unlink() "/run/nginx.pid" failed (2: No such file or directory)
2018/10/31 22:40:48 [info] 36948#36948: Using 32768KiB of shared memory for push module in /etc/nginx/nginx.conf:68
2018/10/31 22:50:40 [emerg] 37638#37638: duplicate listen options for [::]:80 in /etc/nginx/sites-enabled/default:18
2018/10/31 22:51:33 [info] 37787#37787: Using 32768KiB of shared memory for push module in /etc/nginx/nginx.conf:68

Le dernier [emerg]montre ce duplicate listen options for [::]:80qui signifie qu'il y a plus d'un fichier bloc nginx contenant[::]:80 .

Ma solution consiste à supprimer l'un des [::]:80 paramètres

PS vous avez probablement un fichier de blocage par défaut. Mon conseil est de conserver ce fichier comme serveur par défaut pour le port 80. et de le supprimer [::]:80des autres fichiers de blocage

Oscar Zhou1989
la source
1

J'utilise superviseur pour exécuter Nginx et Gunicorn côte à côte sur un conteneur Docker.

C'était la configuration utilisée pour le superviseur:

[supervisord]
nodaemon=true

[program:gunicorn]
command = /project/start.sh
user = www-data


[program:nginx]
command=/usr/sbin/nginx

Le problème était de savoir comment j'ai lancé Ngnix: par défaut, il s'exécute au premier plan. Cela oblige la supervision à réessayer d'exécuter une autre instance de Nginx.

En ajoutant -g 'daemon off;'à la ligne de commande, Nginx est resté au premier plan, le superviseur a cessé d'essayer d'exécuter une autre instance.

Sébastien DA ROCHA
la source
1

Dans mon cas, l'un des services Apache, Apache2 ou Nginx était déjà en cours d'exécution et, pour cette raison, je n'ai pas pu démarrer l'autre service.

Rishikesh Chandra
la source
0

J'ai eu plusieurs fichiers * .save (vidages d'urgence de nano) de différents fichiers de configuration NGINX dans mon répertoire sites-avilable. Une fois que j'ai supprimé ces fichiers .save, NGINX a redémarré correctement. J'ai supposé que ceux-ci étaient inoffensifs car il n'y avait pas de liens symboliques correspondants, mais je suppose que j'avais tort.

Allen
la source
0

Pour suivre les réponses @ lfender6445 et @SAURABH -

Mon problème était également le fait qu'après la mise à niveau vers Vagrant 2.2.2, Apache2 fonctionnait en tant que serveur Web lors du démarrage de l'invité. Dans le passé, je n'avais que nginx comme serveur Web.

vagrant ssh dans la boîte et exécutez la commande suivante pour désactiver le démarrage d'Apache2 à chaque démarrage de la boîte d'invité:

sudo update-rc.d -f apache2 remove

Quittez ssh, vagrant stopp, vagrant up. Problème résolu.

Lance Cleveland
la source
0

Si le problème persiste après avoir essayé l'une des solutions ci-dessus, redémarrez votre serveur une fois. Cela a fonctionné pour moi :)

Deejay
la source
Oui, bien sûr. Mais tuer le processus nginx puis redémarrer uniquement nginx fonctionne également. C'est la réponse de @datdinhquoc.
Khom Nazid
0

Dans mon cas, le coupable s'est avéré être un bloc serveur contenant:

        listen  127.0.0.1:80;
        listen  [::1]:80 ipv6only=on;
        server_name  localhost;

Sous Linux, une socket écoutant sur une IP spécifique (par exemple [::1]:80) entre en conflit avec une socket écoutant sur le même port mais sur n'importe quelle IP (ie [::]:80). Normalement, nginx traitera ce problème de manière transparente en utilisant une seule socket en arrière-plan. Cependant, la spécification explicite ipv6only(ou certaines autres options) sur la directive listen force nginx à (essayer de) créer un socket séparé pour elle, ce qui entraîne l' Address already in useerreur.

Puisque ipv6only=onc'est de toute façon la valeur par défaut (depuis 1.3.4), le correctif consistait simplement à supprimer cette option de cette directive, et à s'assurer qu'elle ipv6onlyn'était utilisée nulle part ailleurs dans ma configuration.

Matthijs
la source
0

J'ai le même problème, mais je vois que le port 80 écouté par Nginx:

tcp        0      0 0.0.0.0:80                  0.0.0.0:*                   LISTEN      9730/nginx 

Mais quand j'essaye de le redémarrer, j'ai l'erreur:

    service nginx restart
Stopping nginx:                                            [FAILED]
Starting nginx: nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:443 failed (98: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:443 failed (98: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:443 failed (98: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:443 failed (98: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:443 failed (98: Address already in use)
nginx: [emerg] still could not bind()

Mon problème était dans le fichier de configuration, le fichier PID est défini et le système ne peut pas l'attraper correctement:

user nginx;
worker_processes 1;
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;

Quand je l'ai retiré, cela a fonctionné.

zombi_man
la source