Nginx non rileva il sito in siti abilitati?


103

Dopo oltre 10 ore di ricerca non ho capito perché non funziona! Sto provando a spostare il mio localhost nella cartella dei miei siti abilitati che si trova in / etc / nginx / sites-enabled / default.

È un collegamento simbolico dalla cartella siti disponibili. Quando si utilizza la seguente configurazione ottengo un "impossibile connettersi" utilizzando localhost: 8080 come mio indirizzo

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

siti disponibili (/ etc / nginx / siti disponibili / 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;
    }
}

Posso farlo funzionare se metto le informazioni pertinenti dai siti disponibili in nginx.conf, non riesco a capire perché non funziona in questo modo?

Grazie!


2
Sei sicuro che il collegamento simbolico non sia interrotto? ls -l / etc / nginx / sites-enabled /
catalin.costache

1
Sì, ho ricontrollato il
collegamento


Risposte:


198

Ho avuto lo stesso problema. È stato perché avevo accidentalmente utilizzato un percorso relativo con il collegamento simbolico.

Sei sicuro di aver utilizzato percorsi completi, ad esempio:

ln -s /etc/nginx/sites-available/example.com.conf /etc/nginx/sites-enabled/example.com.conf

Per me anche questo lo ha risolto! Grazie!
Sander Versluys

4
Grazie per avermi salvato la vita!
MatTheCat

4
Può essere un problema con un percorso errato nel collegamento relativo più che un collegamento relativo. Ad esempio, se il tuo collegamento non inizia con ../per attraversare una directory, inserisci sites-available. Se puoi catil collegamento simbolico e ottenere l'output, Nginx dovrebbe leggerlo anche come ha detto @Hannes. L'uso di un percorso assoluto rende semplicemente molto più difficile un percorso errato.
Bryson

non esiste uno strumento a riga di comando per ottenere il percorso assoluto di un file?

Non posso credere che questo fosse il problema. Non avrei immaginato di verificarlo! Grazie!
phouse512

36

Cambiando da:

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

per

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

risolto il mio problema


2
risolto il problema anche per me con Ubuntu 16.xx
Jan Wiemers

2
come l'hai capito? Ha funzionato per me, ma questo non è ovvio
lontano

2
questo è stato risolto per me quando giocavo con nginx e Docker.
Eugen

1
idem, risolto il problema sull'immagine ubuntu / trusty64
Bryan A

2
Questo era il problema per me! Ma nel mio caso, stava cercando * .conf e il mio aveva un finale diverso. Pazzo, ho sprecato ore per questo!
Nigel

16

Includi sites-available/defaultin sites-enabled/default. Richiede solo una riga.

In sites-enabled/default(nuova versione di configurazione?):

Sembra che il percorso di inclusione sia relativo al file che lo includeva

include sites-available/default;

Consulta la includedocumentazione .


Credo che alcune versioni di nginx consentano l'inclusione / il collegamento ad altri file puramente avendo una singola riga con il percorso relativo al file incluso. (Almeno questo è quello che sembrava in alcuni file di configurazione "ereditati" che stavo usando, fino a quando una nuova versione di nginx non li ha interrotti.)

In sites-enabled/default(vecchia versione di configurazione?):

Sembra che il percorso di inclusione sia relativo al file corrente

../sites-available/default
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.