caddy的訪問認證及頻次限制

2021-08-08 04:14:20 字數 2093 閱讀 2555

caddy 是乙個多功能的 http web伺服器,並且使用let』s encrypt提供的免費證書,想要自動讓**公升級到https,需要滿足一下幾個條件:

1. 主機不能為空,不能為localhost,不能是萬用字元,不能是乙個ip位址

2. 埠不能為指定為80

3. 模式不能指定為http

4. **定義的tls不能關閉

5. 不能由你來提供證書和金鑰

6. caddy可以繫結到80和443(除非你用dns挑戰)

一、訪問認證

1. basicauth

caddy的basicauth實現了http basic authentication。basic authentication可以通過使用使用者名稱和密碼的方式來保護檔案和目錄。

注意:基本的認證在http上是不安全的。在決定使用http基本身份驗證時要謹慎。

使用語法如下:

保護單個檔案或目錄:

basicauth path username password

例子:

basicauth /secret bob hiccup

- path:受保護的檔案或目錄

- username:訪問所需的使用者名稱

- password:訪問所需的密碼

保護多個檔案或目錄

basicauth username password

例子:

basicauth 「mary lou」 milkshakes

- username:訪問所需的使用者名稱

- password:訪問所需的密碼

- realm:可選配置,用於標識受保護的區域,不可重複

- resources:檔案或目錄的列表,每行乙個

2. jwt

jwt為caddy實現了乙個基於json web tokens的認證層。

jwt 指令是 caddy 的擴充套件功能,我們需要在官網上選擇新增該功能並且獲取編譯後的版本。

其基本語法為:

jwt [path]

高階語法:

jwt

譬如我們預設了兩個令牌:user: someone 與 role: member ,我們的配置項如下:

jwt

該中介軟體會拒絕所有 role: member 的訪問,除了使用者名為 someone 的使用者。而另乙個 role: admin 或者 role: foo 的使用者則可以正常訪問。

我們可以通過三種方式來提交令牌:

二、頻次限制

ratelimit

根據客戶端的ip位址來限制請求的處理速率

超出的請求會返回429錯誤(過多的請求),並且header中會新增x-ratelimit-retryafter

可以設定每秒、每分鐘、每小時可以訪問多少次

可以新增白名單

可以對某一ip範圍不加限制

可以對某些檔案或某些目錄不加限制

針對單個資源

ratelimit path rate burst unit

例子:

ratelimit /r 2 3 second

說明:對於/r目錄下的檔案,限制客戶端每秒傳送2個請求(3個爆發)

針對多個資源三、ip限制

ipfilter

根據客戶端的ip來判斷允許還是拒絕。

根據ip或cidr範圍來過濾

ipfilter /

根據國家iso碼過濾

ipfilter /

定義乙個阻塞頁(即訪問被拒絕時返回的頁面)

ipfilter /

過濾多個路徑

ipfilter /notglobal /secret

配置多個阻礙

ipfilter /

ipfilter /webhook

redis實現訪問頻次限制的幾種方式

頻次限制器模式是一種特殊的計數器,它常被用來限制某個操作可以被執行的頻次。這個模式的實質其實是限制對乙個公共api執行訪問請求的次數限制。我們使用incr命令提供該模式的兩種實現。這裡我們假設需要解決的問題是 對每個ip,限制對某api的呼叫次數最高位10次每秒。對該模式乙個相對簡單和直接的實現,請...

redis實現訪問頻次限制的幾種方式

頻次限制器模式是一種特殊的計數器,它常被用來限制某個操作可以被執行的頻次。這個模式的實質其實是限制對乙個公共api執行訪問請求的次數限制。我們使用incr命令提供該模式的兩種實現。這裡我們假設需要解決的問題是 對每個ip,限制對某api的呼叫次數最高位10次每秒。對該模式乙個相對簡單和直接的實現,請...

redis實現訪問頻次限制的幾種方式

這裡將實現的兩種模式翻譯一下,並適當加了一些批註說明。原文可見官網。頻次限制器模式是一種特殊的計數器,它常被用來限制某個操作能夠被執行的頻次。這個模式的實質事實上是限制對乙個公共api執行訪問請求的次數限制。我們使用incr命令提供該模式的兩種實現。這裡我們假設須要解決的問題是 對每乙個ip。限制對...