0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線(xiàn)課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

比Nginx性能更強(qiáng)的下一代Web服務(wù)器

jf_ro2CN3Fa ? 來(lái)源:芋道源碼 ? 作者:芋道源碼 ? 2022-11-15 10:18 ? 次閱讀

簡(jiǎn)介

Caddy 2 是一個(gè)強(qiáng)大的、企業(yè)級(jí)的、開(kāi)源的 Web 服務(wù)器。是一個(gè) Go 編寫(xiě)的 Web 服務(wù)器,類(lèi)似于 Nginx,Caddy 提供了更加強(qiáng)大的功能。

88ddf688-648a-11ed-8abf-dac502259ad0.png

支持 HTTP/2 的 Web 服務(wù)端。它使用 Golang 標(biāo)準(zhǔn)庫(kù)提供 HTTP 功能。Caddy 一個(gè)顯著的特性是默認(rèn)啟用HTTPS。它是第一個(gè)無(wú)需額外配置即可提供HTTPS 特性的Web 服務(wù)器。

  • 官網(wǎng):https://caddyserver.com
  • 文檔:https://caddyserver.com/docs/

基于 Spring Boot + MyBatis Plus + Vue & Element 實(shí)現(xiàn)的后臺(tái)管理系統(tǒng) + 用戶(hù)小程序,支持 RBAC 動(dòng)態(tài)權(quán)限、多租戶(hù)、數(shù)據(jù)權(quán)限、工作流、三方登錄、支付、短信、商城等功能

  • 項(xiàng)目地址:https://github.com/YunaiV/ruoyi-vue-pro
  • 視頻教程:https://doc.iocoder.cn/video/

特性

  • 全自動(dòng)支持 HTTP/2 協(xié)議,無(wú)需配置。
  • 全自動(dòng)變成 HTTPS 站點(diǎn),無(wú)需任何配置。
  • 合理使用多核
  • 支持 IPv6 環(huán)境
  • 對(duì) WebSockets 有很好的支持
  • 可以自動(dòng)把 Markdown 轉(zhuǎn)成 HTML
  • Caddy 對(duì) log 格式的定義很容易
  • 易于部署 ,沒(méi)有依賴(lài)
  • 作為反向代理支持主動(dòng)和被動(dòng)健康檢查、負(fù)載均衡、斷路、緩存等功能。
  • 支持 Windows、 Linux、Mac 三大主流系統(tǒng)
相較于 Nginx 來(lái)說(shuō)使用 Caddy 的優(yōu)勢(shì)如下
88f8f3ca-648a-11ed-8abf-dac502259ad0.png
  • 自動(dòng)的 HTTPS 證書(shū)申請(qǐng)(ACME HTTP/DNS 挑戰(zhàn))
  • 自動(dòng)證書(shū)續(xù)期以及 OCSP stapling 等
  • 更高的安全性包括但不限于 TLS 配置以及內(nèi)存安全等
  • 友好且強(qiáng)大的配置文件支持
  • 支持 API 動(dòng)態(tài)調(diào)整配置(有木有人可以搞個(gè) Dashboard)
  • 支持 HTTP3(QUIC)
  • 支持動(dòng)態(tài)后端,例如連接 Consul、作為 k8s ingress 等
  • 后端多種負(fù)載策略以及健康檢測(cè)
  • 本身 Go 編寫(xiě),高度模塊化的系統(tǒng)方便擴(kuò)展(CoreDNS 基于 Caddy1 開(kāi)發(fā))

基于 Spring Cloud Alibaba + Gateway + Nacos + RocketMQ + Vue & Element 實(shí)現(xiàn)的后臺(tái)管理系統(tǒng) + 用戶(hù)小程序,支持 RBAC 動(dòng)態(tài)權(quán)限、多租戶(hù)、數(shù)據(jù)權(quán)限、工作流、三方登錄、支付、短信、商城等功能

  • 項(xiàng)目地址:https://github.com/YunaiV/yudao-cloud
  • 視頻教程:https://doc.iocoder.cn/video/

安裝

下載地址:https://caddyserver.com/download

Fedora/RHEL/CentOS 8
$dnfinstall'dnf-command(copr)'
$dnfcoprenable@caddy/caddy
$dnfinstallcaddy
MacOS
brewinstallcaddy
RHEL/CentOS 7
$yuminstallyum-plugin-copr
$yumcoprenable@caddy/caddy
$yuminstallcaddy
Debian/Ubuntu/Raspbian
$sudoaptinstall-ydebian-keyringdebian-archive-keyringapt-transport-https
$curl-1sLf'https://dl.cloudsmith.io/public/caddy/stable/gpg.key'|sudotee/etc/apt/trusted.gpg.d/caddy-stable.asc
$curl-1sLf'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt'|sudotee/etc/apt/sources.list.d/caddy-stable.list
$sudoaptupdate
$sudoaptinstallcaddy

安裝完成后,在終端命令行下輸入 caddy :

$caddy

Caddyisanextensibleserverplatform.

usage:
caddy[]

commands:
adaptAdaptsaconfigurationtoCaddy'snativeJSON
build-infoPrintsinformationaboutthisbuild
environPrintstheenvironment
file-serverSpinsupaproduction-readyfileserver
fmtFormatsaCaddyfile
hash-passwordHashesapasswordandwritesbase64
helpShowshelpforaCaddysubcommand
list-modulesListstheinstalledCaddymodules
reloadChangestheconfigoftherunningCaddyinstance
reverse-proxyAquickandproduction-readyreverseproxy
runStartstheCaddyprocessandblocksindefinitely
startStartstheCaddyprocessinthebackgroundandthenreturns
stopGracefullystopsastartedCaddyprocess
trustInstallsaCAcertificateintolocaltruststores
untrustUntrustsalocally-trustedCAcertificate
upgradeUpgradeCaddy(EXPERIMENTAL)
validateTestswhetheraconfigurationfileisvalid
versionPrintstheversion

Use'caddyhelp'formoreinformationaboutacommand.

Fulldocumentationisavailableat:
常用命令
$systemctlstart[stop|restart]caddy//啟動(dòng)服務(wù)
$systemctlreloadcaddy//重新加載配置文件
$systemctlstatuscaddy//查看運(yùn)行狀態(tài)

配置

Caddy2 的配置文件核心采用 json,但是 json 可讀性不強(qiáng),所以官方維護(hù)了一個(gè)轉(zhuǎn)換器,抽象出稱(chēng)之為 Caddyfile 的新配置格式;關(guān)于 Caddyfile 的完整語(yǔ)法請(qǐng)查看官方文檔。文檔地址:https://caddyserver.com/docs/caddyfile

常用配置
站點(diǎn)配置
(site_option){
encodezstdgzip
file_server
handle_errors{
rewrite*/{http.error.status_code}.html
file_server
}
importacme_https
importlog_file
root*/www/{host}
}
多域名配置
地址{
........
}

這個(gè)地址支持以下幾種格式

localhost
example.com
:443
http://example.com
localhost:8080
127.0.0.1
[::1]:2015
example.com/foo/*
*.example.com
http://
全局配置選項(xiàng)
{
#開(kāi)啟所有的調(diào)試輸出
debug
#設(shè)定默認(rèn)的sni
default_snidomain.com
#打開(kāi)或關(guān)閉管理端口
adminoff
}
錯(cuò)誤頁(yè)面跳轉(zhuǎn)
www.mingongge.com{
root*/web/mingongge.com/
file_server
handle_errors{
rewrite*/{http.error.status_code}.html
file_server
}
}
Log 日志
(log_file){
log{
formatlogfmt
outputfile/var/log/caddy/{host}.access.log{
roll_keep7
}
}
}
Header
www.mingongge.com{
root*/web/mingongge.com/
file_server
headerAccess-Control-Allow-Origin*
headerCache-Controlmax-age=3600
header/css/*Cache-Controlmax-age=604800
}
Cache-Control
(cachecontrol){
header/css/*Cache-Controlmax-age=3600
header/img/*Cache-Controlmax-age=3600
header/js/*Cache-Controlmax-age=3600
}

反向代理

https://www.mingongge.com{
gzip
tlsadmin@mingongge.com
proxy/https://welcome.mingongge.com
}
快速創(chuàng)建一個(gè)站點(diǎn)
caddyfile-server--website./index--listen:8088--domainwww.mingongge.com

參數(shù)說(shuō)明

file-server#這是一個(gè)文件服務(wù)器
--website#文件服務(wù)的根目錄
./index#首頁(yè)文件的存儲(chǔ)目錄(如存放index.html)
--listen:8088#定義監(jiān)聽(tīng)端口
--domainwww.mingongge.com#綁定域名
配置片段

Caddyfile 支持類(lèi)似代碼中 function 一樣的配置片段,這些配置片段可以在任意位置被 import,同時(shí)可以接受參數(shù),以下為配置片斷示例:

#括號(hào)內(nèi)為片段名稱(chēng),可以自行定義
(TLS){
protocolstls1.2tls1.3
ciphersTLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256
}

#在任意位置可以引用此片段從而達(dá)到配置復(fù)用
importTLS
配置模塊化

import 指令除了支持引用配置片段以外,還支持引用外部文件,同時(shí)支持通配符,有了這個(gè)命令以后我們就可以方便的將配置文件進(jìn)行模塊化處理:

#引用外部的/etc/caddy/*.caddy
import/etc/caddy/*.caddy

模塊化配置實(shí)例

Caddyfile

Caddyfile 類(lèi)似于 nginx 的 nginx.conf 主配置。

(LOG){
log{
formatformatted"[{ts}]{request>remote_addr}{request>proto}{request>method}<-?{status}?->{request>host}{request>uri}{request>headers>User-Agent>[0]}"{
time_format"iso8601"
}
outputfile"{args.0}"{
roll_size100mb
roll_keep3
roll_keep_for7d
}
}
}

(TLS){
protocolstls1.2tls1.3
ciphersTLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256
}

(HSTS){
header/Strict-Transport-Security"max-age=63072000"
}

(ACME_GANDI){
#從環(huán)境變量獲取GANDI_API_TOKEN
dnsgandi{$GANDI_API_TOKEN}
}

#聚合上面的配置片段為新的片段
(COMMON_CONFIG){
#壓縮支持
encodezstdgzip

#TLS配置
tls{
importTLS
importACME_GANDI
}

#HSTS
importHSTS
}

#開(kāi)啟HTTP3實(shí)驗(yàn)性支持
{
servers:443{
protocol{
experimental_http3
}
}
}

#引入其他具體的站點(diǎn)配置
import/etc/caddy/*.caddy
站點(diǎn)配置
www.mingongge.com{
#重定向到mingongge.com(默認(rèn)302)
redirhttps://mingongge.com{uri}

#日志
importLOG"/data/logs/mingongge.com.log"

#TLS、HSTS、ACME等通用配置
importCOMMON_CONFIG
}

mingongge.com{
#路由
route/*{
reverse_proxymingongge_com:80
}

#日志
importLOG"/data/logs/mingongge.com.log"

#TLS、HSTS、ACME等通用配置
importCOMMON_CONFIG
}

配置完成后,通過(guò) systemctl start caddy 去啟動(dòng) caddy 服務(wù)器。每次配置修改后可以通過(guò) systemctl reload caddy 進(jìn)行配置重載。這些命令的功能與 Nginx 的命令功能基本一樣。

總結(jié)

Caddy 內(nèi)置了豐富的插件,例如 “file_server”、內(nèi)置各種負(fù)載均衡策略等,這些插件組合在一起可以實(shí)現(xiàn)一些復(fù)雜的功能。Caddy 采用 Go 語(yǔ)言編寫(xiě),相比較而言(Nginx 通過(guò) Lua 或者 C 開(kāi)發(fā)插件),對(duì)于后期的開(kāi)發(fā)更容易上手。



審核編輯 :李倩


聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • Web
    Web
    +關(guān)注

    關(guān)注

    2

    文章

    1255

    瀏覽量

    69294
  • 服務(wù)器
    +關(guān)注

    關(guān)注

    12

    文章

    8965

    瀏覽量

    85087
  • nginx
    +關(guān)注

    關(guān)注

    0

    文章

    142

    瀏覽量

    12154

原文標(biāo)題:比 Nginx 性能更強(qiáng)的下一代 Web 服務(wù)器

文章出處:【微信號(hào):芋道源碼,微信公眾號(hào):芋道源碼】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    nginx負(fù)載均衡配置介紹

    目錄 nginx負(fù)載均衡 nginx負(fù)載均衡介紹 反向代理與負(fù)載均衡 nginx負(fù)載均衡配置 Keepalived高可用nginx負(fù)載均衡器 修改W
    的頭像 發(fā)表于 11-10 13:39 ?99次閱讀
    <b class='flag-5'>nginx</b>負(fù)載均衡配置介紹

    意法半導(dǎo)體下一代汽車(chē)微控制的戰(zhàn)略部署

    ???????? 意法半導(dǎo)體致力于幫助汽車(chē)行業(yè)應(yīng)對(duì)電氣化和數(shù)字化的挑戰(zhàn),不僅提供現(xiàn)階段所需的解決方案,未來(lái)還提供更強(qiáng)大的統(tǒng)的MCU平臺(tái)開(kāi)發(fā)戰(zhàn)略,通過(guò)突破性創(chuàng)新支持下一代車(chē)輛架構(gòu)和軟件定義
    的頭像 發(fā)表于 11-07 14:09 ?150次閱讀

    Jtti:美國(guó)VPS開(kāi)啟nginx狀態(tài)監(jiān)控,查看web服務(wù)器的并發(fā)連接數(shù)

    |htaccess|asp|aspx|jsp|asa|mdb)$ { deny all; }location ~ ^/Nginxstatus/ {stub_status on;access_log off;}上面的代碼紅色部分為nginx的監(jiān)控?。 2、重
    的頭像 發(fā)表于 08-26 15:42 ?208次閱讀

    IaaS+on+DPU(IoD)+下一代性能算力底座技術(shù)白皮書(shū)

    大規(guī)模生產(chǎn)環(huán)境落地應(yīng)用的條件。某種程度上,IoD 技術(shù)已成為下一代性能算力底座的核心技術(shù)與最佳實(shí)踐。 白皮書(shū)下載:*附件:IaaS+on+DPU(IoD)+下一代性能算力底座+技
    發(fā)表于 07-24 15:32

    如何使用espconn api實(shí)現(xiàn)個(gè)Web服務(wù)器?

    我正在嘗試使用 espconn api 實(shí)現(xiàn)個(gè) Web 服務(wù)器。 在些請(qǐng)求之后,我收到將此錯(cuò)誤(err1,超過(guò)最大時(shí)間值)寫(xiě)入 uart,下一
    發(fā)表于 07-18 07:46

    如何使用nginx反向代理功能?保姆級(jí)教程!

    關(guān)于nginxnginx是款高性能的開(kāi)源Web服務(wù)器軟件,也可以用于反向代理、負(fù)載均衡等,并且具有高
    的頭像 發(fā)表于 06-21 08:21 ?546次閱讀
    如何使用<b class='flag-5'>nginx</b>反向代理功能?保姆級(jí)教程!

    24芯M16插頭在下一代技術(shù)中的潛力

      德索工程師說(shuō)道隨著科技的飛速發(fā)展,下一代技術(shù)正逐漸展現(xiàn)出其獨(dú)特的魅力和潛力。在這背景下,24芯M16插頭作為種高性能、多功能的連接
    的頭像 發(fā)表于 06-15 18:03 ?275次閱讀
    24芯M16插頭在<b class='flag-5'>下一代</b>技術(shù)中的潛力

    臺(tái)達(dá)推出提高人工智能服務(wù)器和數(shù)據(jù)中心能效的下一代電源解決方案

    臺(tái)達(dá)電子(Delta)是電源與散熱管理解決方案的領(lǐng)導(dǎo)廠(chǎng)商,在IEEE應(yīng)用電力電子會(huì)議暨博覽會(huì)(APEC)2024上,推出了提高人工智能(AI)服務(wù)器和數(shù)據(jù)中心能效的下一代電源解決方案。
    的頭像 發(fā)表于 04-10 15:06 ?906次閱讀

    服務(wù)器操作系統(tǒng)有幾種?

    是致力于加強(qiáng)下一代網(wǎng)絡(luò)、運(yùn)用和web服務(wù)項(xiàng)目的作用而設(shè)計(jì)方案,它對(duì)比 Windows server 2003在Web專(zhuān)用工具、虛擬技術(shù)、安全系數(shù)等層面強(qiáng)過(guò)Windows Server
    發(fā)表于 03-29 16:59

    蘋(píng)果正努力為下一代iPhone搭載更強(qiáng)大的AI技術(shù)

    蘋(píng)果公司正致力于在下一代iPhone上實(shí)現(xiàn)更強(qiáng)大的本地人工智能技術(shù)。近日,蘋(píng)果收購(gòu)了家專(zhuān)注于AI視頻壓縮技術(shù)的初創(chuàng)公司W(wǎng)aveOne,此舉進(jìn)步證明了蘋(píng)果在AI領(lǐng)域的投入和決心。
    的頭像 發(fā)表于 01-25 16:46 ?754次閱讀

    Apache服務(wù)器Nginx服務(wù)器

    Apache和Nginx都是常見(jiàn)的開(kāi)源Web服務(wù)器軟件,它們用于處理HTTP請(qǐng)求并提供網(wǎng)站和應(yīng)用程序的服務(wù)。下面是對(duì)Apache和Nginx
    的頭像 發(fā)表于 01-22 16:48 ?499次閱讀

    什么是web服務(wù)器?如何選擇服務(wù)器配置?

    Web服務(wù)器種軟件或硬件設(shè)備,用于托管和提供網(wǎng)頁(yè)內(nèi)容。它接收客戶(hù)端(如瀏覽)發(fā)送的HTTP請(qǐng)求,并返回相應(yīng)的網(wǎng)頁(yè)內(nèi)容或其他資源,以實(shí)現(xiàn)更高的
    的頭像 發(fā)表于 01-03 15:25 ?1038次閱讀

    Nginx在Windows/docker中的使用

    nginx個(gè)高性能的開(kāi)源反向代理服務(wù)器web 服務(wù)器,
    的頭像 發(fā)表于 01-03 10:20 ?1716次閱讀
    <b class='flag-5'>Nginx</b>在Windows/docker中的使用

    gpu服務(wù)器是干什么的 gpu服務(wù)器與cpu服務(wù)器的區(qū)別

     相比于傳統(tǒng)的CPU服務(wù)器,GPU服務(wù)器支持同時(shí)計(jì)算大量相似的計(jì)算操作,可以實(shí)現(xiàn)更強(qiáng)的并行計(jì)算性能。GPU服務(wù)器通常配備多個(gè)高
    的頭像 發(fā)表于 12-02 17:20 ?1841次閱讀

    物理服務(wù)器對(duì)比云服務(wù)器的優(yōu)缺點(diǎn)

    的選擇。然而,物理服務(wù)器也存在些缺點(diǎn)。例如,因?yàn)橹荒苡邢薜財(cái)U(kuò)展服務(wù)器資源,如果業(yè)務(wù)需求超出最高性能,唯的選擇就是重定位到功能
    的頭像 發(fā)表于 11-22 10:45 ?593次閱讀