將 Caddy 安裝成正向代理伺服器
install caddy forward proxy -到 Caddy Server 下載頁,選擇主機的 PLATFORM(e.q. Linux 64-bit),
需要的 PLUGINS(e.q. hook.service, http.forwardproxy, http.ipfilter)
和適當的 LICENSE(e.q. Personal) →
複製 One-step installer script (bash)
內的指令到要安裝的主機上執行該指令 →
設定 Caddy Server 設定檔 → 執行 Caddy Server
Why
除非 ISP 有提供,要找到一個免費又穩定的的 Proxy Server 著實是一個問題。 實在找不到也只能自己架設一個。但動不動就要架設並管理一個老舊又效率不彰的 Squid 或要搞清楚 Apache (with mod_proxy) 的設定也實在是一個麻煩。而 Nginx 雖然在反向代理上優秀,但正向代理上卻是問題多多,或可以試試 Nginx (module provides "CONNECT" HTTP method) 模組來幫忙。 HAProxy 可以算是神兵利器,但 HAProxy(option http_proxy) 只支援純 IP 的位址,不解析 DNS,神功廢掉大半,用途受限。
查了半天資料,最後決定用 Caddy Server,雖然他也沒直接支援 Forward Proxy,但還好有 Caddy(plugin http.forwardproxy)。
What
- Caddy Server
-
Caddy 是使用 GoLang 編寫的 Web 伺服器, 一般常用來建立反向代理(Reverse proxy)或靜態網頁伺服器。 以設定簡單和自動簽發 HTTPS 證書為賣點。 Let’s Encrypt 是默認的證書頒發機構。
- Forward proxy
-
代理伺服器會接收客戶端傳送的請求後轉發給其他伺服器。 代理伺服器不會改變客戶端的請求 URI,在直接傳送給前方持有資源的目標伺服器後,取回資源再送回給客戶端。
How
取得 Caddy 執行檔
-
到 Caddy Server 下載頁面
-
選擇需要的 PLATFORM 和 PLUGINS
-
Choose platform: Linux 64-bit (or your OS)
-
Choose your plugins: Add plugins
-
hook.service: 以 service 執行
-
http.forwardproxy: 正向代理插件
-
http.ipfilter: 過濾查詢請求的 IP
-
-
Choose license: Personal (free)
-
-
下載檔案(兩個方法)
- Direct link to download
-
透過下載連結取得壓縮檔,複製輸入欄內的 URL,透過瀏覽器或
wget
之類的指令下載。
壓縮檔根據平台選擇有不同的類型:-
Windows: zip
-
Linux: tag.gz
-
- One-step installer script (bash)
-
直接複製輸入欄內的指令,透過
curl
執行,即可。(OS 上必須有支援 curl)
> curl https://getcaddy.com | bash -s personal hook.service,http.forwardproxy,http.ipfilter
設定
編輯 caddy server 的設定檔。
沒有以 -conf <path>
指定設定檔時,內定是工作路徑下約定俗成的 Caddyfile
。
host:port { // (1)
root /home/www // (2)
ipfilter / { // (3)
rule allow
ip xxx.xxx.xxx.xxx/xx // (4)
}
forwardproxy {
hide_ip // (5)
}
}
-
提供服務的網址,
host
可以省略,只指定服務傾聽的埠:port
內定會是 2015 -
指定網站根目錄的路徑,因為只是代理沒有提供資源,所以可省略,內定會是工作路徑
-
啟用 ipfilter, 網址路徑吻合
/
都要符合下面的過濾原則 -
設定可使用 proxy server 的客戶端 IP 或 IP 範圍,建議設定為只有內部私有 IP 可以存取
-
啟用 forward proxy 並隱藏客戶端來源 IP
啟用
直接執行
> sudo caddy
指定設定檔執行
> sudo caddy -conf <path/Caddyfile>
以 service 執行
> sudo caddy -service install // (1)
> sudo caddy -service start // (2)
-
第一次必須先將 Caddy 安裝成服務
-
以服務啟動
以 service 執行並指定設定檔
> sudo caddy -service install -conf <path> // (1)
> sudo caddy -service start
-
安裝成服務時指定設定檔,如果已經初始化過可以先
caddy -service uninstall
再安裝
Behind
一台不夠,那就來三台吧。
Caddy 天生就可以架反向代理(Reverse proxy)伺服器。只要前面架一個反向代理指向後面多台的正向代理,那不就完美了。 但事不從人願, Caddy 在轉發時會移除 request 的 Host。所以後面的正向代理伺服器也就不知道要轉送給哪一台主機要求資源。 所以,你得找一個沒這問題的反向代理伺服器來工作。
當然,首選 HAProxy。 怎麼架,就請參考 架設分散式的正向代理。