Bagikan melalui


Port default ASP.NET Core diubah dari 80 menjadi 8080

Port default ASP.NET Core yang dikonfigurasi dalam gambar kontainer .NET telah diperbarui dari port 80 ke 8080.

Kami juga menambahkan variabel lingkungan baru ASPNETCORE_HTTP_PORTS sebagai alternatif yang lebih sederhana untuk ASPNETCORE_URLS. Variabel baru mengharapkan daftar nomor port yang dibatasi titik koma, sementara variabel yang lebih lama mengharapkan sintaks yang lebih rumit.

Aplikasi yang dibuat menggunakan API yang lebih WebHost.CreateDefaultBuilder() lama tidak akan menghormati variabel lingkungan baru ASPNETCORE_HTTP_PORTS . Dan sekarang tidak ASPNETCORE_URLS lagi diatur secara otomatis, mereka akan beralih untuk menggunakan URL http://localhost:5000default , bukan http://*:80, seperti sebelumnya.

Perilaku sebelumnya

Sebelum .NET 8, Anda dapat menjalankan kontainer yang mengharapkan port 80 menjadi port default dan dapat mengakses aplikasi yang sedang berjalan.

Misalnya, Anda dapat menjalankan perintah berikut lalu mengakses aplikasi secara lokal di port 8000, yang dipetakan ke port 80 dalam kontainer:

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

Perilaku yang baru

Dimulai dengan .NET 8, jika Anda memetakan ke port 80 dalam kontainer tanpa secara eksplisit mengatur port ASP.NET Core yang digunakan dalam kontainer ke 80, setiap upaya untuk menyambungkan ke port yang dipetakan akan gagal.

Misalnya, jika Anda menjalankan perintah berikut, Anda tidak akan dapat tersambung ke aplikasi secara lokal menggunakan port 8000.

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

Sebagai gantinya, ubah perintah untuk menggunakan port 8080 dalam kontainer:

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

Anda dapat melihat perbedaan perilaku dalam contoh berikut.

Port 80 pemetaan (kasus kegagalan):

$ 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

Port 8080pemetaan :

$ 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

Port pemetaan 80 dengan ASPNETCORE_HTTP_PORTS diatur ke 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

Versi yang diperkenalkan

Pratinjau .NET 8 1

Jenis perubahan

Perubahan ini adalah perubahan perilaku.

Alasan untuk berubah

Perubahan pada nomor port dilakukan karena kebutuhan untuk memberikan pengalaman kegunaan yang baik saat beralih ke non-root pengguna. Berjalan sebagai non-root pengguna memerlukan penggunaan port yang tidak istimewa di beberapa lingkungan. Karena port 80, port default sebelumnya, adalah port istimewa, default diperbarui ke port 8080, yang merupakan port non-istimewa.

Ada dua cara untuk menanggapi perubahan yang melanggar ini:

  • (Tindakan yang disarankan) Secara eksplisit mengatur ASPNETCORE_HTTP_PORTSvariabel lingkungan , ASPNETCORE_HTTPS_PORTS, dan ASPNETCORE_URLS ke port yang diinginkan. Contoh: docker run --rm -it -p 8000:80 -e ASPNETCORE_HTTP_PORTS=80 <my-app>
  • Perbarui perintah dan konfigurasi yang ada yang mengandalkan port default port 80 yang diharapkan ke port referensi 8080 sebagai gantinya. Contoh: docker run --rm -it -p 8000:8080 <my-app>

Jika aplikasi Anda dibuat menggunakan metode yang lebih WebHost.CreateDefaultBuilder() lama, atur ASPNETCORE_URLS (bukan ASPNETCORE_HTTP_PORTS). Contoh: docker run --rm -it -p 8000:80 -e ASPNETCORE_URLS=http://*:80 <my-app>.

Jika Anda menggunakan Kubernetes atau Docker Compose, Anda perlu mengubah port per skema tersebut. Misalnya, lihat Menggunakan .NET dengan Kubernetes.

Jika Anda menggunakan layanan kontainer Azure untuk menghosting aplikasi kontainer ASP.NET Core, Anda perlu memperbarui lingkungan kontainer untuk mengatur port yang diinginkan:

  • Untuk Azure App Service, atur WEBSITES_PORT menggunakan CLI atau di portal.
  • Untuk Azure Container Apps, Anda dapat mengubah port sebagai bagian dari pembuatan sumber daya.
  • Untuk Azure Container Instances, Anda dapat mengubah port sebagai bagian dari pembuatan sumber daya.

API yang Terpengaruh

Tidak ada.

Lihat juga