如何在同一台Azure VM中同时部署网站与Web API
结论
完全可以在同一台Azure VM上同时部署原有网站和新的Web API应用,单台VM没有仅能运行一个Web服务的硬性限制,你可以根据业务场景选择合适的部署方式。
常见部署方案
- 方案1:不同端口区分
给Web API配置和原有默认站点不同的端口即可,比如原有站点用默认80/443端口,Web API使用8080、5000这类未被占用的端口,移动应用调用时直接在请求地址中携带端口即可,示例调用地址为https://<VM公网IP/域名>:5000/api/xxx。
部署前需要分别在Azure VM的网络安全组(NSG)、VM内部操作系统防火墙中放行Web API对应端口的入站规则。 - 方案2:反向代理统一入口
如果你不想对外暴露非标准端口,可以在VM上部署Nginx、Apache、IIS等反向代理服务作为所有Web请求的统一入口,所有请求都走默认80/443端口,由代理服务按规则转发到对应服务:- 路径区分:配置反向代理将
/开头的请求转发到原有网站,/api/开头的请求转发到Web API服务,无需额外域名 - 域名区分:如果有两个不同的域名,可以配置反向代理根据请求头的Host字段,将不同域名的请求分别转发到网站和API服务,无需对路径做特殊改造
- 路径区分:配置反向代理将
部署注意事项
- 提前监控VM的CPU、内存、磁盘IO、网络带宽占用情况,确保同时运行两个服务后资源余量足够支撑业务峰值,避免出现资源争抢导致服务不可用
- 建议将两个服务使用独立进程、不同系统用户运行,有条件的可以用Docker等容器做隔离,避免单个服务崩溃、被入侵后影响另一个服务
- 部署前做端口占用检查,Windows环境执行
netstat -ano,Linux环境执行ss -tulnp,确认需要使用的端口未被其他进程占用 - Web API建议额外配置鉴权校验逻辑,避免未授权的恶意调用
内容的提问来源于stack exchange,提问作者biks
相关产品推荐
相关产品推荐

