像iPhone一樣好玩的Web服務(wù)器: Caddy

據(jù)Netcraft今年5月份放出了一篇統(tǒng)計(jì)文章中宁仔,Apache矛辕、Nginx和微軟的IIS分別以45.61%粥航、20.22%7.83%市場(chǎng)占有率依然排在“活躍網(wǎng)站所使用Web服務(wù)器市場(chǎng)份額”的前三甲粟焊。

但是在走勢(shì)圖中冤狡,我們儼然也感覺到其他Web服務(wù)器正在悄悄集結(jié)孙蒙,通過自己不斷的創(chuàng)新和優(yōu)化來威脅著霸主們的地位。這其中悲雳,一個(gè)已經(jīng)剛滿2歲的家族小成員非常起眼挎峦,他就是有著“云計(jì)算時(shí)代的C語言”之稱的Go語言所編寫的Caddy

Caddy是什么合瓢?在Caddy的官網(wǎng)上給出一個(gè)最簡(jiǎn)單的介紹:“Caddy是一個(gè)能自動(dòng)創(chuàng)建HTTPS功能的HTTP/2網(wǎng)站服務(wù)器”坦胶。簡(jiǎn)單的一句話,突出了兩大賣點(diǎn)晴楔,“自動(dòng)創(chuàng)建HTTPS”和“HTTP/2”顿苇。申請(qǐng)過HTTPS數(shù)字證書的人應(yīng)該都知道,要部署一個(gè)HTTPS站點(diǎn)税弃,需要走多少流程和提交多少資料纪岁,而且數(shù)字證書的年費(fèi)價(jià)格不菲(屌絲想法),但是我要告訴你则果,這些幔翰,對(duì)于Caddy來說,都是自動(dòng)操作的西壮,而且重點(diǎn)是遗增,上面這句話里沒有體現(xiàn)出來,就是數(shù)字證書是免費(fèi)的款青!免費(fèi)的做修!免費(fèi)的!重要的事情說三遍抡草,具體怎么個(gè)實(shí)現(xiàn)饰及,在下面介紹特性時(shí)會(huì)詳細(xì)講解給大家。

Caddy的作者是來自美國(guó)的Matthew Holt渠牲,因?yàn)槭怯肎o語言開發(fā)的旋炒,所以Caddy天生里就帶著高并發(fā)的基因。據(jù)國(guó)內(nèi)技術(shù)人士測(cè)試签杈,其同時(shí)并發(fā)數(shù)優(yōu)于Apache瘫镇,略低于Nginx〈鹄眩“幾乎所有的功能在Caddy里的都是插件”铣除,這是Matthew Holt對(duì)他的孩子的另一種詮釋,“HTTP服務(wù)器是插件鹦付,高級(jí)的TLS特性也是插件尚粘,每一行命令實(shí)現(xiàn)的功能都是一個(gè)插件”。自始至終敲长,Caddy就是一個(gè)內(nèi)心強(qiáng)大郎嫁,勇于挑戰(zhàn)新事物的探險(xiǎn)家秉继,這完全得益于他的作者對(duì)互聯(lián)網(wǎng)產(chǎn)品的深刻認(rèn)知與理解。

一泽铛、運(yùn)行

1.1 默認(rèn)運(yùn)行

廢話不多說尚辑,我們先看看Caddy是怎樣運(yùn)行的。命令行里輸入:

caddy

就是這么簡(jiǎn)單盔腔,在沒有任何配置信息的情況下杠茬,Caddy會(huì)為你默認(rèn)打開2015端口,呈現(xiàn)出一個(gè)404不存在的頁面弛随。

1.2 Caddyfile配置運(yùn)行

如果需要配置更多信息瓢喉,而也只需要一個(gè)Caddyfile配置文件。配置文件格式如下:

stozen.net ? # Your site's address

ext .html ? # Clean URLs

errors error.log { ? ? ? # Error log

404 error-404.html ? # Custom error page

}

# PHP backend

fastcgi /blog localhost:9000 php

# API load balancer

proxy /api localhost:5001 localhost:5002

配置說明:

- stozen.net:網(wǎng)站綁定的域名

- ext:文件擴(kuò)展名隱藏功能舀透。此處如果訪問/user地址栓票,實(shí)質(zhì)訪問的是/user.html

- errors:記錄錯(cuò)誤日志的地址,并配置不同錯(cuò)誤狀態(tài)返回到客戶端的錯(cuò)誤頁面

- fastcgi:支持fastcgi代理方式訪問PHP站點(diǎn)

- proxy:支持反向代理和負(fù)載均衡

Caddyfile所在路徑里執(zhí)行caddy命令盐杂,站點(diǎn)便輕松運(yùn)行逗载。是不是比Apache和Nginx配置方便多了?

1.3 更快速的運(yùn)行

在我們測(cè)試階段链烈,可以直接使用命令行參數(shù)的方式運(yùn)行,無需`Caddyfile`挚躯,直接綁定域名强衡。

caddy -host stozen.net

夠簡(jiǎn)單吧?如果你覺得還不夠码荔,我再舉些Caddy的特性功能漩勤。

二、特性

2.1 通用功能

Caddy通過Caddyfile來配置你的站點(diǎn)缩搅,簡(jiǎn)單直觀越败,剛才我們已經(jīng)見識(shí)到了。默認(rèn)情況下硼瓣,Caddy支持純靜態(tài)站點(diǎn)究飞,當(dāng)然,你如果使用了它自帶的模板插件堂鲤,反向代理功能或FastCgi等其他插件亿傅,還可是運(yùn)行動(dòng)態(tài)網(wǎng)站。Caddy有自己的命令行(Command Cli)瘟栖,可以快速配置站點(diǎn)運(yùn)行葵擎。Caddy支持多核處理,Go語言里的goroutine技術(shù)讓Caddy能處理更多的并發(fā)請(qǐng)求半哟。在Caddy啟動(dòng)和關(guān)閉的時(shí)候酬滤,你還可以設(shè)置相應(yīng)的系統(tǒng)命令去運(yùn)行签餐,這對(duì)于系統(tǒng)運(yùn)維工程師來說絕對(duì)是非常友好的。Caddy的日志功能也相當(dāng)強(qiáng)大盯串,可以自定義日志格式贱田,可以將日志輸出到文件、stdout/stderr里嘴脾,或者本地和遠(yuǎn)程的系統(tǒng)日志里男摧。更方便的是,當(dāng)Caddy的日志文件非常大時(shí)译打,Caddy會(huì)自動(dòng)分割日志文件并移動(dòng)它耗拓,這對(duì)于合理分配磁盤資源非常有用。最特別的就是Caddy完全依賴于插件奏司,所有的服務(wù)器類型乔询、指令、DNS providers都是插件韵洋,插件可以通過Go語言方便實(shí)現(xiàn)竿刁。

2.2 部署特性

Caddy就是一個(gè)單獨(dú)二進(jìn)制文件,沒有任何依賴搪缨,甚至連libc都不需要食拜。天生的跨平臺(tái)支持,支持各大Linux副编、windows發(fā)行版本负甸,甚至連Android也能穩(wěn)定運(yùn)行。當(dāng)然,你也可以在Docker鏡像里安裝Caddy,讓站點(diǎn)開發(fā)更DevOps化恃泪。

2.3 安全特性

支持TLS傳輸協(xié)議,考慮客戶端覽器兼容性的情況下蚕捉,讓用戶的信息傳輸更安全。采用了TLS的擴(kuò)展技術(shù)SNI柴淘,解決了一個(gè)服務(wù)器使用多個(gè)域名和證書的問題迫淹。對(duì)于網(wǎng)絡(luò)切換后的用戶Session認(rèn)證更加智能,使用了TLS session ticket的方式悠就,當(dāng)用戶網(wǎng)絡(luò)或服務(wù)器后臺(tái)地址變化的情況下千绪,連接請(qǐng)求依然有效。

Caddy能夠自動(dòng)獲取Let's Encrypt的證書梗脾,此證書是免費(fèi)獲取的荸型,但是有效期只有一個(gè)月。Caddy能自動(dòng)對(duì)證書進(jìn)行續(xù)訂,達(dá)到了證書永久有效的效果瑞妇。官方自豪的說稿静,Caddy是第一個(gè)實(shí)現(xiàn)此技術(shù)的Web服務(wù)器。

2.4 HTTP服務(wù)器特性

支持網(wǎng)站文件目錄瀏覽功能辕狰,支持Gzip文件壓縮功能改备,支持網(wǎng)站響應(yīng)超時(shí)功能,支持單服務(wù)器下多虛擬站點(diǎn)功能蔓倍。對(duì)Markdown靜態(tài)文件天然支持悬钳,能將Markdown頁面自動(dòng)轉(zhuǎn)換成HTML頁面返回給瀏覽器。后端支持模板技術(shù)偶翅,動(dòng)態(tài)生成網(wǎng)站內(nèi)容默勾。Caddy支持HTTP/2服務(wù)端推送技術(shù),支持HTTP網(wǎng)站基礎(chǔ)認(rèn)證功能聚谁,重定向功能母剥,修改Header頭部信息功能。像Nginx一樣形导,Caddy也支持反向代理和負(fù)載均衡技術(shù)环疼,對(duì)Websocket的代理技術(shù),也一樣支持很好朵耕。其他的炫隶,包含隱藏路由擴(kuò)展名,路徑重寫憔披,自定義MIME類型等等限,都是非常好用的一些特性。

三芬膝、iPhone vs Caddy

像喬布斯創(chuàng)造的iPhone一樣,Caddy屬于外表設(shè)計(jì)時(shí)尚簡(jiǎn)單形娇,用戶操作簡(jiǎn)單锰霜,但是內(nèi)部功能十分強(qiáng)大的產(chǎn)品。插件功能類似iPhone里的一個(gè)個(gè)應(yīng)用桐早,能給用戶帶來不同的體驗(yàn)和便捷癣缅。一句話,簡(jiǎn)約而不簡(jiǎn)單哄酝,值得用戶研究并應(yīng)用在自己的站點(diǎn)中友存。

說到最后,文章中只是簡(jiǎn)單的闡述了Caddy的一些特性功能陶衅,如果你想更多的了解它并應(yīng)用在站點(diǎn)中屡立,可以研究下Caddy的官網(wǎng)源碼(https://github.com/caddyserver/website),官網(wǎng)使用了Caddy+Hugo等技術(shù)搭建搀军,歡迎你也加入使用Caddy的隊(duì)列膨俐!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末勇皇,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子焚刺,更是在濱河造成了極大的恐慌敛摘,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,561評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件乳愉,死亡現(xiàn)場(chǎng)離奇詭異兄淫,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)蔓姚,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,218評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門捕虽,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人赂乐,你說我怎么就攤上這事薯鳍。” “怎么了挨措?”我有些...
    開封第一講書人閱讀 157,162評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵挖滤,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我浅役,道長(zhǎng)斩松,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,470評(píng)論 1 283
  • 正文 為了忘掉前任觉既,我火速辦了婚禮惧盹,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘瞪讼。我一直安慰自己钧椰,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,550評(píng)論 6 385
  • 文/花漫 我一把揭開白布符欠。 她就那樣靜靜地躺著嫡霞,像睡著了一般。 火紅的嫁衣襯著肌膚如雪希柿。 梳的紋絲不亂的頭發(fā)上诊沪,一...
    開封第一講書人閱讀 49,806評(píng)論 1 290
  • 那天,我揣著相機(jī)與錄音曾撤,去河邊找鬼端姚。 笑死,一個(gè)胖子當(dāng)著我的面吹牛挤悉,可吹牛的內(nèi)容都是我干的渐裸。 我是一名探鬼主播,決...
    沈念sama閱讀 38,951評(píng)論 3 407
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼橄仆!你這毒婦竟也來了剩膘?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,712評(píng)論 0 266
  • 序言:老撾萬榮一對(duì)情侶失蹤盆顾,失蹤者是張志新(化名)和其女友劉穎怠褐,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體您宪,經(jīng)...
    沈念sama閱讀 44,166評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡奈懒,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,510評(píng)論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了宪巨。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片磷杏。...
    茶點(diǎn)故事閱讀 38,643評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖捏卓,靈堂內(nèi)的尸體忽然破棺而出极祸,到底是詐尸還是另有隱情,我是刑警寧澤怠晴,帶...
    沈念sama閱讀 34,306評(píng)論 4 330
  • 正文 年R本政府宣布遥金,位于F島的核電站,受9級(jí)特大地震影響蒜田,放射性物質(zhì)發(fā)生泄漏稿械。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,930評(píng)論 3 313
  • 文/蒙蒙 一冲粤、第九天 我趴在偏房一處隱蔽的房頂上張望美莫。 院中可真熱鬧,春花似錦梯捕、人聲如沸厢呵。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,745評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽述吸。三九已至,卻和暖如春锣笨,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背道批。 一陣腳步聲響...
    開封第一講書人閱讀 31,983評(píng)論 1 266
  • 我被黑心中介騙來泰國(guó)打工错英, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人隆豹。 一個(gè)月前我還...
    沈念sama閱讀 46,351評(píng)論 2 360
  • 正文 我出身青樓椭岩,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子判哥,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,509評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理献雅,服務(wù)發(fā)現(xiàn),斷路器塌计,智...
    卡卡羅2017閱讀 134,633評(píng)論 18 139
  • Spring Boot 參考指南 介紹 轉(zhuǎn)載自:https://www.gitbook.com/book/qbgb...
    毛宇鵬閱讀 46,773評(píng)論 6 342
  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 171,769評(píng)論 25 707
  • 發(fā)現(xiàn) 關(guān)注 消息 iOS 第三方庫挺身、插件、知名博客總結(jié) 作者大灰狼的小綿羊哥哥關(guān)注 2017.06.26 09:4...
    肇東周閱讀 12,064評(píng)論 4 62
  • 陌塵:“我真是自作孽不可活锌仅,惹上了這么一號(hào)人章钾,看似文質(zhì)彬彬的,實(shí)際不是這樣的热芹,不是的贱傀,怎么會(huì)這樣……” 正打算問候...
    瀟潼閱讀 205評(píng)論 0 0