ubuntu缓存如何配置CDN加速
导读:Ubuntu 环境下配置缓存与 CDN 加速 一 架构与总体思路 将静态资源(如 JS/CSS/图片/字体)通过 CDN 分发,利用边缘节点缓存降低源站压力与时延。 在 Ubuntu 源站(Nginx/Apache)设置合理的浏览器缓存与...
Ubuntu 环境下配置缓存与 CDN 加速
一 架构与总体思路
- 将静态资源(如 JS/CSS/图片/字体)通过 CDN 分发,利用边缘节点缓存降低源站压力与时延。
- 在 Ubuntu 源站(Nginx/Apache)设置合理的浏览器缓存与(可选)反向代理缓存,减少回源并提升首屏速度。
- 动态内容建议结合 Redis/Memcached 做对象缓存,并设置较短的 Cache-Control,避免数据滞后。
- 选择支持 Brotli 压缩的 CDN,通常比 Gzip 压缩率提升约20%,进一步减少传输体积。
二 方案一 使用 CDN 加速静态资源(以 Vue/React 等前端项目为例)
- 构建与发布
- 前端项目执行构建(如:npm run build),生成 dist/ 静态文件目录。
- 上传或回源
- 方式 A:将 dist/ 上传至 对象存储(如 OSS/S3),由 CDN 直接回源到存储桶。
- 方式 B:保持源站托管,CDN 回源到你的 Ubuntu Nginx。
- 配置 CDN 域名与缓存策略
- 创建 CDN 加速域名,源站指向你的源站域名或存储桶地址。
- 静态资源路径(如 /static/、/assets/、/*.js、/*.css、图片后缀)设置长期缓存,例如 Cache-Control: public, max-age=31536000(一年),并开启 Brotli/Gzip 压缩。
- 前端工程配置
- 将资源引用指向 CDN 域名(例如:在 vue.config.js 设置 publicPath 为你的 CDN 域名)。
- 源站 Nginx 建议
- 对静态资源设置较长缓存,对 HTML 设置不缓存或短缓存,避免用户长期拿到旧页面:
server { listen 80; server_name your-domain.com; root /path/to/dist; index index.html; location / { try_files $uri $uri/ /index.html; add_header Cache-Control "no-cache, must-revalidate"; } location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg)$ { expires 1y; add_header Cache-Control "public, immutable"; } }
- 对静态资源设置较长缓存,对 HTML 设置不缓存或短缓存,避免用户长期拿到旧页面:
- 验证
- 打开浏览器开发者工具,检查响应头是否包含 Cache-Control: max-age=31536000 与 Content-Encoding: br/gzip,并确认资源命中 CDN(响应来自 CDN 节点)。
三 方案二 使用 Nginx 作为反向代理缓存(无独立 CDN 或做源站加速)
- 安装与启用缓存路径
- 在 /etc/nginx/nginx.conf 的 http 块中定义共享内存与磁盘缓存路径:
http { proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=cdn_cache:10m max_size=1g inactive=60m use_temp_path=off; proxy_cache_key "$scheme$request_method$host$request_uri"; }
- 在 /etc/nginx/nginx.conf 的 http 块中定义共享内存与磁盘缓存路径:
- 站点配置示例
- 将动态内容反向代理到上游,并启用缓存与回源控制:
server { listen 80; server_name your-domain.com; location / { proxy_pass http://127.0.0.1:8080; # 你的上游服务 proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_cache cdn_cache; proxy_cache_valid 200 7d; proxy_cache_use_stale error timeout updating http_500 http_502 http_503 http_504; add_header X-Cache-Status $upstream_cache_status; } }
- 将动态内容反向代理到上游,并启用缓存与回源控制:
- 生效与验证
- 检查配置并重启:sudo nginx -t & & sudo systemctl reload nginx
- 访问页面,查看响应头 X-Cache-Status: HIT/MISS,确认命中缓存。
四 方案三 使用 Apache2 作为反向代理缓存(可选)
- 启用模块
- sudo a2enmod cache cache_disk expires deflate headers proxy proxy_http
- sudo systemctl restart apache2
- 配置示例
- 启用磁盘缓存与过期时间,对 /static/ 目录启用缓存:
< IfModule mod_cache.c> < IfModule mod_cache_disk.c> CacheRoot /var/cache/apache2/mod_cache_disk CacheEnable disk /static/ CacheDirLevels 2 CacheDirLength 1 < /IfModule> < /IfModule> < IfModule mod_expires.c> ExpiresActive On ExpiresByType text/css "access plus 1 week" ExpiresByType application/javascript "access plus 1 week" ExpiresByType image/jpeg "access plus 1 month" ExpiresByType image/png "access plus 1 month" ExpiresByType image/gif "access plus 1 month" < /IfModule> < IfModule mod_deflate.c> AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css application/javascript < /IfModule> < IfModule mod_proxy.c> ProxyPass / http://127.0.0.1:8080/ ProxyPassReverse / http://127.0.0.1:8080/ < /IfModule>
- 启用磁盘缓存与过期时间,对 /static/ 目录启用缓存:
- 说明
- 上述配置为示例,可按需调整缓存路径、类型与过期时间。
五 缓存策略与运维要点
- 缓存分层
- 浏览器缓存:静态资源设置 max-age=31536000 并标记为 public/immutable;HTML 建议 no-cache 或 max-age=0, must-revalidate 以便快速发布更新。
- CDN 缓存:按路径与文件类型配置长期缓存;为版本化资源(带 hash 的文件名)设置长期缓存,避免强刷。
- 源站缓存:对热点接口/页面使用 Nginx proxy_cache 或 Apache mod_cache_disk,设置如 proxy_cache_valid 200 7d,并使用 stale-while-revalidate 提升可用性。
- 动态内容
- 对价格、库存等实时性强的数据设置短缓存或不缓存;结合 Redis/Memcached 降低数据库压力。
- 压缩与传输
- 启用 Brotli(优先)与 Gzip,通常 Brotli 压缩率较 Gzip 提升约20%。
- 更新与失效
- 静态资源采用文件名加 hash 或变更 CDN 目录版本 实现快速全量生效;必要时在 CDN 控制台执行目录刷新/URL 刷新。
- 监控与验证
- 关注 命中率、回源率、带宽 与 时延;使用 curl -I 或浏览器开发者工具检查 Cache-Control、Age、X-Cache-Status 等响应头。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: ubuntu缓存如何配置CDN加速
本文地址: https://pptw.com/jishu/786476.html
