【发布时间】:2017-04-20 09:51:56
【问题描述】:
我最近将 .NET Web API 2 应用程序从 Azure 云服务移动到了 Azure Web 应用程序。但是,我们有一个遗留应用程序需要与端口 8080 和 444 上的 API 通信。
有没有办法在网络应用上打开额外的端口?
【问题讨论】:
标签: azure azure-web-app-service
我最近将 .NET Web API 2 应用程序从 Azure 云服务移动到了 Azure Web 应用程序。但是,我们有一个遗留应用程序需要与端口 8080 和 444 上的 API 通信。
有没有办法在网络应用上打开额外的端口?
【问题讨论】:
标签: azure azure-web-app-service
不,你不能。只有 80 和 443 端口是开放的。
检查服务器故障的答案:https://serverfault.com/a/751548/394375。
如果您需要这种控制,可以使用云服务或虚拟机。
【讨论】:
虽然 Azure Web 应用无法公开端口 8080 和 444,但您可以使用应用程序网关导出这些端口并将 8080 和 444 上的传入流量路由到 Web 应用上的端口 80 或 443。
【讨论】:
如果您考虑容器化和部署您的应用:
默认情况下,应用服务假定您的自定义容器正在侦听端口 80。如果您的容器侦听不同的端口,请在您的应用服务应用中设置 WEBSITES_PORT 应用设置。您可以通过 Cloud Shell 进行设置。在 Bash 中:
az webapp config appsettings set --resource-group <group-name> --name <app-name> --settings WEBSITES_PORT=8000
应用服务目前只允许您的容器为 HTTP 请求公开一个端口。
【讨论】:
您可以将应用配置为使用其他端口。基于the answer on Github,
自动端口检测检测端口(端口 80 是默认端口),我们将尝试检测将哪个端口绑定到您的容器,但您也可以使用 WEBSITES_PORT 应用程序设置并为您配置的端口值想绑定到你的容器。但是,自定义映像中的 Web 服务器可能使用 80 以外的端口。您可以使用 WEBSITES_PORT 应用设置告诉 Azure 您的自定义容器使用的端口。在这种情况下,是的,您必须从 Portal 更改 App Setting 配置。
【讨论】:
不,正如 junnas 提到的那样,只有 80 或 443 个 Tcp 端口已经被泄露。我们还可以从 document 获得有关 WebApp 沙箱的更多详细信息。
所有 Azure Web 应用程序(以及移动应用程序/服务、WebJobs 和函数)都在称为沙盒的安全环境中运行。通过 Internet 访问应用程序的唯一方法是通过已经公开的 HTTP (80)和 HTTPS (443) TCP 端口。 但是,应用程序可能会创建一个套接字来侦听沙箱内的连接。
【讨论】:
如此处所述:https://docs.microsoft.com/en-us/azure/load-balancer/tutorial-load-balancer-port-forwarding-portal 您可以使用 azure 负载均衡器实现端口转发。
【讨论】: