反向代理
原理
1、客戶機在發起請求時,不會直接發送給目的主機,而是先發送給代理伺服器;
2、代理伺服器接收客戶機請求後,再向業務伺服器送出請求;
3、業務伺服器 接收請求、處理請求 最後 響應請求;
3、代理伺服器接收業務主機傳回的資料;
4、代理伺服器響應用戶端請求;
5、用戶端通過浏覽器渲染請求并展示給使用者。

正向代理
正向代理 是一個位于用戶端和原始伺服器(origin server)之間的伺服器,為了從原始伺服器取得内容,用戶端向代理發送一個請求并指定目标(原始伺服器),然後代理向原始伺服器轉交請求并将獲得的内容傳回給用戶端。用戶端必須要進行一些特别的設定才能使用正向代理。
正向代理的用途:
- 通路原來無法通路的資源,如google;
- 可以做緩存,加速通路資源;
- 對用戶端通路授權,上網進行認證;
- 代理可以記錄使用者通路記錄(上網行為管理),對外隐藏使用者資訊;
應用場景
1、堡壘機應用:業務伺服器隻接收來自堡壘機的連結通路(例如:代理伺服器的Ip或特定端口),其他的都拒絕。
2、釋出内網伺服器:
3、緩存應用:将靜态資料緩存起來,提高使用者體驗。根據28法則,緩存伺服器處理80%的資料,業務伺服器處理20%的資料。
代碼實作
用戶端 win7 http://192.168.244.128
反代 nginx ip128
業務機器 https://www.cnblogs.com/fqh202 or http://101.37.225.65/
在客戶機輸入 http://192.168.244.128,反代伺服器向 http://101.37.225.65/ 請求資料并傳回:
server {
listen 80;
server_name www.abc.com;
charset utf8;
location / {
proxy_pass http://101.37.225.65:80;
}
}
測試:
限速
限制機關時間内的最大連接配接數:限制某個使用者在一個給定的時間段内能夠産生HTTP請求的數,最典型的就是12306網站,由于購票需要會不斷重新整理頁面,進而産生大量請求(而淘寶天貓雙十一不會不斷重新整理頁面),最終會導緻當機,是以必須限制機關時間内的最大連接配接數。
安全目的,例如 暴力破解密碼。
通過限制進來的請求速率,并且結合日志标記目标urls來幫助防範DDOS攻擊。
什麼是DDOS 攻擊?
它在短時間内發起大量請求,耗盡伺服器的資源,無法響應正常的通路,造成網站實質下線。
DDOS 裡面的 DOS 是 denial of service(停止服務)的縮寫,表示這種攻擊的目的,就是使得服務中斷。最前面的那個 D 是 distributed (分布式),表示攻擊不是來自一個地方,而是來自四面八方,是以更難防。你關了前門,他從後門進來;你關了後門,他從視窗跳起來。
參考:http://www.ruanyifeng.com/blog/2018/06/ddos.html
應用場景
1、DDOS防禦
2、下載下傳場景保護
原理和算法思想
水(請求)從上方倒入水桶,從水桶下方流出(被處理);
來不及流出的水存在水桶中(緩存),以固定的速率流出;
水桶滿後水溢出(丢棄)。
這個算法的核心是:緩存請求、勻速處理、多餘的請求直接丢棄。
實作方式
Nginx主要有兩種限速方式:按連接配接數限速(ngx_http_limit_conn_module)、按請求速率限速(ngx_http_limit_req_module)。
按連接配接數限速
按連接配接數限速是指限制單個IP(或者其他的key)同時發起的連接配接數,超出這個限制後,Nginx将直接拒絕更多的連接配接。
配置:
limit_req_zone $binary_remote_addr zone=addr:10m rate=1r/s; # 每秒處理1個請求
server {
listen 80;
charset utf8;
location / {
root html;
index index.html index.htm;
}
location /abc {
limit_req zone=addr burst=5 nodelay;
}
}
第一段配置
第一個參數:$binary_remote_addr 表示通過remote_addr這個辨別來做限制,“binary_”的目的是縮寫記憶體占用量,是限制同一用戶端ip位址;
第二個參數:zone=addr:10m表示生成一個大小為10M,名字為addr的記憶體區域,用來存儲通路的頻次資訊;
第三個參數:rate=1r/s表示允許相同辨別的用戶端的通路頻次,這裡限制的是每秒1次,還可以有比如30r/m的;
第二段配置
第一個參數:zone=one 設定使用哪個配置區域來做限制,與上面limit_req_zone 裡的name對應;
第二個參數:burst=5,這個配置的意思是設定一個大小為5的緩沖區,當有大量請求(爆發)過來時,超過了通路頻次限制的請求可以先放到這個緩沖區内;
第三個參數:nodelay,如果設定,超過通路頻次而且緩沖區也滿了的時候就會直接傳回503,如果沒有設定,則所有請求會等待排隊
按請求速率限速
按請求速率限速是指限制單個IP(或者其他的key)發送請求的速率,超出指定速率後,Nginx将直接拒絕更多的請求。采用leaky bucket算法實作。
limit_conn_zone $binary_remote_addr zone=iozone:10m;
server {
listen 80;
charset utf8;
location / {
root html;
index index.html index.htm;
}
location /cde {
limit_conn iozone 1;
limit_rate 100k; # 最大下載下傳速率
}
}
$binary_remote_addr是限制同一用戶端ip位址
$server是限制同一server最大并發數
limit_conn為限制并發連接配接數,nginx 1.18以後用limit_conn_zone替換了limit_conn
限速前:
限速後:
轉載于:https://www.cnblogs.com/fqh202/p/9998804.html