¿Cómo agregar un archivo diferente a index.html en nginx?

¿Cómo agregar un archivo diferente a index.html en nginx?

Soy bastante nuevo en esto y tengo un servidor nginx funcionando en una página web simple. La configuración que tengo puesta sites-availablees:

server {
    listen 80 default_server;

    root /var/www/mywebsite/;
    index /html/index.html;

    server_name mywebsite.com www.mywebsite.com;

    location / {
            try_files $uri $uri/ =404;
    }
}

Y mi index.html se encuentra en esta estructura:

+------+   +----------+    
+ html +-->+index.html|    
+------+   +----------+    
       |      
       |   +--------------+
       +-->+scnd_page.html|
           +--------------+

Cuando accedo mywebsite.com, veo index.html. ¿Cómo podría hacer mywebsite.com/scnd_page/para señalar send_page.html?

He probado algunas cosas creando

location /scnd_page { 
}

Pero no estoy seguro de estar en el camino correcto. ¿Se puede hacer esto siquiera en este archivo?

Respuesta1

Podrías usarrewritepara asegurarse de emitir redirecciones externas, de modo que .htmlnunca sean visibles para el usuario, ytry_filespara servir los archivos reales.

location / {
    rewrite     ^(/.*)\.html$   $1  redirect;
    try_files $uri $uri/index.html $uri.html =404;
}

Sin embargo , no recomendaría admitir una barra diagonal /$para dar a entender \.html$; la lógica para dicho soporte sería un poco fea, además también causará problemas adicionales si intenta usar URL relativas dentro de dicho archivo scnd_page.html.

Respuesta2

Puedes simplemente configurar el parámetro de índice dentro del bloque de ubicación:

location /html/scnd_page { index scnd_page.html; }

También puedes definir como índice "secundario" scnd_page.html globalmente:

server {

listen 80 default_server;

root /var/www/mywebsite/;
# carefull setting '/html/index.html'...
index index.html scnd_page.html;

server_name mywebsite.com www.mywebsite.com;

location / {
        try_files $uri $uri/ =404;
}

}

información relacionada