
請求爲f.chinasoft.com/file
f.chinasoft.com 域名指向slb(3.3.3.3)
業務方式:
ios-->slb(3.3.3.3)-->ecs集羣(每一臺ecs都有一個nginxweb服務器)-->mysql
從mysql中獲取的數據爲數據庫的IP地址,再次經過該ip(假設爲1.1.1.1)去請求對應的數據 ip(1.1.1.1)被黑客ddos已經讓阿里雲黑洞了43200分鐘(阿里雲這個配合打的不錯,輕鬆讓黑客把服務器停機一個月),解決辦法是在1.1.1.1這臺ecs前端加一個slb,再把須要的服務端口經過slb(2.2.2.2)映射出去
ecs被黑洞後,在前面加slb是能夠和ecs進行通訊的
那麼問題來了,當咱們把最終用戶須要的1.1.1.1(被黑洞的ecs)替換爲slb(2.2.2.2)後,發現經過訪問f.chinasoft.com/file這個請求仍是1.1.1.1,直接經過3.3.3.3/file來訪問就能夠返回正確的替換後的IP(2.2.2.2)即咱們須要的slb的IP地址
分析:
1.數據庫確認已經被修改
2.那這個有問題的數據可能被緩存在某個地方
cdn 排除
dns 排除
slb 沒有這樣的功能
查看後面ecs的nginx時發現每一個ServerName 都配置成了f.chinasoft.com,裏面有配置緩存
nginx.conf以下:
proxy_temp_path /data/proxy_cache/temp;
proxy_cache_path /data/proxy_cache levels=1:2 keys_zone=cache_one:10m inactive=1d max_size=30g;
因而在每一臺ecs上停用nginx,並刪除緩存,從新啓動nginx,問題解決
#中止nginx服務前端
/usr/local/nginx/sbin/nginx -s stopmysql
#刪除緩存ios
cd /data/proxy_cache/
rm -rf *nginx
#從新啓動nginxweb
/usr/local/nginx/sbin/nginx