国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 網站 > 建站經驗 > 正文

Caddy 一個用Go實現的Web Server

2019-11-02 16:34:43
字體:
來源:轉載
供稿:網友

這是一個Web Server的時代,apache2與nginx共舞,在追求極致性能的路上,沒有最高,只有更高。但這又是一個追求個性化的時代,有些Web Server并沒有去擠“Performance提升”這一獨木橋,而是有著自己的定位,Caddy就是這樣一個開源Web Server。

Caddy的作者Matt Holt在caddy官網以及FAQ中對caddy的目標闡釋如下: 其他Web Server為Web而設計,Caddy為human設計。功能定位上,與經常充當最前端反向代理的nginx不同,caddy致力于成為一個易用的靜態 文件Web Server??梢钥闯鯟addy主打易用性,使用配置簡單。并且得益于Go的跨平臺特性,caddy很容易的支持了三大主流平臺:Windows、 Linux、Mac。在Caddy開發者文檔中,我們可以看到caddy還可以在Android(linux arm)上運行。caddy目前版本為0.7.1,還不穩定,且后續版本可能變化較大,甚至與前期版本不兼容,因此作者目前不推薦caddy在生產環境被 重度使用。

關注caddy,是因為caddy填補了go在通用web server這塊的空白(也許有其他,但我還不知道),同時Web server in go也“響應”了近期Golang去C化的趨勢(Go 1.5中C is gone!),即便caddy作者提到caddy的目標并非如nginx那樣。但未來誰知道呢?一旦Go性能足夠高時,一旦caddy足夠穩定時,自然而 然的就會有人將其用在某些應用的生產環境中替代nginx或apache2了。一套全Go的系統,在部署、運維方面也是有優勢的。

一、安裝和運行caddy

和諸多go應用一樣,我們可以直接從caddy的github.com releases頁中找到最新發布版(目前是0.7.1)的二進制包。這里使用的是caddy_darwin_amd64.zip。

下載解壓后,進入目錄,直接執行./caddy即可將caddy運行起來。

$caddy

0.0.0.0:2015

在瀏覽器里訪問localhost:2015,頁面上沒有預期顯示的類似"caddy works!”之類的默認Welcome頁面,而是“404 Not Found"。雖然這說明caddy已經work了,但沒有一個default welcome page畢竟對于caddy beginer來說并不友好。這里已經向作者提了一個sugguestion issue。

二、caddy原理

Go的net/http標準庫已經提供了http server的實現,大多數場合這個http server都能滿足你的需要,無論是功能還是性能。Caddy實質上也是一個Go web app,它也import net/http,嵌入*http.Server,并通過handler的ServeHTTP方法為每個請求提供服務。caddy使用 http.FileServer作為處理 靜態文件的基礎。caddy的誘人之處在于其middleware,將諸多middleware串成一個middleware chain以提供了靈活的web服務。另外caddy中的middleware還可以獨立于caddy之外使用。

caddy從當前目錄的Caddyfile(默認)文件中讀取配置,當然你也可以通過-conf指定配置文件路徑。Caddyfile的配置格式 的確非常easy,這也符合caddy的目標。

Caddyfile總是以站點的Addr開始的。

單一站點的Caddyfile樣例如下:

//Caddyfilelocalhost:2015gziplog ./2015.log

Caddy也支持配置多個站點,類似virtualhost的 配置(80端口多路復用):

//Caddyfilefoo.com:80 {log ./foo.loggzip}bar.com:80 {log ./bar.loggzip}

為了實現風格上的統一,單一站點也最好配置為如下這種格式(代碼內部稱之為 Server Block):

localhost:2015 {gziplog ./2015.log}

這樣Caddyfile的配置文件模板樣式類似于下面這樣:

host1:port {middleware1middleware2 {… …}… …}host2:port {middleware1middleware2 {… …}… …}… …

關于middleware,在caddy文檔中有較為詳細的說明和例子。對于caddy這樣一個年輕的開源項目而言,其文檔還算是相對較全的,雖 然現在還不能和nginx、 apache比。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 喀喇沁旗| 五原县| 都兰县| 兴海县| 光山县| 九江县| 建湖县| 盘锦市| 新丰县| 林周县| 城步| 河津市| 上杭县| 儋州市| 常山县| 雅江县| 库伦旗| 榆社县| 方山县| 黄陵县| 南华县| 桃源县| 顺义区| 蓬溪县| 五台县| 长垣县| 南皮县| 潮安县| 成安县| 乡宁县| 和政县| 罗山县| 建宁县| 长海县| 多伦县| 桐梓县| 台中市| 吉林省| 宿州市| 长顺县| 长葛市|