如何在Atlassian Confluence Server启用CDN?含CloudFront配置求助
如何为Atlassian Confluence Server配置CloudFront CDN
我之前帮好几个团队搞定过Confluence Server对接CloudFront的配置——其实Confluence本身确实没有内置的CDN开关,得通过CloudFront的分发配置+Confluence的基础设置调整来实现,下面是亲测可行的一步步方案:
一、准备工作
- 确保你的Confluence Server已经配置了HTTPS证书(CloudFront建议后端用HTTPS,避免明文传输,也能避免浏览器的安全警告)
- 拥有一个AWS账号,并且有权限创建CloudFront分发、管理SSL证书(用AWS Certificate Manager的免费证书就行)
- 记好Confluence Server的公网IP或者域名(也就是CloudFront要指向的后端源站地址)
二、配置CloudFront分发
- 创建新的CloudFront分发
- 源域名:填入你的Confluence Server的公网域名;如果是直接用IP访问,就选“自定义源”并填入IP地址
- 源协议策略:优先选“HTTPS only”;如果Confluence还没配HTTPS,暂时选“HTTP and HTTPS”,但之后一定要补上证书,不然生产环境会有问题
- 查看器协议策略:选“Redirect HTTP to HTTPS”,强制用户用HTTPS访问,既安全又符合现代浏览器要求
- 调整缓存行为(这步很关键,别用默认配置到底)
- 在默认缓存行为里做这些修改:
- 路径模式:保持
/*覆盖所有请求 - 允许的HTTP方法:一定要选“GET, HEAD, OPTIONS, PUT, POST, PATCH, DELETE”——因为Confluence有大量POST/PUT操作(编辑页面、上传附件、评论),只开GET/HEAD会导致功能异常
- 缓存策略:可以先用官方的“Managed-CachingOptimized”,如果需要更精细控制,就自定义一个,给静态资源(
*.css、*.js、*.png这类)设置较长的缓存时间,动态页面设置短缓存或者不缓存 - 缓存键和源请求策略:选“Managed-CORS-S3Origin”,或者自定义策略确保
Cookie、Host这些请求头能正确传递到Confluence——毕竟Confluence依赖Session Cookie维持登录状态,丢了Cookie用户就会反复登出
- 路径模式:保持
- 在默认缓存行为里做这些修改:
- 配置自定义域名(可选但推荐)
- 如果想用自己的品牌域名访问(比如
confluence.yourcompany.com),在CloudFront里添加自定义域名,然后用AWS Certificate Manager申请对应域名的SSL证书,绑定到分发上
- 如果想用自己的品牌域名访问(比如
- 保存分发,等个10-15分钟让CloudFront完成全球部署
三、调整Confluence Server的配置
- 修改基础URL
- 登录Confluence管理员后台,进入General Configuration > Server base URL
- 把原来的源站地址改成CloudFront的分发域名(或者你的自定义CDN域名),比如
https://d1234567890abc.cloudfront.net - 保存后,Confluence会自动更新所有内部链接的生成规则,确保用户点击的链接都是指向CDN的
- 反向代理配置(如果Confluence前面有Nginx/Apache)
- 如果你的Confluence是通过反向代理暴露的,必须在代理配置里添加以下请求头,让Confluence能识别用户的真实IP和请求协议:
- Nginx示例配置:
proxy_set_header X-Forwarded-For $remote_addr; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header Host $host; - Apache示例配置:
RequestHeader set X-Forwarded-Proto "https" RequestHeader set X-Forwarded-For "%{REMOTE_ADDR}e"
- Nginx示例配置:
- 我之前遇到过有人跳过这步,导致Confluence一直跳转到源站地址,或者无法获取用户真实IP,所以千万别忘
- 如果你的Confluence是通过反向代理暴露的,必须在代理配置里添加以下请求头,让Confluence能识别用户的真实IP和请求协议:
- 验证CDN生效
- 访问Confluence页面,按F12打开浏览器开发者工具,切换到“网络”标签,刷新页面
- 查看静态资源的响应头,找到
X-Cache字段,如果显示Hit from cloudfront,说明CDN已经在缓存资源了;如果是Miss from cloudfront,说明是第一次请求,CDN正在从源站拉取资源,多刷新几次就会变成Hit
四、避坑注意事项
- Session Cookie别缓存:CloudFront默认会缓存带Cookie的请求,所以一定要在缓存策略里排除Confluence的Session Cookie(比如
JSESSIONID),只让CDN缓存静态资源,不然用户登录状态会乱掉 - 附件上传不用管:Confluence的附件上传是POST请求,CloudFront会直接转发到源站,不会缓存,所以不用担心新上传的附件被旧缓存覆盖
- 更新资源后清缓存:如果更新了Confluence的主题、插件或者静态资源,记得去CloudFront里创建缓存失效请求,路径填
/*,让CDN拉取最新的资源 - 源站保护(可选):如果不想让外部直接访问Confluence源站,可以把CloudFront的IP段添加到Confluence的防火墙白名单,只允许CloudFront的请求访问源站,提升安全性
内容的提问来源于stack exchange,提问作者SleepyCal
相关产品推荐
相关产品推荐

