
Estou trabalhando com um aplicativo .NET Core em execução como um serviço baseado em systemd, em uma VM hospedada no Azure que executa o NGINX. (A VM é comissionada como um ambiente de desenvolvimento). Configurei um registro A usando o DNS do Azure para apontar para o IP do servidor. Quando insiro o nome do host especificado ( myapplication.mycompany.com
) no navegador, vejo a página de boas-vindas do NGINX:
Quando insiro uma URL que espero retornar o número da versão do aplicativo, vejo um 404:
myapplication.mycompany.com/version.txt
Quando executo systemctl status myservicename
, vejo que o serviço .NET Core foi iniciado e que o serviço principal está sendo executado da seguinte maneira:
CGroup: /system.slice/myservicename.service
└─...PID... /usr/bin/dotnet /var/aspnetcore/myservicename/myservice.dll
Quando eu olho /var/aspnetcore/myservicename/wwwroot
, vejo o arquivoversion.txt
curl -v localhost:5000
retorna a 302 found
, afirmando Server: Kestrel
, então euacreditarque Kestrel está servindo o serviço na porta 5000
Quando olho para a configuração do NGINX noProduçãoVM (que é uma imagem muito semelhante, executando uma instância comparável do serviço .NET Core), não vejo nada que pareça estar fazendo alguma conexão especial com o Kestrel. Eu vejo a configuração do NGINX usando:
cat /etc/nginx/nginx.conf
cat /etc/nginx/conf.d
(esses arquivos parecem idênticos aos da VM de desenvolvimento)
Onde devo procurar para determinar qual é a configuração para rotear solicitações para o aplicativo .NET Core? E há algo óbvio que possa estar causando o erro 404 quando eu solicito ...hostname.../version.txt
?
ATUALIZAR
Descobri que /etc/nginx/sites-available/default
no servidor web NGINX existem algumas das configurações principais. Então adicionei uma configuração para o nome do servidor que corresponde ao meu nome de host.
server {
listen 80;
server_name myapplication.mycompany.com;
Quando eu visito, myapplication.mycompany.com/version.txt
ainda recebo 404
:
Responder1
Descobri que existem 2 arquivos de configuração que determinam a disponibilidade de um site:
/etc/nginx/sites-available/default
/etc/nginx/sites-enabled/default
Ambos precisam de configuração de roteamento semelhante para determinar os sites que estão disponíveis e habilitados no servidor NGINX:
Ambos os ficheiros de configuração definem a porta (80) que o NGINX utiliza para ouvir pedidos e definem o server_name, que liga o nome de anfitrião DNS do Azure ao servidor web NGINX:
server {
listen 80;
server_name myapplication.mycompany.com;
A configuração também determina como as solicitações são submetidas a proxy reverso (essencialmente 'encaminhadas') para o Kestrel, onde as solicitações são tratadas pelo aplicativo por meio do roteamento .NET Core MVC
location / {
... cacheing stuff
proxy_pass <http://localhost:5000;>