柚子快報邀請碼778899分享:運維 nginx基于$http
柚子快報邀請碼778899分享:運維 nginx基于$http
nginx基于$http_user_agent的訪問控制
1).$http_user_agent的訪問控制功能:
user_agent大家并不陌生,可以簡單理解成瀏覽器標(biāo)識,包括一些蜘蛛爬蟲都可以通過user_agent來辨識。
為了減少服務(wù)器的壓力,其實可以把除主流搜索引擎蜘蛛外的其他蜘蛛爬蟲全部封掉。
另外,一些cc攻擊,我們也可以通過觀察它們的user_agent找到規(guī)律。
2).$http_user_agent的訪問控制示例:
http_user_agent包含以下類型爬蟲的請求,全部返回403狀態(tài)碼
????if ($http_user_agent ~ 'YisouSpider|MJ12bot/v1.4.2|YoudaoBot|Tomato') ?#~是區(qū)分大小寫,也可寫成不區(qū)分大小寫:~*
????{
????????return 403;
????}
測試:
a). #curl -A "123YisouSpider1.0" -I www.1.com ?#結(jié)果匹配 ?#-A是手動修改User-Agent, 如: -A "xxy1.0",那么User-Agent的值就是:xxy1.0
b). #curl -A "MJ12bot/v1.4.1" ?-I ??www.1.com ??#結(jié)果不匹配
3).$user_agent的訪問控制示例詳解:
[root@localhost ~]# cat /usr/local/nginx/conf/vhost/www.1.conf
server{
????listen 80;
????server_name www.1.com;
????root /data/wwwroot/www.1.com;
????index index.html;
????if ($http_user_agent ~ 'YisouSpider|MJ12bot/v1.4.2|YoudaoBot|Tomato')
????{
????????return 403;
????}
}
[root@localhost ~]# /usr/local/nginx/sbin/nginx -s reload
[root@localhost ~]# curl -A "123YisouSpider1.0" -I www.1.com ??#訪問時候手動設(shè)置User-Agent的值,匹配條件
HTTP/1.1 403 Forbidden
Server: nginx/1.15.9
Date: Thu, 24 Dec 2020 09:17:23 GMT
Content-Type: text/html
Content-Length: 153
Connection: keep-alive
[root@localhost ~]# tail -1 /usr/local/nginx/logs/access.log ???#查看訪問日志的User-Agent的值確認(rèn)情況
127.0.0.1 - - [24/Dec/2020:17:17:23 +0800] "HEAD / HTTP/1.1" 403 0 "-" "123YisouSpider1.0"
[root@localhost ~]# curl -A "MJ12bot/v1.4.1" ?-I ??www.1.com ????#訪問時候手動設(shè)置User-Agent的值,不匹配條件
HTTP/1.1 200 OK
Server: nginx/1.15.9
Date: Thu, 24 Dec 2020 09:18:45 GMT
Content-Type: text/html
Content-Length: 6
Last-Modified: Sat, 19 Dec 2020 08:11:31 GMT
Connection: keep-alive
ETag: "5fddb5b3-6"
Accept-Ranges: bytes
[root@localhost ~]# tail -1 /usr/local/nginx/logs/access.log ??#查看訪問日志的User-Agent的值確認(rèn)情況
127.0.0.1 - - [24/Dec/2020:17:18:45 +0800] "HEAD / HTTP/1.1" 200 0 "-" "MJ12bot/v1.4.1"
$user_agent的訪問控制參考鏈接: https://github.com/aminglinux/nginx/blob/master/access/user_agent.md
4).什么是User-Agent?User-Agent的作用?
User-Agent是http協(xié)議中的一部分,屬于頭域的組成部分,使得服務(wù)器能夠識別客戶使用的操作系統(tǒng)及版本、CPU 類型、瀏覽...。User Agent也簡稱UA。用較為普通的一點來說,是一種向訪問網(wǎng)站提供你所使用的瀏覽器類型、操作系統(tǒng)及版本、CPU 類型、瀏覽器渲染引擎、瀏覽器語言、瀏覽器插件等信息的標(biāo)識。UA字符串在每次瀏覽器 HTTP 請求時發(fā)送到服務(wù)器!通過user-agent不能完全準(zhǔn)確的判斷是屬于哪款瀏覽器,但是能大概區(qū)分出是哪款類型的瀏覽器。
b).常見 User-Agent 舉例:
(1) Chrome
Win7:
Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/14.0.835.163 Safari/535.1
(2) Firefox
Win7:
Mozilla/5.0 (Windows NT 6.1; WOW64; rv:6.0) Gecko/20100101 Firefox/6.0
(3) Safari
Win7:
Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/534.50 (KHTML, like Gecko) Version/5.1 Safari/534.50
(4) IE
Win7+ie9:
Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0; .NET CLR 2.0.50727; SLCC2; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; InfoPath.3; .NET4.0C; Tablet PC 2.0; .NET4.0E)
柚子快報邀請碼778899分享:運維 nginx基于$http
參考文章
本文內(nèi)容根據(jù)網(wǎng)絡(luò)資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點和立場。
轉(zhuǎn)載請注明,如有侵權(quán),聯(lián)系刪除。