登陆阿里云后台,发现阿里云的 web 防火墙显示有很多个 ip 对网站进行攻击
有GET
POST
请求的攻击。我们通过 nginx 日志去看下,比如61.136.155.18
的访问次数,发现没有这个 ip 的访问记录。应该是直接被阿里云的防火墙拦截了。另外发现有很多 POST
请求.
只允许特定的 HTTP 请求访问
我用的是 hexo
,没有 POST 请求,所以,可以直接在 NGINX
配置文件server
段中加入
if ($request_method !~ ^(GET|HEAD)$ ) {
return 444;
}
因为博客全部都是静态页面,不需要 POST
请求,可以直接禁止,只允许 GET
和 HEAD
禁止 IP 直接访问
另外的话,我不希望客户端直接通过 ip 访问,如果通过 ip 访问,会直接禁止
server {
listen 80;
server_name _; #加入这条
server_name www.fangwenjun.com fangwennjun.com awen.me www.awen.me;
return 444; #返回444
if ($request_method !~ ^(GET|HEAD|POST)$ ) {
return 444;
}
rewrite ^(.*)$ https://awen.me$1 permanent; //跳转到 HTTPS
}
配置 nginx 开启 SSL
listen 443 ssl http2;
server_name awen.me www.awen.me;
index index.html index.htm index.php;
root /www/;
ssl on;
ssl_certificate /usr/local/nginx/ssl/awen/fullchain.cer;
ssl_certificate_key /usr/local/nginx/ssl/awen/awen.me.key;
ssl_ciphers EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5;
ssl_prefer_server_ciphers on;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_session_cache shared:SSL:50m;
ssl_session_timeout 1d;
ssl_session_tickets on;
resolver 114.114.114.114 valid=300s;
resolver_timeout 10s;
配置 CDN
使用又拍云 CDN 加速,并且在 CDN 配置 SSL 证书,开启 HSTS 功能。