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。限制對...