1. 概述与部署前准备
(1)确认业务边界:明确主要受众在珠海/大陆还是香港/国际;如果面向大陆用户必须考虑ICP备案或通过国内CDN加速。
(2)准备VPS信息:记录公网IP、带宽峰值、网络类型(BGP/单线)、系统版本(建议Ubuntu 20.04/22.04或Debian 11)。
(3)工具安装:建议先安装常用排查工具:apt update && apt install -y mtr traceroute iperf3 curl nginx certbot。
2. 网络连通性与测评步骤
(1)测延迟/丢包:mtr -c 100 <目标IP>,记录丢包率与跳数瓶颈。
(2)测带宽:一端跑 iperf3 -s,VPS跑 iperf3 -c
-P 4 -t 60,查看稳定带宽。
(3)Trace 路径确认:traceroute -n <目标>,识别是否经由大陆出口或国际链路,决定是否需要国内CDN节点。
3. 系统内核与TCP层优化(Debian/Ubuntu 实操)
(1)启用BBR:echo "net/core/default_qdisc=fq" >> /etc/sysctl.conf && echo "net/ipv4/tcp_congestion_control=bbr" >> /etc/sysctl.conf && sysctl -p。
(2)常用sysctl调整(追加到 /etc/sysctl.conf):net.ipv4.tcp_tw_reuse=1;net.ipv4.tcp_fin_timeout=15;net.ipv4.tcp_max_syn_backlog=4096;net.core.somaxconn=65535。应用 sysctl -p。
(3)调高文件描述符:在 /etc/security/limits.conf 加入 * soft nofile 200000 与 * hard nofile 300000,并在 systemd 服务里设置 LimitNOFILE。
4. Nginx作为视频源站的配置步骤(示例)
(1)安装:apt install -y nginx。
(2)基本server配置(/etc/nginx/sites-available/video.conf):配置listen、server_name、root;开启sendfile on、tcp_nopush on、tcp_nodelay on;配置client_max_body_size 100M。
(3)启用静态缓存与分块传输:配置proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=video_cache:100m max_size=10g inactive=24h; 在 location 中使用 proxy_cache video_cache; proxy_cache_valid 200 302 10m; proxy_cache_valid 404 1m; add_header X-Cache $upstream_cache_status;
5. 视频分发协议与切片策略(HLS/DASH)
(1)推荐HLS切片参数:片段长度 2-4s,保留3个质量播放列表(master playlist),m3u8 设置较短的缓存失效。
(2)切片生成:使用ffmpeg示例命令:ffmpeg -i input.mp4 -c:v libx264 -preset veryfast -g 48 -sc_threshold 0 -map 0 -f hls -hls_time 4 -hls_list_size 6 -hls_flags delete_segments stream_%v.m3u8(根据分辨率和码率调整)。
(3)保留回源策略:origin可保留N天切片并在CDN上设置较短的TTL以便快速回源拉取更新。
6. CDN接入实操流程(以常见CDN为例)
(1)选择CDN供应商:若需大陆覆盖选阿里/腾讯/网宿/百度;若跨境优先Cloudflare/Akamai。
(2)创建Pull Zone:控制台创建域名,填写源站为VPS公网IP或域名,协议选择HTTP/HTTPS;开启压缩、Range请求支持与缓存规则。
(3)设置回源鉴权与防盗链:在CDN控制台配置Referer白名单或签名URL,并在源站Nginx写入对应验证逻辑(如 X-Forwarded-For 校验)。
7. 缓存与头部策略(使CDN和浏览器协作)
(1)针对m3u8与ts分别设置:m3u8短缓存(max-age=3-10s),ts文件长缓存(max-age=3600或更长)。
(2)Nginx示例:location ~ \.m3u8$ { add_header Cache-Control "max-age=5, no-transform"; } location ~ \.ts$ { add_header Cache-Control "public, max-age=3600"; }。
(3)启用Etag/Last-Modified辅助回源验证,开启Accept-Ranges以支持断点续传。
8. 监控、日志与回源优化
(1)接入Prometheus/Grafana指标:exporter采集nginx指标、带宽、连接数。
(2)日志分析:开启nginx访问日志,按URL、状态码、上游耗时聚合,识别热点切片与回源频率。
(3)预热与回源削峰:使用脚本预热热门m3u8/ts到CDN(通过CDN预取接口或模拟请求),并在高并发时使用Origin Shield或二级缓存。
9. 安全、证书与法律合规
(1)HTTPS:使用certbot 自动签发Let's Encrypt,certbot --nginx -d your.domain.com,并设置自动续期。
(2)WAF与防盗链:启用CDN WAF规则、速率限制,避免爬虫或异常请求拉垮源站。
(3)合规:若目标观众在大陆,准备ICP备案或使用已备案的CDN域名;记录日志以备审计。
10. 问:珠海或香港VPS作为视频源,如何选择更合适的位置?
答:若用户主要在珠海/大陆,应优先选择在大陆或香港+国内CDN组合,确保使用具有国内节点的CDN并完成ICP备案;若用户以港澳台与国际为主,可选香港VPS并使用国际CDN(Cloudflare/Akamai)以降低跨境延迟。
11. 问:如何快速判断是不是需要开启BBR或调整内核?
答:用iperf3和mtr测试出现高延迟/抖动或TCP吞吐低于链路带宽时,优先启用BBR;查看 /proc/net/softnet_stat 与 netstat -s 若出现大量重传/丢包,配合sysctl调整可带来明显改进。
12. 问:接入CDN后常见的回源高负载问题如何缓解?
答:先在CDN侧设置合理缓存规则及长TTL,源站配置缓存并返回正确Cache-Control,使用预热接口提前缓存热点;必要时配置Origin Shield或二级缓存、开启压缩与分片合并,减少回源并发与频率。
来源:珠海香港服务器vps在视频分发和CDN接入方面的优化建议