¿Nginx no selecciona el sitio en sitios habilitados?

103

¡Después de más de 10 horas de investigación, no he descubierto por qué esto no funciona! Estoy tratando de mover mi localhost a la carpeta habilitada para mi sitio que está en / etc / nginx / sites-enabled / default.

ES un enlace simbólico de la carpeta de sitios disponibles. Cuando utilizo la siguiente configuración, obtengo un mensaje "No se puede conectar" usando localhost: 8080 como mi dirección

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/*; 
}

sitios 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;
    }
}

Puedo hacer que esto funcione si pongo la información relevante de los sitios disponibles en nginx.conf, simplemente no puedo entender por qué no funciona de esta manera.

¡Gracias!

Discorick
fuente
2
¿Estás seguro de que el enlace simbólico no está roto? ls -l / etc / nginx / sites-enabled /
catalin.costache
1
Sí, verifiqué el enlace simbólico, todavía no
tuve
ver también: askubuntu.com/questions/1195067/… .
Chris Halcrow

Respuestas:

198

Yo tuve el mismo problema. Fue porque accidentalmente usé una ruta relativa con el enlace simbólico.

¿Está seguro de que utilizó rutas completas, por ejemplo:

ln -s /etc/nginx/sites-available/example.com.conf /etc/nginx/sites-enabled/example.com.conf
Sam
fuente
¡Para mí esto también lo solucionó! ¡Gracias!
Sander Versluys
4
¡Gracias por salvarme la vida!
MatTheCat
4
Puede ser un problema con una ruta incorrecta en el enlace relativo más que un enlace relativo. Por ejemplo, si su enlace no comienza con ../para recorrer un directorio, ingrese sites-available. Si puede catel enlace simbólico y obtener la salida, Nginx debería leerlo también como dijo @Hannes. Usar una ruta absoluta simplemente hace que una ruta incorrecta sea mucho más difícil de hacer.
Bryson
¿No existe una herramienta de línea de comandos para obtener la ruta absoluta de un archivo?
No puedo creer que este sea el problema. ¡No habría adivinado comprobar esto! ¡Gracias!
phouse512
36

Cambio de:

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

a

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

solucionó mi problema

Roy Robles
fuente
2
solucionó el problema para mí también en Ubuntu 16.xx
Jan Wiemers
2
¿Cómo averiguaste esto? Funcionó para mí, pero esto no es obvio
lejos
2
esto se solucionó para mí cuando jugaba con nginx y Docker.
Eugen
1
ídem, lo arregló en la imagen de ubuntu / trusty64
Bryan A
2
¡Ese fue el problema para mí! Pero en mi caso, buscaba * .conf y el mío tenía un final diferente. ¡Loco, perdí horas con esto!
Nigel
16

Incluir sites-available/defaulten sites-enabled/default. Requiere solo una línea.

En sites-enabled/default(¿nueva versión de configuración?):

Parece que la ruta de inclusión es relativa al archivo que lo incluyó

include sites-available/default;

Consulte la includedocumentación .


Creo que ciertas versiones de nginx permiten incluir / vincular a otros archivos simplemente al tener una sola línea con la ruta relativa al archivo incluido. (Al menos eso es lo que parecía en algunos archivos de configuración "heredados" que he estado usando, hasta que una nueva versión de nginx los rompió).

En sites-enabled/default(¿versión de configuración antigua?):

Parece que la ruta de inclusión es relativa al archivo actual

../sites-available/default
Joel Purra
fuente