前言
本篇文章會從一些nginx上實用的插件進行介紹,以及應對后端服務出現故障處理、高并發限流、黑白名單插件、Nginx第三方插件的應用,這里包括爬蟲限流、以及惡意請求,這些常見的場景下的處理,
代理服務故障處理
當請求過來,有一臺服務器可能掛掉,然后nginx可能掛掉,以及 請求有一千五百萬,但是所有服務器處理性能不夠,以及出現故障時,主動健康檢查支持不夠,nginx;

被動健康檢查
upstream backend {
server 127.0.0.1:8080 weight=1 max_fails=2 fail_timeout=10s;
server 127.0.0.1:8081 weight=1 max_fails=2 fail_timeout=10s;
}

主動健康檢查
upstream cluster {
# simple round-robin
server 127.0.0.1:8080;
server 127.0.0.1:8081;
check interval=5000 rise=1 fall=3 timeout=4000;
#check_http_send "HEAD / HTTP/1.0\r\n\r\n";
#check_http_expect_alive http_2xx http_3xx;
}
Nginx實用插件 提取碼:ejs7
上面有安裝插件的方法,
故障轉移
dubbo中會調幾次,服務轉移 熔斷器等, 遇到故障定義下一個服務器上,
一旦有這個超時配置過后,就會移到下一個服務器上,

應對服務雪崩
動態更新上游服務
高并發限流
本來網路請求有很大的不確定因素,有可能突然請求達到了幾百萬的同時請求,

像這些,我們不能拿到應用程式中去限制,tomcat壓力就非常大了,
限制請求
模塊ngx_http_limit_req_module (nginx.org)
http {
limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s;
limit_req_zone $server_name zone=preserver:10m rate=10r/s;
server {
location /search/ {
limit_req zone=one burst=5;
limit_req zone=perserver burst=10;
}
}
}

burst 表示突發請求,
zone 每秒請求,

限制連接
http {
limit_conn_zone $binary_remote_addr zone=addr:10m;
limit_conn_zone $server_name zone = perserver:10m;
server {
location /download/ {
limit_conn addr 1;
limit_conn perserver 100;
}
}
}
限制給客戶端的回應速率
http核心模塊中對回應速率限制提供了支持,視頻網站,不可能將所有帶寬都給一個請求,我們需要限制每個請求的速率
http {
server {
location /download/ {
limit_rate_after 500k;
limit_rate 50k;
} } }
針對爬蟲限速
robots.txt 寫法:
User-agent: * 這里的*代表的所有的搜索引擎種類,*是一個通配符
Allow: /cgi-bin/ 這里定義是允許爬尋cgi-bin目錄下面的目錄
Disallow: /admin/ 這里定義是禁止爬尋 admin 目錄下面的內容
Disallow: /require/ 這里定義是禁止爬尋 require 目錄下面的內容
這些都是限制爬蟲,限制其訪問敏感資料,
Disallow: /data/www/images

針對爬蟲限速-Nginx配置
所以我們在爬蟲時,需要創建一個ip執行緒池,才能批量設定,并且對于單ip 一定要 對curl、apachebench、spider、bot、slurp 這些關鍵字做匹配
限制客戶端上傳速率
Syntax: limit_upload_rate rate;
Default: limit_upload_rate 0;
Context: http, server, location, if in location
Syntax: limit_upload_rate_after size;
Default: limit_upload_rate_after 0;
Context: http, server, location, if in location

Nginx實用插件 提取碼:ejs7
黑白名單插件
用來限制訪問模塊請求的,
Nginx的訪問模塊
location / {
deny 192.168.1.1;
allow 192.168.1.0/24;
allow 10.1.1.0/16;
allow 2001:0db8::/32;
deny all;
}
黑白名單插件
該插件很久沒有維護了,而且不能正常使用,可以忽略該插件,
ngx_white_black_list 通過組態檔來指定黑白名單內容,
功能描述: 處在黑名單中的 ip 與網路,將無法訪問 web 服務, 處在白名單中的 ip,訪問 web 服務時,將不受 nginx 所有安全模塊的限制, 支持動態黑名單(需要與 ngx_http_limit_req 配合),需要修改nginx代碼這里就不提及了,如有需要,參考給到的ngx_white_black_list鏈接
nginx組態檔內容
# 簡單指令以;結尾
worker_processes 4;
worker_rlimit_nofile 65535;
# 大括號屬于塊指令
events {
worker_connections 1024;
}
http {
# 定義 黑名單或白名單檔案 空間key
# 只能在http指令塊中
# white_black_list_conf可以配置多個 只需 zone=value 其中的value不同就可
white_black_list_conf conf/white.list zone=white:2m;
white_black_list_conf conf/black.list zone=black:4m;
# 啟用黑白名單,on/off,啟用/關閉,
# 在http、server、location下使用, 功能默認是關閉
# 配置在對應的指令塊中,對應的指令塊背景關系生效
white_list white on; #白名單 white 在整個http{}中都開啟
black_list black on; #黑名單 black 在整個http{}中都開啟
server {
listen 80;
root /data/www/;
# 黑白名單配置調整介面,通過它可以調整配置內容
location /sec_config {
sec_config on;
}
}
}

主要還是根據官方檔案,進行查找插件,
第三方插件

這在官方網站上有大量的操作插件,
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/347286.html
標籤:其他
上一篇:設計模式 ——狀態模式
