前言

在实际的企业项目中,很少会直接把 Web 服务暴露到公网。为了提升网站性能、安全性和可扩展性,AWS 官方推荐使用以下架构:

                    Internet
                        │
                  Route 53(可选)
                        │
                        ▼
                CloudFront(CDN)
                        │
                  AWS WAF(安全防护)
                        │
                        ▼
      Application Load Balancer(ALB)
                        │
        ┌───────────────┴───────────────┐
        │                               │
     EC2-1                         EC2-2
   Nginx + Demo                 Nginx + Demo

本文将带大家一步一步搭建一套完整的 AWS Web 架构,并演示 CloudFront 缓存、WAF 防护以及 ALB 负载均衡的工作流程。


一、整体架构介绍

整个请求流程如下:

用户
    │
    ▼
CloudFront
    │
    ▼
AWS WAF
    │
    ▼
Application Load Balancer
    │
    ▼
EC2 Web Server

各组件职责如下:

服务 作用
CloudFront 全球 CDN,加速网站访问,缓存静态资源
AWS WAF Web 应用防火墙,拦截 SQL 注入、XSS、恶意爬虫等攻击
ALB 七层负载均衡,支持 HTTPS、路径转发、健康检查
EC2 部署业务应用,例如 Nginx、Java、Node.js 等

二、创建 EC2 Web 服务器

进入 AWS Console:

EC2
→ Launch Instance

建议配置:

  • Amazon Linux 2023

  • t3.micro

  • 20GB EBS

  • Auto Assign Public IP

  • Security Group:

    • TCP 22(SSH)

    • TCP 80(HTTP)

启动完成后,使用 SSH 登录服务器:

ssh -i demo.pem ec2-user@公网IP

三、安装 Nginx

更新系统:

sudo dnf update -y

安装 Nginx:

sudo dnf install nginx -y

启动服务:

sudo systemctl enable nginx
sudo systemctl start nginx

修改首页:

sudo vi /usr/share/nginx/html/index.html

替换为:

<html>
    <h1>AWS CloudFront Demo</h1>
    <h2>Hello AWS!</h2>
    <p>Server:EC2-01</p>
</html>

浏览器访问:

http://EC2公网IP

如果页面正常显示,说明 Web 服务部署成功。


四、创建 Application Load Balancer(ALB)

进入:

EC2
→ Load Balancers
→ Create Load Balancer

选择:

Application Load Balancer

配置如下:

  • Internet-facing

  • HTTP

  • Port 80

  • Public Subnet(至少两个可用区)

创建 Target Group:

Protocol:HTTP

Port:80

Health Check:

/

将 EC2 注册到 Target Group。

创建完成后,可以获得一个类似下面的地址:

xxxxx.ap-northeast-1.elb.amazonaws.com

浏览器访问该地址,应该能够正常看到首页。


五、创建 CloudFront Distribution

进入:

CloudFront
→ Create Distribution

Origin 选择:

ALB DNS

Viewer Protocol:

Redirect HTTP to HTTPS

Cache Policy:

CachingOptimized

创建完成后,大约等待 5~10 分钟即可部署完成。

CloudFront 会生成一个新的访问地址:

https://dxxxxxxxx.cloudfront.net

访问该地址,页面应该与 ALB 保持一致。


六、验证 CloudFront CDN 是否生效

打开浏览器开发者工具(F12):

Network

查看响应头:

x-cache

第一次访问:

Miss from cloudfront

表示 CloudFront 回源获取数据。

第二次刷新:

Hit from cloudfront

表示内容已经缓存在 CloudFront 边缘节点,后续请求无需再访问源站。

整个访问流程如下:

第一次访问:

用户
    │
CloudFront
    │
ALB
    │
EC2

第二次访问:

用户
    │
CloudFront(缓存)

这就是 CDN 加速的核心原理。


七、CloudFront Cache Invalidation

修改首页内容,例如:

<h1>Hello AWS 2026</h1>

刷新页面后,你会发现内容并没有立即更新。

原因很简单:

CloudFront 仍然返回缓存内容。

进入:

CloudFront

↓

Invalidations

↓

Create Invalidation

输入:

/*

等待几分钟。

再次刷新页面,新内容即可生效。

这也是生产环境发布网站时经常使用的操作。


八、创建 AWS WAF

进入:

AWS WAF

↓

Create Web ACL

Resource:

CloudFront Distribution

然后添加 AWS Managed Rules:

推荐启用:

  • AWS Core Rule Set

  • Known Bad Inputs

  • SQL Injection Rule

  • Linux Rule

  • Anonymous IP List

完成后,将 Web ACL 关联到 CloudFront。


九、演示 SQL Injection 防护

访问:

https://CloudFrontURL/login?id=1 OR 1=1

或者:

?id='

如果命中 SQL Injection 规则,浏览器将返回:

403 Forbidden

进入:

CloudWatch

↓

WAF Logs

即可查看:

  • Source IP

  • Rule Name

  • Blocked

  • Request URI

这说明 WAF 已成功拦截恶意请求。


十、演示 IP 黑名单

创建:

IP Set

加入自己的公网 IP。

然后创建规则:

Block

刷新页面:

403 Forbidden

删除该 IP 后即可恢复访问。

这个功能非常适合屏蔽恶意 IP。


十一、Geo Blocking

如果业务只面向中国、日本、新加坡等地区,可以直接限制其他国家访问。

例如:

Geo Match Rule

Block:

  • Russia

  • North Korea

这样可以减少大量无效流量和恶意扫描。


十二、Rate Limit(CC 防护)

创建 Rate-based Rule:

例如:

100 Requests / 5 minutes

如果同一个 IP 在 5 分钟内超过 100 次请求:

AWS WAF 将自动返回:

403 Forbidden

这就是最常见的 CC 攻击防护方式。


十三、完整请求流程

最终,整个 Web 请求流程如下:

Internet
      │
      ▼
CloudFront
      │
      ▼
AWS WAF
      │
      ▼
ALB
      │
      ▼
EC2

其中:

  • CloudFront:负责全球加速和缓存

  • WAF:负责安全防护

  • ALB:负责流量分发和负载均衡

  • EC2:负责业务运行

整个架构符合 AWS 官方推荐的生产环境部署模式。


总结

通过本文,我们完成了一套完整的 AWS Web 架构搭建,并学习了以下内容:

  • 使用 EC2 部署 Nginx 网站

  • 创建 Application Load Balancer

  • 创建 CloudFront Distribution

  • 验证 CDN 缓存(Miss → Hit)

  • 使用 Cache Invalidation 刷新缓存

  • 创建 AWS WAF Web ACL

  • 配置 AWS Managed Rules

  • 演示 SQL 注入拦截

  • 配置 IP 黑名单

  • 配置 Geo Blocking

  • 配置 Rate Limit 防护

对于生产环境来说,这套架构不仅能够显著提升网站访问速度,还能有效增强 Web 安全性,是构建现代云应用的经典实践。

如果后续继续扩展,还可以结合 Route 53、AWS Certificate Manager(ACM)、Auto Scaling、Amazon S3、Amazon ECS/EKS 等服务,进一步打造高可用、高性能的企业级云架构。

更多推荐