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;
}
}
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
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/*;
}
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.
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?
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!';
}
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.
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)
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.