Compartilhar via


A porta padrão do ASP.NET Core foi alterada de 80 para 8080

A porta de ASP.NET Core padrão configurada em imagens de contêiner do .NET foi atualizada da porta 80 para 8080.

Também adicionamos a nova variável de ambiente ASPNETCORE_HTTP_PORTS como uma alternativa mais simples a ASPNETCORE_URLS. A nova variável espera uma lista delimitada por ponto e vírgula de números de portas, enquanto a variável mais antiga espera uma sintaxe mais complicada.

Os aplicativos criados usando a antiga API WebHost.CreateDefaultBuilder() não respeitarão a nova variável de ambiente ASPNETCORE_HTTP_PORTS. E agora que ASPNETCORE_URLS não está mais definido automaticamente, eles alternarão para usar uma URL padrão de http://localhost:5000, ao invés de http://*:80, como anteriormente.

Comportamento anterior

Antes do .NET 8, você podia executar um contêiner que esperava que a porta 80 fosse a porta padrão e pudesse acessar o aplicativo em execução.

Por exemplo, você pode executar o comando a seguir e acessar o aplicativo localmente na porta 8000, que está mapeada para a porta 80 no contêiner:

docker run --rm -it -p 8000:80 <my-app>

Novo comportamento

A partir do .NET 8, se você mapear para a porta 80 no contêiner sem definir explicitamente a porta ASP.NET Core utilizada no contêiner como 80, qualquer tentativa de conectar você a essa porta mapeada falhará.

Por exemplo, se você executar o seguinte comando, não será possível conectar-se ao aplicativo localmente utilizando a porta 8000.

docker run --rm -it -p 8000:80 <my-app>

Em vez disso, altere o comando para usar a porta 8080 dentro do contêiner:

docker run --rm -it -p 8000:8080 <my-app>

Você pode ver a diferença de comportamento nos exemplos a seguir.

Mapeamento da porta 80 (caso de falha):

$ docker run --rm -d -p 8000:80 mcr.microsoft.com/dotnet/samples:aspnetapp
ba88b746bd7097e503f8ab6e5320c595640e242f6de4f734412944a0e2836acc
$ curl http://localhost:8000/Environment
curl: (56) Recv failure: Connection reset by peer
$ docker kill ba88b746bd7097e503f8ab6e5320c595640e242f6de4f734412944a0e2836acc
ba88b746bd7097e503f8ab6e5320c595640e242f6de4f734412944a0e2836acc

Mapeamento da porta 8080:

$ docker run --rm -d -p 8000:8080 mcr.microsoft.com/dotnet/samples:aspnetapp
74d866bdaa8a5a09e4a347bba17ced321d77a2524a0853294a123640bcc7f21d
$ curl http://localhost:8000/Environment
{"runtimeVersion":".NET 8.0.0-rc.1.23419.4","osVersion":"Alpine Linux v3.18","osArchitecture":"Arm64","user":"root","processorCount":4,"totalAvailableMemoryBytes":4123820032,"memoryLimit":0,"memoryUsage":30081024,"hostName":"74d866bdaa8a"}
$ docker kill 74d866bdaa8a5a09e4a347bba17ced321d77a2524a0853294a123640bcc7f21d
74d866bdaa8a5a09e4a347bba17ced321d77a2524a0853294a123640bcc7f21d

Mapeamento da porta 80 com ASPNETCORE_HTTP_PORTS definido para a porta 80:

$ docker run --rm -d -p 8000:80 -e ASPNETCORE_HTTP_PORTS=80 mcr.microsoft.com/dotnet/samples:aspnetapp
3cc86b4b3ea1a7303d83171c132b0645d4adf61d80131152936b01661ae82a09
$ curl http://localhost:8000/Environment
{"runtimeVersion":".NET 8.0.0-rc.1.23419.4","osVersion":"Alpine Linux v3.18","osArchitecture":"Arm64","user":"root","processorCount":4,"totalAvailableMemoryBytes":4123820032,"memoryLimit":0,"memoryUsage":95383552,"hostName":"3cc86b4b3ea1"}
$ docker kill 3cc86b4b3ea1a7303d83171c132b0645d4adf61d80131152936b01661ae82a09
3cc86b4b3ea1a7303d83171c132b0645d4adf61d80131152936b01661ae82a09

Versão introduzida

.NET 8 versão prévia 1

Tipo de alteração

Esta é uma alteração comportamental.

Motivo da alteração

A alteração no número da porta foi feita devido à necessidade de fornecer uma boa experiência de usabilidade ao alternar para um usuário non-root. A execução como usuário non-root requer o uso de uma porta sem privilégios em alguns ambientes. Como a porta 80, a porta padrão anterior, é uma porta privilegiada, o padrão foi atualizado para a porta 8080, que é uma porta sem privilégios.

Há duas maneiras de responder a essa alteração interruptiva:

  • (Ação recomendada) Defina explicitamente as variáveis de ambiente ASPNETCORE_HTTP_PORTS, ASPNETCORE_HTTPS_PORTS, e ASPNETCORE_URLS para a porta desejada. Exemplo: docker run --rm -it -p 8000:80 -e ASPNETCORE_HTTP_PORTS=80 <my-app>
  • Atualize os comandos e a configuração existentes que dependem da porta padrão esperada da porta 80 para referenciar a porta 8080. Exemplo: docker run --rm -it -p 8000:8080 <my-app>

Se seu aplicativo foi criado usando o método WebHost.CreateDefaultBuilder() mais antigo, defina ASPNETCORE_URLS (não ASPNETCORE_HTTP_PORTS). Exemplo: docker run --rm -it -p 8000:80 -e ASPNETCORE_URLS=http://*:80 <my-app>.

Se você estiver usando Kubernetes ou Docker Compose, será necessário alterar a porta de acordo com esses esquemas. Para obter exemplos, veja Usando .NET com Kubernetes.

Se você usar os serviços de contêiner do Azure para hospedar seu aplicativo de contêiner ASP.NET Core, será necessário atualizar o ambiente de contêiner para definir a porta desejada:

  • Para o Serviço de Aplicativo do Azure, defina WEBSITES_PORT usando a CLI ou no portal.
  • Para aplicativos de contêiner do Azure, você pode alterar a porta como parte da criação de recursos.
  • Para instâncias de contêiner do Azure, você pode alterar a porta como parte da criação de recursos.

APIs afetadas

Nenhum.

Veja também