Nginx ne récupère pas le site dans les sites activés?

103

Après plus de 10 heures de recherche, je n'ai pas compris pourquoi cela ne fonctionne pas! J'essaie de déplacer mon hôte local vers mon dossier activé pour les sites qui se trouve dans / etc / nginx / sites-enabled / default.

C'est un lien symbolique du dossier disponible sur les sites. Lorsque j'utilise la configuration suivante, j'obtiens un "impossible de se connecter" en utilisant localhost: 8080 comme adresse

nginx.conf (/usr/local/nginx/conf/nginx.conf):

user  www-data;
worker_processes  2;

events {
    worker_connections  1024;
}


http {
    include       mime.types;
    default_type  application/octet-stream;

    sendfile        on;

    keepalive_timeout  65;

    include /etc/nginx/sites-enabled/*; 
}

sites disponibles (/ etc / nginx / sites-available / default):

server {
  listen   8080;
  root /home/myusername/myown/customdirectory;
  index index.php index.html index.htm;
  server_name localhost;

    location / {
        try_files $uri $uri/ /index.html;
    }

    location /doc/ {
        alias /usr/share/doc/;
        autoindex on;
        allow 127.0.0.1;
        allow ::1;
        deny all;
    }


    error_page 404 /404.html;

    error_page 500 502 503 504 /50x.html;
    location = /50x.html {
        root /usr/share/nginx/www;
    }

    location ~ \.php$ {
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_pass unix:/var/run/php5-fpm.sock;
        fastcgi_index index.php;
        include fastcgi_params;
    }

    location ~ /\.ht {
        deny all;
    }
}

Je peux faire fonctionner cela si je mets les informations pertinentes des sites disponibles dans le nginx.conf, je ne peux tout simplement pas comprendre pourquoi cela ne fonctionne pas de cette façon?

Merci!

Discorick
la source
2
Êtes-vous sûr que le lien symbolique n'est pas rompu? ls -l / etc / nginx / sites-enabled /
catalin.costache
1
Oui, j'ai vérifié le lien symbolique, toujours pas de chance
Discorick
voir aussi: askubuntu.com/questions/1195067/… .
Chris Halcrow

Réponses:

198

J'ai eu le même problème. C'était parce que j'avais accidentellement utilisé un chemin relatif avec le lien symbolique.

Êtes-vous sûr d'avoir utilisé des chemins complets, par exemple:

ln -s /etc/nginx/sites-available/example.com.conf /etc/nginx/sites-enabled/example.com.conf
Sam
la source
Pour moi, cela a également résolu le problème! Merci!
Sander Versluys
4
Merci d'avoir sauvé ma vie!
MatTheCat du
4
Peut-être un problème avec un chemin incorrect dans le lien relatif plus qu'il ne s'agit d'un lien relatif. Par exemple, si votre lien ne commence pas par ../pour parcourir un répertoire, entrez sites-available. Si vous pouvez catle lien symbolique et obtenir la sortie, Nginx devrait également le lire comme @Hannes l'a dit. L'utilisation d'un chemin absolu rend simplement un chemin incorrect beaucoup plus difficile à faire.
Bryson
n'y a-t-il pas un outil en ligne de commande pour obtenir le chemin absolu d'un fichier?
Je ne peux pas croire que c'était le problème. Je n'aurais pas deviné de vérifier cela! Merci!
phouse512
36

Changement de:

include /etc/nginx/sites-enabled/*; 

à

include /etc/nginx/sites-enabled/*.*; 

corrigé mon problème

Roy Robles
la source
2
a également corrigé le problème pour moi sous Ubuntu 16.xx
Jan Wiemers
2
comment avez-vous compris cela? Cela a fonctionné pour moi, mais ce n'est pas évident
après
2
cela a été corrigé pour moi lorsque je jouais avec nginx et Docker.
Eugen
1
idem, corrigé sur l'image ubuntu / trusty64
Bryan A
2
C'était le problème pour moi! Mais dans mon cas, il recherchait * .conf et le mien avait une fin différente. Fou j'ai perdu des heures là-dessus!
Nigel
16

Inclure sites-available/defaultdans sites-enabled/default. Il ne nécessite qu'une seule ligne.

Dans sites-enabled/default(nouvelle version de configuration?):

Il semble que le chemin d'inclusion soit relatif au fichier qui l'a inclus

include sites-available/default;

Consultez la includedocumentation .


Je crois que certaines versions de nginx permettent d'inclure / de créer des liens vers d'autres fichiers uniquement en ayant une seule ligne avec le chemin relatif du fichier inclus. (Du moins, c'est ce à quoi cela ressemblait dans certains fichiers de configuration "hérités" que j'utilisais, jusqu'à ce qu'une nouvelle version de nginx les brise.)

Dans sites-enabled/default(ancienne version de configuration?):

Il semble que le chemin d'inclusion soit relatif au fichier actuel

../sites-available/default
Joël Purra
la source