## 一、域名重定向 ``` if ($host ~* !^www.) { return 301 https://www.替换你的域名.com$request_uri; break; } ``` ## 二、UA防盗链 >[danger] 对于个人或小型网站来说,我不希望国外蜘蛛来访问我的网站,特别是个别垃圾蜘蛛,它们访问特别频繁。这些垃圾流量多了之后,严重浪费服务器的带宽和资源。通过判断user agent,在nginx中禁用这些蜘蛛可以节省一些流量,也可以防止一些恶意的访问。 ``` if ($http_user_agent ~* (Scrapy|Curl|HttpClient|Hacker|Creaker)) { return 403; } ``` ## 三、Referer防盗链 >[danger] **背景说明**:为了避免他人获取服务器资源,只能让本服务器能正常访问服务器资源,使用refer做防止其他网站或直接获取服务器资源,在nginx中配置如下: ``` location ~ /uploads/mail/201 { valid_referers blocked www.pinlucky.com www.pinlucky.cn; #valid_referers blocked $server_name; if ($invalid_referer) { rewrite ^/ /static/img/openRedBG.png; return 403; } #rewrite ^/ /static/img/openRedBG.png; } ``` ## 四、IP黑(白)名单 >[success] IP白名单 ``` allow 1.1.1.1; allow 1.1.1.2; deny 1.1.2.0/24; deny all; ``` >[success] IP黑名单 ``` deny 1.1.1.2; ``` ## 五、限速管理 ``` limit_conn perip 5; limit_rate 20k; ``` >[success] #上面这两个limit的意思是:单个IP最大允许5个连接,单个连接带宽为20K,若下载器一次可以发起5个请求(5个连接数),那么这个下载器最大下载速度为100K; ## 六、CC防攻击 > https://www.centos.bz/2012/12/openresty-nginx-block-cc-attack-deploy/ ## 七、URL重写 `rewrite ^(.*)$ /index.php?s=$1 last;` > PHP后缀改为html后缀(未测试) `rewrite ^(.*)\.php(.*)$ /$1\.html$2 last;` ## 八、过滤请求 ``` if ($request_method ~* GET|get) { rewrite ^(.*)$ /notice last; } ``` ## 九、头部操作 > 添加响应头部,这样在浏览器的`Response Headers`就能看到客户端的IP了,注意放到location里面,还可能被其他location覆盖导致获取不到。 ```nginx add_header yourip $remote_addr; ``` > 添加请求头: ## 十、接收自定义头部 比如我们自定义header为X-Real-IP,通过nginx获取该header时需要这样:$http\_x\_real\_ip; (一律采用小写,而且前面多了个http\_) ``` curl http://127.0.0.1/nginx -H "A-B-C:a-B-c" -v 127.0.0.1 - a-B-c ``` ``` location /nginx { default_type text/html; return 200 '$remote_addr - $http_a_b_c'; } if ( $http_a_b_c != "abcdef00" ) { return 403 '访问被禁止,访问该请求需要特定的头部'; } ```