保留Azure CDN前提下从后端Nginx动态加载index.html方案咨询
实现方案
核心是利用Azure CDN的服务端URL重写能力,全程不会触发客户端跳转,用户地址栏始终保持domain.com,同时完全保留现有CDN服务,配置步骤如下:
1. Azure CDN 端配置
- 进入绑定了
domain.com的CDN资源控制台,找到「规则引擎」配置项 - 新建匹配规则:
- 匹配条件:
请求URL->路径-> 等于/ - 执行动作:选择
URL重写(注意不要选URL重定向),重写目标路径填写/website/index.html
- 匹配条件:
- 配置CDN源站信息:将源站地址设置为
api.domain.com,源站协议与Nginx端保持一致(HTTP/HTTPS),源站主机头保持默认或填写api.domain.com,确保CDN回源请求可以正常被Nginx识别 - 保存规则后等待配置生效,生效时长通常为1~15分钟
若使用的是Azure CDN Premium SKU,规则引擎入口在「管理」跳转门户中,动作名称为
URL Rewrite,配置逻辑完全一致。
如果你的index.html中引用了相对路径的静态资源(比如css/main.css、js/app.js),可以新增一条规则适配资源访问:
- 匹配条件:
请求URL->路径-> 不等于/ - 执行动作:
URL重写,重写目标路径填写/website/{request_uri}
2. Nginx 端配置(可选,按需调整)
如果Nginx对api.domain.com的请求有权限限制,可参考如下配置调整:
server { listen 443 ssl; server_name api.domain.com; ssl_certificate /path/to/your/cert.pem; ssl_certificate_key /path/to/your/key.pem; location /website { # 替换为你的网站文件实际存放路径 root /var/www; index index.html; # 按需添加Azure CDN回源IP白名单,避免回源被拦截 allow 1.2.3.0/24; deny all; } }
验证方法
配置生效后清理CDN缓存,访问domain.com检查:
- 地址栏始终显示
domain.com,无跳转 - 页面返回内容和直接访问
api.domain.com/website/index.html完全一致 - F12查看网络请求,根路径请求返回状态码为200,无301/302跳转记录
内容的提问来源于stack exchange,提问作者Thorniey
相关产品推荐
相关产品推荐

