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
Réponses:
[::]: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:
Vous pouvez résoudre ce problème en ajoutant
ipv6only=on
à la[::]:80
présente comme suit:Pour plus d'informations, voir:
http://forum.linode.com/viewtopic.php?t=8580
http://wiki.nginx.org/HttpCoreModule#listen
la source
/etc/nginx/sites-available/default
aide à l'erreur ci-dessus.sudo service nginx restart
. Quand je le faisnetstat -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?ipv6only=on
résolu le problème, mais nginx devrait vraiment détecter qu'il essaie de se lier à la même interface: port deux fois.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
la source
sudo /etc/init.d/apache2 stop
pour arrêter Apache sur Ubuntu 14.04php
fichiers), proxy vers le port Apache.Mon cas est différent, j'ai dû tuer Nginx en cours d'exécution pour le redémarrer.
Au lieu de
J'ai dû utiliser:
la source
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
.la source
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.apt-get dist-upgrade
, qui a mis à niveau le package nginx, qui a créé un lien/etc/nginx/sites-enabled
vers/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./etc/nginx/sites-available/default
, supprimez simplement le lien symbolique vers celui-ci -sudo rm /etc/nginx/sites-enabled/default
nginx
sur le port 8080 etvarnish
sur le port 80 et similaire à cette réponse, j'ai trouvé le problème dans unenginx
configuration par défaut toujours à l'écoute sur le port 80 même si messites-available
configs écoutaient toutes sur le port 8080. Cela se trouvait sur/etc/nginx/conf.d/default
J'obtenais également la même erreur.
et quand j'ai tapé l'hôte local dans le navigateur, je recevais
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,
trouver le fichier apache2 ports.conf
changer le port autre alors
80
, je le fais comme70
enregistrez le fichier
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
la source
essayez de faire cette commande
la source
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
Deux fichiers écoutaient sur le même port:
la source
grep -r listen /etc/nginx/*
merci pour le partage!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)journaux (courts):
la source
Changez d'abord le port d'écoute Apache 80 en 8080 apache dans /etc/apache2/ports.conf
ou
puis ajoutez nginx comme serveur proxy inverse qui écoutera le port apache
Après les modifications, redémarrez le serveur nginx
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
la source
J'ai rencontré un problème similaire. le journal est comme ci-dessous
Le dernier
[emerg]
montre ceduplicate listen options for [::]:80
qui signifie qu'il y a plus d'un fichier bloc nginx contenant[::]:80
.Ma solution consiste à supprimer l'un des
[::]:80
paramètresPS 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
[::]:80
des autres fichiers de blocagela source
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:
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.la source
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.
la source
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.
la source
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é:
Quittez ssh, vagrant stopp, vagrant up. Problème résolu.
la source
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 :)
la source
Dans mon cas, le coupable s'est avéré être un bloc serveur contenant:
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 expliciteipv6only
(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 use
erreur.Puisque
ipv6only=on
c'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'elleipv6only
n'était utilisée nulle part ailleurs dans ma configuration.la source
J'ai le même problème, mais je vois que le port 80 écouté par Nginx:
Mais quand j'essaye de le redémarrer, j'ai l'erreur:
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:
Quand je l'ai retiré, cela a fonctionné.
la source