Como adicionar um arquivo diferente de index.html no nginx?

Como adicionar um arquivo diferente de index.html no nginx?

Sou bastante novo nisso e tenho um servidor nginx instalado e funcionando em uma página da web simples. A configuração que tenho sites-availableé:

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

E meu index.html está localizado nesta estrutura:

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

Quando eu acesso mywebsite.com, eu vejo index.html. Como eu poderia mywebsite.com/scnd_page/apontar para send_page.html?

Eu tentei algumas coisas criando

location /scnd_page { 
}

Mas não tenho certeza se estou no caminho certo. Isso deve ser feito neste arquivo?

Responder1

Você poderia usarrewritepara certificar-se de emitir redirecionamentos externos, de forma que .htmlnunca fiquem visíveis para o usuário, etry_filespara servir os arquivos reais.

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

Eu não recomendaria apoiar uma barra final /$para implicar \.html$; a lógica para esse suporte seria um pouco feia, além de causar problemas extras se você tentar usar URLs relativos dentro do referido arquivo scnd_page.html.

Responder2

Você pode simplesmente configurar o parâmetro index dentro do bloco location:

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

Além disso, você pode definir como índice "secundário" o 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;
}

}

informação relacionada