超越 Nginx!号称下一代 Web 服务器,用起来够优雅!

2022-12-18 0 963

超越 Nginx!号称下一代 Web 服务器,用起来够优雅! 高度关注JAVA爱家,与一百万开发人员在一同

超越 Nginx!号称下一代 Web 服务器,用起来够优雅!

责任编辑经macrozheng(id:gh_433697c99b25)许可转发

倘若转发请联络原社会公众号

Nginx是这款十分盛行的Web伺服器,在Github上已近16K+Star,他们时常用它来做静态天然资源代销或逆向全权。前段时间辨认出了这款崭新的Web伺服器Caddy,Star数胜过Nginx,标星38K+Star。试玩了呵呵Caddy,辨认出它采用出来比Nginx典雅多了,机能也很强悍,所推荐给我们!

Caddy概要

Caddy是这款采用方便,可扩展性高的Web伺服器,现阶段在Github上已近38K+Star。Caddy选用Go词汇撰写,可用作静态天然资源代销和逆向全权。

超越 Nginx!号称下一代 Web 服务器,用起来够优雅!

Caddy具备如下表所示主要就优点:

对照Nginx繁杂的实用性,其独有的Caddyfile实用性比较简单;能透过其提供更多的Admin API同时实现静态修正实用性;预设全力支持智能化HTTPS实用性,能手动提出申请HTTPS合格证书并展开实用性;能扩展到数以千计的公交站点;能在任一地方性继续执行,没附加的倚赖;选用Go词汇撰写,缓存安全可靠更有确保。

加装

具体来说他们间接在CentOS 8上加装Caddy,采用DNF工具加装无疑是最简单的,Docker安装方式之后也会介绍。

采用如下表所示命令透过DNF工具加装Caddy,加装成功后Caddy会被注册成系统服务;dnf install dnf-command(copr)dnf copr enable

@caddy/caddy

dnf install caddy

采用systemctl status caddy查看Caddy的状态,能辨认出Caddy已被注册为系统服务,但是还没开启。超越 Nginx!号称下一代 Web 服务器,用起来够优雅!

采用

下面他们体验下Caddy的基本采用,对于Web伺服器来说都是常用的操作,你准能用的上!

基本采用

具体来说他们来个Caddy的入门采用,让Caddy运行在2015端口上并返回Hello, world!。

间接采用caddy命令将输出Caddy的常用命令,基本看介绍就知道如何采用了,标出来的是常用命令;超越 Nginx!号称下一代 Web 服务器,用起来够优雅!采用caddy start命令能让Caddy服务在后台运行;超越 Nginx!号称下一代 Web 服务器,用起来够优雅!

Caddy预设采用JSON格式的实用性文件,但由于JOSN格式实用性书写比较麻烦,又提供更多了Caddyfile这种更加简洁的实用性形式,采用如下表所示命令能手动把Caddyfile转化为JSON实用性;caddy adapter

他们能先创建一个名称为Caddyfile的文件,文件内容如下表所示,然后采用caddy adapter将它转换为JSON实用性,再采用caddy reload使实用性生效,该实用性将监听2015端口,并返回Hello, world!;:2015

respond “Hello, world!”然后他们采用curl命令访问localhost:2015,将返回指定的信息;超越 Nginx!号称下一代 Web 服务器,用起来够优雅!

当然他们还能采用Caddy提供更多的Admin API来查看实用性信息,采用如下表所示命令即可;curl localhost:2019/config/

当前JSON实用性如下表所示,如果你间接采用JSON实用性的话需要书写如下表所示实用性,采用Caddyfile确实方便很多!{

 “apps”

: {

  “http”

: {

   “servers”

: {

    “srv0”

: {

     “listen”: [“:2015”

],

     “routes”

: [{

      “handle”

: [{

       “body”“Hello, world!”

,

       “handler”“static_response”

      }]

     }]

    }

   }

  }

 }

}

Caddyfile基本语法

下面案例将采用Caddyfile来展开实用性,他们有必要了解下它的语法,Caddyfile的具体语法规则如下表所示。超越 Nginx!号称下一代 Web 服务器,用起来够优雅!介绍下上图中的关键字,有助于理解。关键字解释采用Global options block伺服器全局实用性可用作实用性是否启用HTTPS和Admin API等Snippet能复用的实用性片段定义好后认能透过import关键字引用Site Block单个网站实用性透过file_server能实用性静态全权,透过reverse_proxy能实用性静态全权Matcher definition匹配定义预设情况下指令会产生全局影响,透过它能指定影响范围Comment注释采用#符号开头Site address网站地址预设采用HTTPS,如需开启HTTP,需要指定http://开头Directive指令指令赋予了Caddy强悍的机能

逆向全权

逆向全权就是当请求访问你的全权伺服器时,全权伺服器会对你的请求展开转发,能转发到静态的天然资源路径上去,也能转发到静态的服务接口上去。下面他们以对域名展开全权为例,来讲讲如何展开静态全权和静态全权。

静态全权

静态全权就是将请求全权到不同的静态天然资源路径上去,这里他们将对docs.macrozheng.com的请求全权到我的文档项目中,对mall.macrozheng.com的请求全权到mall的前端项目中。

具体来说他们修正下本机的host文件:192.168.3.106 docs.macrozheng.com

192.168.3.106 mall.macrozheng.com

然后将他们的文档项目和mall前端项目上传到Caddy的html目录中去,并展开解压操作:超越 Nginx!号称下一代 Web 服务器,用起来够优雅!

修正Caddyfile文件,采用如下表所示实用性,修正完成后采用caddy reload命令刷新实用性;http://docs.macrozheng.com {

root * /mydata/caddy/html/docs

        file_server browse

}

http://mall.macrozheng.com {

root * /mydata/caddy/html/mall

        file_server browse

}

如果你的Caddyfile文件格式不太合格的话,会出现如下表所示警告,间接采用caddy fmt –overwrite格式化并重写实用性即可解决;超越 Nginx!号称下一代 Web 服务器,用起来够优雅!透过docs.macrozheng.com即可访问部署好的文档项目了:超越 Nginx!号称下一代 Web 服务器,用起来够优雅!透过mall.macrozheng.com即可访问到部署好的前端项目了。超越 Nginx!号称下一代 Web 服务器,用起来够优雅!静态全权

静态全权就是把全权伺服器的请求转发到另一个服务上去,这里他们将把对api.macrozheng.com的请求全权到演示环境的API服务上去。

具体来说他们修正下本机的host文件,添加如下表所示规则:192.168.3.106 api.macrozheng.com

修正Caddyfile文件,采用如下表所示实用性,修正完成后采用caddy reload命令刷新实用性;http://api.macrozheng.com {

reverse_proxy http://admin-api.macrozheng.com

}

之后透过api.macrozheng.com/swagger-ui.html即可访问到mall-admin的API文档页面了。超越 Nginx!号称下一代 Web 服务器,用起来够优雅!

文件压缩

如果他们的伺服器带宽比较低,网站访问速度会很慢,这时他们能透过让Caddy开启Gzip压缩来提高网站的访问速度。这里他们以mall的前端项目为例来演示下它的提速效果。

他们需要修正Caddyfile文件,采用encode指令开启Gzip压缩,修正完成后采用caddy reload命令刷新实用性;http://mall.macrozheng.com {

        root * /mydata/caddy/html/mall

        encode {

gzip

        }

        file_server browse

}

有个比较大的JS文件压缩前是1.7M;超越 Nginx!号称下一代 Web 服务器,用起来够优雅!压缩后为544K,访问速度也有很大提示;超越 Nginx!号称下一代 Web 服务器,用起来够优雅!另外他们能看下响应信息,如果有Content-Encoding: gzip这个响应头表明Gzip压缩已经启用了。超越 Nginx!号称下一代 Web 服务器,用起来够优雅!

地址重写

有的时候他们的网站更换了域名,但还有用户在采用老的域名访问,这时能透过Caddy的地址重写机能来让用户跳转到新的域名展开访问。

他们需要修正Caddyfile文件,采用redir指令重写地址,修正完成后采用caddy reload命令刷新实用性;http://docs.macrozheng.com {

redir http://www.macrozheng.com

}

此时访问旧域名docs.macrozheng.com会间接跳转到www.macrozheng.com去。

按目录划分

有时候他们需要采用同一个域名来访问不同的前端项目,这时候就需要透过子目录来区分前端项目了。

比如说他们需要按以下路径来访问各个前端项目;www.macrozheng.com #访问文档项目www.macrozheng.com/admin #访问后台项目www.macrozheng.com/app#访问移动端项目

他们需要修正Caddyfile文件,采用route指令定义路由,修正完成后采用caddy reload命令刷新实用性。http://www.macrozheng.com {

route /admin/* {

                uri strip_prefix /admin

                file_server {

                        root /mydata/caddy/html/admin

                }

        }

        route /app/* {

uri strip_prefix /app

                file_server {

                        root /mydata/caddy/html/app

                }

        }

        file_server * {

                root /mydata/caddy/html/www

}

}

HTTPS

Caddy能手动全力支持HTTPS,无需手动实用性合格证书,这就是之前他们在实用性域名时需要采用http://开头的原因,要想采用Caddy预设的HTTPS机能,按如下表所示步骤操作即可。

具体来说他们需要修正域名的DNS解析,间接在购买域名的网站上设置即可,这里以docs.macrozheng.com域名为例;

之后采用如下表所示命令验证DNS解析记录是否正确,注意实用性的伺服器的80和443端口需要在外网能正常访问;

curl “https://cloudflare-dns.com/dns-query?name=docs.macrozheng.com&type=A”

 \

  -H “accept: application/dns-json”

修正Caddyfile实用性文件,展开如下表所示实用性;docs.macrozheng.com {

        root * /mydata/caddy/html/docs

file_server browse

}

然后采用caddy run命令启动Caddy伺服器即可,是不是十分方便!caddy run

Docker全力支持

当然Caddy也是全力支持采用Docker展开加装采用的,其采用和间接在CentOS上加装基本一致。

具体来说采用如下表所示命令下载Caddy的Docker镜像;docker pull caddy

然后在/mydata/caddy/目录下创建Caddyfile实用性文件,文件内容如下表所示;http://192.168.3.105:80

respond “Hello, world!”

之后采用如下表所示命令启动caddy服务,这里将宿主机上的Caddyfile实用性文件、Caddy的数据目录和网站目录挂载到了容器中;docker run -p 80:80 -p 443:443 –name caddy \

    -v /mydata/caddy/Caddyfile:/etc/caddy/Caddyfile \

-v /mydata/caddy/data:/data \

    -v /mydata/caddy/html:/usr/share/caddy \

    -d caddy

之后采用docker exec进入caddy容器内部继续执行命令;dockerexec

 -it caddy /bin/sh

输入Caddy命令即可操作,之后的操作就和他们间接在CentOS上加装一样了。

总结

今天体验了一把Caddy,其强悍的指令机能,让他们无需多余的实用性即可实现各种机能,采用出来确实十分典雅!尤其是其能手动实用性同时实现HTTPS,十分不错!Nginx能同时实现的机能Caddy基本都能同时实现,我们能对照下之前写的Nginx采用教程,你就会辨认出采用Caddy来同时实现有多么典雅!

参考资料

项目地址:https://github.com/caddyserver/caddy官方文档:https://caddyserver.com/

<END>

程序员专属T恤

商品直购链接 👇

JAVA爱家严选 交易担保 放心买 程序员极客短袖T恤 小程序

  所推荐阅读:

终于!我找到程序员爱穿卫衣的原因了

万字多图,搞懂 Nginx 高性能网络工作原理!这篇Nginx逆向全权技巧,助你准时下班陪女神

看完这篇还不懂Nginx伺服器实用性,那我要哭了~

相关文章

发表评论
暂无评论
官方客服团队

为您解决烦忧 - 24小时在线 专业服务