云服务器被DDOS到黑洞时的一种解决方案

用阿里云ECS服务器容易被DDOS进黑洞而又没钱购买DDOS高防IP时。

并不是没有其他的解决办法,因为有很多ISP提供价格较为低廉的高防服务器。

每个月也才几千块钱,相较阿里云动辄几万每月的高防服务,确实便宜了很多。

本文根据自己的需要,说明了一下如何使用第三方高防服务器为自己清洗流量。

首先,看一下目前使用的流程逻辑。

平时用户端直接访问阿里云的应用服务器。

被攻击时,将域名解析到高防IP上,通过Nginx反向代理回源到阿里云服务器上。

由于阿里云服务器被DDOS时会进黑洞,所以加了一个用来将外网请求映射到内网的代理服务器。

为了提高被攻击时的网站打开速度,高防服务器上会使用静态文件缓存。

减少向后端应用服务器请求的次数。

首先高防服务器上Nginx配置如下

http

{

# 设置缓存目录

proxy_temp_path /home/proxy_cache_dir 1 2;

# 静态文件目录 1天

proxy_cache_path /home/proxy_temp_dir/cache_img levels=1:2 keys_zone=cache_img:1024m inactive=1d max_size=100g;

# html文件目录 10分钟有效

proxy_cache_path /home/proxy_temp_dir/cache_html levels=1:2 keys_zone=cache_html:1024m inactive=10m max_size=100g;

# 设置服务器地址

upstream server_huanan {

server 120.76.0.0:80;

}

server

{

listen 80;

server_name www.qs5.org;

# 添加缓存命中头信息

add_header X-Cache $upstream_cache_status;

# 清除缓存

location ~ /purge_img(/.*) {

proxy_cache_purge cache_img $host$1$is_args$args;

}

location ~ /purge_html(/.*) {

proxy_cache_purge cache_html $host$1$is_args$args;

}

# html文件缓存 缓存10分钟

location ~ .(html|htm)$ {

proxy_pass http://server_huanan;

proxy_set_header Host $host;

#设置资源缓存的zone

proxy_cache cache_html;

#设置缓存的key

proxy_cache_key $host$uri$is_args$args;

#设置状态码为200和304的响应可以进行缓存,并且缓存时间为10分钟

proxy_cache_valid 200 304 10m;

expires 10m;

}

# 图片文件缓存

location ~ .(jpg|png|gif|css|js)$ {

proxy_pass http://server_huanan;

proxy_set_header Host $host;

#设置资源缓存的zone

proxy_cache cache_img;

#设置缓存的key

proxy_cache_key $host$uri$is_args$args;

#设置状态码为200和304的响应可以进行缓存,并且缓存时间为1天

proxy_cache_valid 200 304 1d;

expires 1d;

}

# 其他文件反向代理回源

location / {

proxy_pass http://server_huanan;

proxy_set_header Host $host;

}

access_log /home/wwwlogs/qs5_www_org.log;

}

}

具体每个参数的意义,该写注释的我都写了,自己酌情百度意义并进行修改。

注意,请不要照抄我的代码,好多地方是你需要额外处理的。

中间代理服务器的Nginx配置

这个就比较简单了,直接反向数据回去就好。

server

{

listen 80;

server_name www.qs5.org;

# 直接反向数据回应用服务器的内网IP上

location / {

proxy_pass http://192.168.1.16:80;

proxy_set_header Host $host;

}

access_log /home/wwwlogs/qs5_www_org.log;

}

同时,需要注意的是,阿里云内网一定要互通。

安全组或者路由一定要允许代理服务器通过内网访问应用服务器的80端口。

而服务器被攻击时,最好使用安全组禁止应用服务器的外网访问。

当然,其实更好的解决方案应该是:

应用服务器始终在内网使用。

一直使用边缘服务器提供对外服务。

高防服务器直接反向到应用服务器上。

这样就避免了黑洞时还要使用一个代理服务器做跳板的问题了。

边缘服务器和高防服务器的Nginx配置一致。

猜你喜欢

转载自blog.csdn.net/XiaoYiLiangZai/article/details/124731095
今日推荐