2012-08-14 14 views
29

Come impostare index.html per il nome del dominio, ad es. https://www.example.com/ - porta l'utente a index.html nella directory principale.Come impostare index.html come file root in Nginx?

Ho provato cose diverse, come:

server { 
    # some configs 

    location =/{ 
      index index.html; 
      fastcgi_index index.html; 
    } 
or 
    location/{ 
      index index.html; 
      fastcgi_index index.html; 
    } 

} 

Niente mi ha aiutato.

Ci sono alcune altre configurazioni con la parola chiave posizione, anche se avevo commentato loro.

Altri "Location" configurazioni nella clausola server {:

location ~ .*(css|htc|js|bmp|jp?g|gif|ico|cur|png|swf|htm?|html)$ { 
     access_log off; 
     root $www_root; 
} 

location ~ \.php$ 
{ 
     include       /etc/nginx/fastcgi_params; 
     index       index.html; 
     fastcgi_index     index.html; 
     fastcgi_param SCRIPT_FILENAME $www_root$fastcgi_script_name; 
     fastcgi_param QUERY_STRING  $query_string; 
     fastcgi_param PATH_INFO   $fastcgi_path_info; 
     fastcgi_pass     127.0.0.1:9000; 
     # Директива определяет что ответы FastCGI-сервера с кодом больше или равные 400 
     # перенаправлять на обработку nginx'у с помощью директивы error_page 
     fastcgi_intercept_errors  on; 
     break; 
} 

location ~ /\.ht { 
    deny all; 
} 

Tutti loro sono state commentate e commentate, ma non serviva a niente.

Le edizioni PS sono state apportate nel file /etc/nginx/sites-enabled/domainname.com.

risposta

15

La risposta è quello di mettere il dir radice alle direttive di localizzazione:

root /srv/www/ducklington.org/public_html; 
+0

per me 'index.html' funziona perfettamente. Non ha alcuna importanza, è solo un nome di un file sul filesystem. –

30

nel blocco posizione si può fare:

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

che dirà ngingx di cercare un file con il nome esatto dato per primo, e se nessuno di questi file viene trovato proverà uri/index.html. Quindi, se arriva una richiesta per https://www.example.com/, cercherebbe prima una corrispondenza esatta del file, e non lo troverà per verificare index.html

+1

Sembra che si traduca in loop infinito se la cartella non contiene index.html –

+2

Non sono sicuro che lo consideri una best practice o altro. Se non riesci a trovare il file o la directory che stai cercando, in realtà dovrebbe restituire un 404, non l'indice. –

+0

restituirà l'indice solo se è un nome di directory altrimenti starai cercando \ index.html che non sarà lì e quindi restituirà 404 – cobaco

4

Secondo la documentazione Verifica l'esistenza di file nell'ordine specificato e utilizza il primo file trovato per l'elaborazione delle richieste; l'elaborazione viene eseguita nel contesto corrente. Il percorso di un file viene costruito dal parametro file in base alle direttive root e alias. È possibile controllare l'esistenza della directory specificando una barra alla fine di un nome, ad es. “$ Uri /”. Se nessuno dei file è stato trovato, viene eseguito un reindirizzamento interno all'uria specificato nell'ultimo parametro. Importante

un reindirizzamento interno allo uri specificato nell'ultimo parametro è creato.

Quindi nell'ultimo parametro è necessario aggiungere la pagina o il codice se i primi due parametri restituiscono false.

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

Come funziona con 404? –

+0

Sono file di controllo dopo try_files - Se non è stato trovato alcun file, viene eseguito un reindirizzamento interno all'uria specificato nell'ultimo parametro. Se si desidera vedere la pagina 404 Codice nel caso in cui tutti i file non trovati, è necessario specificarlo come ultimo argomento. posizione/{ try_files $ uri $ uri/index.html $ uri.html = 404; } – Nokors

Problemi correlati