日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Nginx >内容正文

Nginx

Nginx严格访问代理HTTP资源

發布時間:2025/3/8 Nginx 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Nginx严格访问代理HTTP资源 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

為什么80%的碼農都做不了架構師?>>> ??

1??? 嚴格訪問

訪問能基于客戶端的IP地址允許或拒絕或使用基于HTTP驗證。

為了允許或拒絕從某個地址及或所有地址的訪問,使用allow和deny指令:

location / {

????deny 192.168.1.2;

????allow 192.168.1.1/24;

????allow 127.0.0.1;

????deny all;

}

?為了啟用驗證,使用auth_basic指令。用戶要么輸入有效的用戶名和密碼獲取網站的訪問。用戶名和密碼必須在auth_basic_user_file指令命名的文件中列出。

server {

????...

????auth_basic "closed website";

????auth_basic_user_file conf/htpasswd;

}

?你能讓網站的一些區域沒有驗證即使你需要整個網站驗證。在非驗證區域配置塊中,在auth_basic指令中包括off參數取消繼承外部配置級別設置。例如,限制整個網站訪問,但有些位置可以公開:

server {

????...

????auth_basic "closed website";

????auth_basic_user_file conf/htpasswd;

?

????location /public/ {

????????auth_basic off;

????}

}

為了聯合IP地址和驗證,使用satisfy指令。默認,設置為all,因此客戶端滿足這兩種類型的條件授予訪問權限。當satisfy指令設置為any,至少滿足一個條件授予訪問權限。因此,如果IP地址是允許的,未驗證的用戶可以訪問,反之亦然。

?location / {

????satisfy any;

?

????allow 192.168.1.0/24;

????deny ?all;

?

????auth_basic ??????????"closed site";

????auth_basic_user_file conf/htpasswd;

}

2??? 限制訪問

可以限制:

  • 每個鍵值的連接數(例如,每個IP地址)

  • 每個鍵值請求速率(在1秒/分鐘期間允許處理的請求數)

  • 連接的下載速度

注意,IP地址能在NAT設備后共享,因此通過IP地址應該是明智的。

2.1??? 限制連接數

為了限制連接數,首先使用limit_conn_zone指令定義鍵并設置共享內存區域參數(worker進程將使用該區域共享鍵值計數器)。作為第一個參數,指定表達式計算為鍵。第二個參數,指定區域的名字和大小。

limit_conn_zone $binary_remote_address zone=addr:10m;

?第二,使用limit_conn指令應用location虛擬服務器或整個http上下文的限制。指定共享內存區域的名字作為第一個參數,允許每個鍵的連接作為第二個參數。

location /download/ {

????limit_conn addr 1;

}

連接數在IP地址基礎上的限制,因為$binary_remote_address變量用作鍵。通過使用$server_name變量限制指定服務器連接數:

http {

????limit_conn_zone $server_name zone=servers:10m;

?

????server {

????????limit_conn servers 1000;

????}

}

?2.2??? 限制請求速率

為了限制請求速率,首先設置鍵和共享內存區域保存計數器。

limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s;

rate參數能指定每秒的請求數(r/s)或沒分鐘的請求數(r/m)。

一旦定義共享內存區域,使用limit_req指令在虛擬服務器或location(或全局,如果需要)為了限制請求速度:

location /search/ {

????limit_req zone=one burst=5;

}

?如果速率超過限制,請求被放入隊列延遲處理。burst參數設置等待處理的最大請求數。超過burst限制的請求Nginx響應503錯誤。

如果burst期間不需要延遲,添加nodelay參數。

limit_req zone=one burst=5 nodelay;

2.3??? 限制帶寬

為了限制每個連接的帶寬,使用limit_rate指令:

location /download/ {

????limit_rate 50k;

}

使用該設置,客戶端將能夠通過單個連接下載內容速度最大為每秒50千字節。然而,客戶端打開各種連接。因此,如果目標是組織下載速度大于指定值,連接的數量也應該限制。例如,每個IP地址一個連接(如果共享區域使用上面指定的):

location /download/ {

????limit_conn addr 1;

????limit_rate 50k;

}

為了只在客戶端下載某一數據之后利用限制,使用limit_rate_after指令。合理允許客戶端快速下載某些數據(例如,文件頭——電影索引),限制下載剩下數據的速率(讓用戶看電影,不下載)。

limit_rate_after 500k;

limit_rate 20k;

下面例子顯示連接數和帶寬限制聯合配置。每個客戶端地址允許最大連接數為5,適合現代瀏覽器打開同時打開三個連接的情況。與此同時,服務下載的location只允許一個連接:

http {

????limit_conn_zone $binary_remote_address zone=addr:10m

?

????server {

????????root /www/data;

????????limit_conn addr 5;

?

????????location / {

????????}

?

????????location /download/ {

????????????limit_conn addr 1;

????????????limit_rate 1m;

????????????limit_rate 50k;

????????}

????}

}

轉載于:https://my.oschina.net/leeck/blog/729563

總結

以上是生活随笔為你收集整理的Nginx严格访问代理HTTP资源的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。