You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为Azure Container Instance部署的Node.js API绑定SSL Certificate?

为Azure Container Instance绑定SSL证书的可行方案

当然有可行方案!虽然Azure Container Instance(ACI)本身不支持直接将自定义SSL证书绑定到它自带的FQDN上,但你可以通过以下几种方式实现加密访问:

1. 使用Azure Application Gateway作为反向代理(生产级首选)

这是最推荐的生产环境方案,通过Application Gateway处理SSL终止,再将请求转发到你的ACI实例:

  • 先创建Application Gateway,确保它和ACI处于同一个虚拟网络(VNet)中,或者配置VNet peering/服务端点让Gateway能访问ACI
  • 在Gateway里配置HTTPS监听端口(443),上传你的PFX格式SSL证书
  • 将ACI实例添加为Gateway的后端池目标,设置路由规则把HTTPS流量转发到ACI的HTTP服务端口(比如Node.js常用的3000)
  • 之后用户就能通过Gateway的自定义域名(或它的FQDN)以HTTPS方式访问API,Gateway会自动完成SSL加密和解密的工作

2. 使用Azure Front Door管理SSL与全球流量

如果你的API需要全球访问加速,Front Door会是更合适的选择:

  • 创建Front Door实例,添加自定义域名(或直接使用Front Door提供的域名)
  • 配置HTTPS设置:可以选择Azure托管的证书(无需手动维护证书续期),也可以上传自己的证书
  • 将ACI的FQDN配置为Front Door的后端目标,设置转发规则将HTTPS流量导向ACI的HTTP端口
  • Front Door会在全球边缘节点处理SSL终止,再把请求转发到你的ACI,同时还能提供缓存、全球负载均衡等额外能力

3. 在容器内部配置HTTPS(适合测试/简单场景)

你可以让Node.js API自身直接处理HTTPS请求,这种方式不需要额外的Azure服务,但证书管理会相对繁琐:

  • 将SSL证书文件(比如cert.pem和key.pem)打包到Node.js镜像中,或者通过Azure Key Vault将证书挂载到ACI容器里(更安全,避免把证书硬编码进镜像)
  • 修改Node.js代码,用https模块替代http模块,加载证书启动服务:
    const https = require('https');
    const fs = require('fs');
    
    const options = {
      key: fs.readFileSync('/path/to/private-key.pem'),
      cert: fs.readFileSync('/path/to/certificate.pem')
    };
    
    https.createServer(options, (req, res) => {
      res.writeHead(200);
      res.end('API response via HTTPS');
    }).listen(443);
    
  • 在ACI的部署配置中开放443端口,用户就能通过https://<aci-fqdn>:443访问API,但要注意:ACI自带的FQDN无法绑定自定义证书,浏览器会因为证书域名不匹配报错,所以这种方案更适合测试场景,若要用自定义域名,还是得结合前面的代理服务做DNS映射

内容的提问来源于stack exchange,提问作者Yatendrasinh Joddha

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 08:51:37