2012-08-14 25 views
29

Cómo configurar index.html para el nombre de dominio, p. https://www.example.com/ - lleva al usuario a index.html en el directorio raíz.Cómo configurar index.html como archivo raíz en Nginx?

He probado diferentes cosas como:

server { 
    # some configs 

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

} 

Nada me ayudó.

Existen otras configuraciones con la palabra clave de ubicación, aunque ya las había comentado.

Otras configuraciones "ubicación" en la cláusula 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; 
} 

Todos ellos fueron comentadas y sin comentar, pero nada ayudó.

Las ediciones de PS se hicieron en el archivo /etc/nginx/sites- habilitado/domainname.com.

Respuesta

15

La respuesta es colocar el directorio raíz a las directivas de ubicación:

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

para mí 'index.html' funciona perfectamente. No importa en absoluto, es solo el nombre de un archivo en el sistema de archivos. –

30

en el bloque de ubicación se puede hacer:

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

que le dirá ngingx para buscar un archivo con el nombre exacto dado primero, y si no se encuentra ninguno de esos archivos, probará uri/index.html. Entonces, si llega una solicitud para https://www.example.com/, buscaría una coincidencia de archivo exacta primero, y al no encontrar eso, entonces buscaría index.html

+1

Parece que da como resultado un bucle infinito si la carpeta no contiene index.html –

+2

No estoy seguro de que considere que esto sea una buena práctica o lo que sea. Si no puede encontrar el archivo o directorio que está buscando, realmente debería devolver un 404, no el índice. –

+0

solo devolverá el índice si es un nombre de directorio; de lo contrario, estaría buscando \ index.html que no estará allí y devolverá 404 – cobaco

4

De acuerdo con la documentación Verifica la existencia de archivos en el orden especificado y usa el primer archivo encontrado para el procesamiento de solicitudes; el procesamiento se realiza en el contexto actual. La ruta a un archivo se construye a partir del parámetro del archivo de acuerdo con las directivas raíz y alias. Es posible verificar la existencia del directorio especificando una barra al final de un nombre, p. "$ Uri /". Si no se encuentra ninguno de los archivos, se realiza una redirección interna al uri especificado en el último parámetro. Importante

un redireccionamiento interno al uri especificado en el último parámetro es hecho.

Por lo tanto, en el último parámetro debe agregar su página o código si los dos primeros parámetros devuelven falso.

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

¿Cómo funciona esto con 404? –

+0

Comprueba los archivos después de try_files: si no se encontraron ninguno de los archivos, se realiza un redireccionamiento interno al uri especificado en el último parámetro. Si desea ver la página de códigos 404 en caso de que no se encuentren todos los archivos, debe especificarlo como último argumento. ubicación/{ try_files $ uri $ uri/index.html $ uri.html = 404; } – Nokors

Cuestiones relacionadas