Partilhar via


Porta ASP.NET Core padrão alterada de 80 para 8080

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

Também adicionamos a nova ASPNETCORE_HTTP_PORTS variável de ambiente como uma alternativa mais simples ao 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 API mais antiga WebHost.CreateDefaultBuilder() não respeitarão a nova ASPNETCORE_HTTP_PORTS variável de ambiente. E agora que ASPNETCORE_URLS isso não é mais definido automaticamente, eles mudarão para usar uma URL padrão de , em vez http://*:80de http://localhost:5000, 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 seguinte comando e, em seguida, acessar o aplicativo localmente na porta 8000, que é 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 usada no contêiner como 80, qualquer tentativa de se conectar a essa porta mapeada falhará.

Por exemplo, se você executar o comando a seguir, não poderá se conectar ao aplicativo localmente usando 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.

Porta 80 de mapeamento (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

Porta 8080de mapeamento :

$ 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

Porta 80 de mapeamento com ASPNETCORE_HTTP_PORTS set to port 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 Visualização 1

Tipo de alteração

Esta mudança é uma mudança comportamental.

Razão para a alteração

A alteração no número da porta foi feita devido à necessidade de fornecer uma boa experiência de usabilidade ao mudar para um non-root usuário. A execução como non-root usuário requer o uso de uma porta não privilegiada 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 não privilegiada.

Há duas maneiras de responder a essa mudança de rutura:

  • (Ação recomendada) Defina explicitamente as ASPNETCORE_HTTP_PORTSvariáveis , ASPNETCORE_HTTPS_PORTSe ambiente 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 fazer referência à porta 8080. Exemplo: docker run --rm -it -p 8000:8080 <my-app>

Se seu aplicativo foi criado usando o método mais antigo WebHost.CreateDefaultBuilder() , 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 o Kubernetes ou o Docker Compose, precisará alterar a porta de acordo com esses esquemas. Para obter exemplos, consulte Usando o .NET com o Kubernetes.

Se você usar os serviços de contêiner do Azure para hospedar seu aplicativo de contêiner ASP.NET Core, precisará atualizar seu 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.

Consulte também