36
云服务器被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配置一致。
 

要快速解决建议用腾达互联网络高防立体防御,支持免费测试,防不住,双倍退全额。有多种解决方案:www.tdaidc.com
 
您是否收到过这样的困扰?曾每月花费过数千上万元租用高防服务器,游戏端口依然被DDOS/CC打满游戏超卡,服务器IP被攻击打封玩家无法登陆 ,
         大网波动频繁稳定性无法保证,服务器宕机无法预料......那么您需要腾达互联游戏云防护给您带来全新的游戏服务器使用体验 。
         您可以自行到阿里云官方网站购买适合您使用的配置、宽带(建议选择华东区)作为游戏源服务器,权限只有您自己知道,保证数据安全。
防御方案一:  然后使用我们的腾达互联高防IP,隐藏游戏真实IP,进行ddos/cc攻击防护,游戏加速防护,玩家在我们云防护内网畅玩,从而使您的服务器达到无视任何攻击。


这条帮助是否解决了您的问题? 已解决 未解决

提交成功!非常感谢您的反馈,我们会继续努力做到更好! 很抱歉未能解决您的疑问。我们已收到您的反馈意见,同时会及时作出反馈处理!