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

如何限制Lightsail CDN源站?仅允许CDN访问静态IP

阻止Lightsail WordPress实例静态IP直接访问,仅允许CDN流量

方案1:通过Lightsail防火墙限制来源IP

CloudFront会使用固定IP段转发请求,你可以在Lightsail实例防火墙中仅允许这些IP访问80/443端口:

  • 登录Lightsail控制台,进入目标WordPress实例的联网标签
  • 删除现有允许所有IP访问80(HTTP)和443(HTTPS)的规则
  • 添加新规则:
    • 端口范围:80,来源:CloudFront官方发布的IPv4/IPv6地址段(从AWS IP范围文档提取CloudFront对应条目即可)
    • 端口范围:443,来源:同上
  • 注意:AWS会定期更新CloudFront IP段,建议定期检查更新,或用脚本自动同步规则

方案2:Web服务器验证CDN专属请求头部

CloudFront转发到源站的请求会携带专属头部(如X-Amz-Cf-Id),直接访问静态IP的请求不会包含这些头部,可通过Web服务器配置拦截无头部的请求:

Nginx配置(Lightsail WordPress默认多为Nginx)

编辑站点配置文件(如/etc/nginx/sites-available/wordpress),在server块内添加:

if ($http_x_amz_cf_id = "") {
    return 403;
}

保存后重启Nginx:sudo systemctl restart nginx

Apache配置

在WordPress根目录的.htaccess文件或虚拟主机配置中添加:

RewriteEngine On
RewriteCond %{HTTP:X-Amz-Cf-Id} ^$
RewriteRule ^ - [F]

方案3:禁止IP直接访问,仅允许域名请求

在Web服务器中配置默认主机返回403,仅处理你的域名请求:

Nginx示例

# 拦截所有IP直接访问的请求
server {
    listen 80 default_server;
    listen [::]:80 default_server;
    server_name _;
    return 403;
}

server {
    listen 443 ssl default_server;
    listen [::]:443 ssl default_server;
    server_name _;
    ssl_certificate /path/to/your/cert.pem;
    ssl_certificate_key /path/to/your/cert.key;
    return 403;
}

# 正常处理域名请求的server块
server {
    listen 80;
    listen [::]:80;
    server_name your-domain.com;
    return 301 https://$host$request_uri;
}

server {
    listen 443 ssl;
    listen [::]:443 ssl;
    server_name your-domain.com;
    # 保留原有的WordPress SSL及站点配置
}

重启Nginx生效:sudo systemctl restart nginx

最佳实践

建议组合使用方案1+方案2,通过防火墙拦截非CDN IP,再通过头部验证确保请求确实来自CloudFront,实现双重防护。

内容的提问来源于stack exchange,提问作者Adarsh Mallandur

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 10:42:55