Apenas aprendendo NGINX básico. Estou tentando reescrever alguns URLS limpos para que eles redirecionem para arquivos em um subdiretório chamado no servidor chamado visualizações.
A configuração abaixo faz isso. Porém, sempre que retorno à página de índice, ela retorna um erro 404.
Como você verá abaixo, defino meu índice como index.html. Presumi que isso garantiria que index.html fosse tratado como o arquivo de índice. No entanto, parece que o NGINX está optando por usar o primeiro bloco de localização para determinar o índice. Isso faz sentido porque '/' é o índice. No entanto, estou tentando usar apenas esse primeiro bloco de localização para páginas subsequentes (ou seja, nginx-practice.test/secondpage)
Aqui está o arquivo de configuração:
server {
listen 127.0.0.1:80;
server_name nginx-practice.test;
root /usr/robertguttersohn/Sites/nginx-practice/public;
index index.html;
location ~ /. {
root /user/Sites/nginx-practice/public/views;
try_files $uri @htmlext =404;
}
location @htmlext {
rewrite ^(.*)$ $1.html last;
}
access_log /usr/local/var/log/nginx/access.log;
error_log /usr/local/var/log/nginx/error.log;
}
Como faço para que o NGINX use index.html para a página de índice e, em seguida, use a reescrita para todas as páginas subsequentes?
Responder1
Você pode usar location = / {}
o arquivo index.html para direcionar apenas para a página inicial e, em seguida, usar o location / {}
bloco genérico para direcionar as páginas subsequentes. Aqui está um exemplo...
server {
listen 127.0.0.1:80;
server_name nginx-practice.test;
root /user/robertguttersohn/Sites/nginx-practice/public;
index index.html;
# To isolate home page
location = / { try_files /index.html =404; }
# To parse subsequent pages
location / {
root /user/robertguttersohn/Sites/nginx-practice/public/views;
try_files $uri @url.html =404;
}
access_log /usr/local/var/log/nginx/access.log;
error_log /usr/local/var/log/nginx/error.log;
}
Como você pode ver, o location @htmlext {}
bloqueio também pode ser eliminado.
No meu exemplo, usei /user/robertguttersohn/Sites/nginx-practice/public
como diretório raiz e /user/robertguttersohn/Sites/nginx-practice/public/views
como subdiretório. Você pode querer atualizá-lo para se adequar ao seu ambiente. Lembre-se de reiniciar o servidor Nginx após fazer qualquer alteração na configuração.
Para obter mais informações sobre como funciona a localização, confirahttps://nginx.org/r/location.