Nginx carrega index.html automaticamente sem ser instruído a

1

http://localhost:8001/whatever carrega /var/www/nginx.html mas http://localhost:8001 carrega /var/www/index.html

De acordo com o resultado do grep, não é mencionado index.html descomentado mencionado.

O que eu espero é carregar nginx.html no segundo caso também.

A única coisa que eu encontrei foi quando eu removi $uri/ de try_files , como esperado.

Mas basicamente onde está a configuração index.html ? é o comportamento padrão do nginx?

É bom dizer que index.php não está carregado. Eu verifiquei muitas vezes e tenho certeza sobre o arquivo.

    
por sinaza 23.11.2017 / 19:24

1 resposta

1

Quando não especificado, a diretiva index tem um padrão implícito de index.html . Qual está presente em sua raiz do original. (Veja a documentação abaixo que eu incluí detalhando padrões e tal)

Se você quiser alterar o que ele serve como sua página de índice, você precisa definir uma nova diretiva index , de forma que você adicione isso ao bloco / location ou aplique-o globalmente apenas colocando-o fora dos blocos de localização, mas ainda dentro do seu bloco de servidores:

index nginx.html;

Isso diz ao nginx para procurar um arquivo de índice diferente.

O problema que você está vendo é porque o / bloco de localização somente se aplica se você tiver o / especificado e porque você não permite autoindex e porque /whatever é seu URI e que não existe como um arquivo ou diretório, ele volta para sua terceira opção, o arquivo nginx.html . Eu sei que isso é contra-intuitivo, como um URI vazio ou um / URI normalmente significa "Processar isso pelo bloco location / { } , mas é mais implícito no mundo que isso leva você para a home page ou página de índice de um dado website, e é por isso que existe a diretiva index .

Você precisa dizer ao sistema o que tratar como um arquivo de índice para qualquer configuração. Você não pode confiar somente em try_files no seu bloco / location, você tem que dizer qual deve ser o seu arquivo de índice. Eu sempre defino isso mesmo que os padrões funcionem bem para mim.

Observe que, se você não definir um URI, try_files retornará à diretiva index , portanto, uma solicitação para http://foobarbaz.foo:8510 alcançará o bloco do servidor nginx que atende na porta 8510 para o nome do servidor / $HOST pedido registro de foobarbaz.foo , com um URI vazio, e tecnicamente vai ter nginx, internamente, tentar e servir o padrão index.html página de índice por causa de sua configuração não especificando um% diferenteindex para servir para qualquer tipo de pedido.

A partir da documentação nginx relacionada da diretiva index :

Syntax: indexfile ...;
Default: index index.html;
Context: http, server, location

     

Define arquivos que serão usados como um índice. O nome do arquivo pode conter   variáveis. Os arquivos são verificados na ordem especificada. O último elemento   da lista pode ser um arquivo com um caminho absoluto. Exemplo:

index index.$geo.html index.0.html /index.html;
     

Deve-se observar que o uso de um arquivo de índice causa uma   redirecionar e a solicitação pode ser processada em um local diferente.   Por exemplo, com a seguinte configuração:

location = / {
    index index.html;
}

location / {
    ...
}
     

... uma solicitação "/" será processada no segundo local como   "/Index.html".

    
por Thomas Ward 23.11.2017 / 19:31