Temos um site NextJs, na próxima exportação obtemos uma pasta de saída que queremos servir no Nginx. Em out/login existe um '[[...parâmetro]].html'. Quando implantamos o site usando pm2, ele estará funcionando se clicarmos no url "serverIP:port/login/programID/applicant"
Mas ao servir através do nginx não está funcionando.
Abaixo está o conteúdo do arquivo de configuração nginx:
servidor{
listen 7001;
server_name server_ip;
root /var/www/html/out/;
location / {
try_files $uri $uri.html $uri.html/ =404;
}
}
Por favor ajude. Eu sou novo no nginx, então estou tendo algumas dificuldades.
Responder1
A string de consulta refere-se aos parâmetros GET que você fornece após o URL, por exemplo ?name=foo
. Meu palpite é que você deseja servir arquivos em um diretório, já que mencionou "a pasta externa que queremos servir no Nginx".
Neste caso, seu exemplo deve funcionar bem, mas seutry_filesA regra espera que você também forneça o nome do arquivo dentro da URL.
Então, quando você estiver solicitando GETwww.meusite.comentão o Nginx tenta encontrar um caminho dentro do root
diretório com nome /
, .html
ou .html/
falha com o código de erro 404. Path .html/
refere-se a um diretório nomeado .html
dentro de sua raiz e provavelmente é um erro.
Caso você tenha um arquivo nomeado index.html
no diretório raiz especificado, as seguintes solicitações corresponderão a ele:
GET www.mysite.com/index.html
(por causa de$uri
)GET www.mysite.com/index
(por causa de$uri.html
)
O que você provavelmente está procurando é isto:
location / {
root /var/www/html/out;
index index.html index.htm;
try_files $uri $uri/ =404;
}
Isso faz o seguinte:
- Existe um arquivo real, especificado por$uri, em seu diretório raiz - então sirva isso.
- Existe um caminho de diretório, especificado por$uri, em seu diretório raiz?
- Se sim, verifique se contém um arquivo chamadoindex.htmlouíndice.htm- então sirva isto.
- Nenhuma das opções acima, retorne 404.
Então, GET www.mysite.com
tentaria encontrar um arquivo index.html
ou index.htm
dentro de sua raiz.
Caso você ainda se refira a strings de consulta, você pode escrever algo assim:
location / {
root /var/www/html/out;
try_files /$arg_file =404;
}
Em seguida, solicite como GET www.mysite.com?file=index.html
se procurasse um arquivo index.html
dentro de sua raiz. Nginx é incrível, não é?
Espero que isto ajude :)
Leia também mais sobretry_fileseArmadilhas e erros comuns do Nginx.