web-dev-qa-db-fra.com

nginx n'écoute pas le port 80

Je viens d'installer un serveur Ubuntu 12.04 et nginx 1.2.7, de supprimer default des sites activés et d'ajouter mon propre fichier dans sites-available et un lien symbolique vers sites-enabled. Puis redémarré nginx.

Problème: Cependant, accéder à l'URL ne charge pas le site. netstat -nlp | grep nginx et netstat -nlp | grep 80 ne renvoie aucun résultat! lsof -i :80 ne renvoie également rien. Un Dig provenant d'un autre serveur renvoie l'adresse IP correcte, ce qui ne devrait donc pas être un problème de DNS. J'ai pu me connecter à Apache qui a maintenant arrêté son service. Les journaux nginx ne montrent rien non plus.

Comment dois-je résoudre ce problème?

/etc/nginx/site-available/mysite.com

server {
    listen   80;
    server_name www.mysite.com mysite.com *.mysite.com;
    access_log /var/log/nginx/access.log;
    error_log /var/log/nginx/error.log;
    root /var/www/mysite/public;

    index index.php index.html;

    location / {
        try_files $uri $uri/ /index.php?$args ;
    }
    location ~ \.php$ {
        fastcgi_pass unix:/var/run/php5-fpm.sock;
        fastcgi_index index.php;
        include fastcgi_params;
        fastcgi_read_timeout 300;
    }

}
61
Nyxynyx

J'ai eu ce même problème, la solution était que je n'avais pas lié correctement mon fichier siteconf. Essayez d'exécuter vim /etc/nginx/sites-enabled/mysite.com— pouvez-vous y accéder? Je devenais "permission refusée".

Si non couru:

rm /etc/nginx/sites-enabled/mysite.com
ln -s /etc/nginx/sites-available/mysite.com /etc/nginx/sites-enabled/mysite.com
119
thcipriani

Si vos journaux ne disent rien sur le problème, vous n'incluez peut-être pas l'annuaire activé pour les sites. Un moyen simple de savoir que le site est en cours de chargement consiste à définir un chemin unique sur le chemin du journal des erreurs/accès dans votre bloc de serveur, de recharger nginx et de vérifier si les fichiers sont créés.

Assurez-vous que la directive include suivante existe dans le contexte http dans /etc/nginx/nginx.conf.

http {
  ...
  include /etc/nginx/sites-enabled/*;
}
24
Patrick

J'ai rencontré le même problème. J'ai eu une erreur Failed to load resource: net::ERR_CONNECTION_REFUSED lors de la connexion via HTTP, mais très bien via HTTPS. A exécuté netstat -tulpn et vu que nginx ne se liait pas au port 80 pour IPv4. Fait tout décrit ici. S'est avéré être quelque chosetrèsstupide:

Assurez-vous que le fichier sites-available avec le default_server est effectivement activé.

J'espère que cela a sauvé un autre pauvre idiot quelque temps.

5
dayuloli

Vous liez probablement nginx au port 80 deux fois. Est-ce votre fichier de configuration complet? N'avez-vous pas une autre déclaration à l'écoute du port 80?

4
Andres

J'ai trouvé utile d'approcher le débogage de nginx en procédant comme suit:

1 ... Assurez-vous que nginx est en cours d'exécution.

ps aux | grep nginx

2 ... Recherchez les processus déjà liés au port en question.

lsof -n -i:80

3 ... Assurez-vous que nginx a été rechargé.

Sudo nginx -t
Sudo nginx -s reload

Sur Mac, brew services restart nginx est pas suffisant pour recharger nginx.

4 ... Essayez de créer manuellement des réponses simples pour vous assurer que votre chemin d'accès n'est pas gâché. Ceci est particulièrement utile lorsque des problèmes surviennent lors de l'utilisation de proxy_pass pour transférer des demandes à d'autres applications en cours d'exécution.

location / {
    add_header Content-Type text/html;
    return 200 'Here I am!';
}
2
spencer.sm

Un point-virgule ; manquant dans /etc/nginx/nginx.conf, par exemple sur la ligne précédant include /etc/nginx/servers-enabled/*;, peut simplement contourner cette introduction et la vérification de nginx -t réussira quand même.

Vérifiez donc que toutes les instructions dans /etc/nginx/nginx.conf se terminent par un ; point-virgule.

2
noraj

Avez-vous vérifié si votre binaire nginx existe vraiment? s'il vous plaît vérifier si

#whereis nginx

sort le chemin binaire et vérifie ce chemin avec votre script init depuis /etc/init.d/nginx. par exemple.

DAEMON=/usr/sbin/nginx

(Dans mon script d'initialisation, "test -x $ DAEMON || exit 0" est invoqué et, dans tous les cas, ce script n'a rien renvoyé - mon fichier binaire était complètement manquant)

1
Dionysius

Dans mon cas, les sorties de la commande réseau ont montré que nginx était correctement lié au port 80, mais les ports n'étaient pas accessibles de l'extérieur ni visibles avec nmap.

Bien que je soupçonne un pare-feu, il se trouve que les anciennes règles iptables de la machine redirigeaient le trafic depuis ces ports et étaient en conflit avec nginx. Utilisez Sudo iptables-save pour afficher toutes les règles actuellement applicables.

0
Silveri