• 浅谈|WEB 服务器 -- Caddy


    浅谈|WEB 服务器 -- Caddy

    Caddy

    Caddy服务器(或称Caddy Web)是一个开源的,使用 Go 编写,支持 HTTP/2 的 Web 服务端,说到Web 服务器,我们大多想到的是 Apache 和 Nginx,在拥有了强大的 Nginx 以后我们为什么还需要 Caddy?

    官网:https://caddyserver.com

    优点:
    • 自动支持HTTP/2协议
    • 使用 Let’s Encrypt 让你的站点全自动变成全站HTTPS,无需任何配置,当然您可以使用自己的密钥和证书
    • 得益于 Go 的特性,Caddy 只是一个小小的二进制文件,没有依赖,易于部署/使用 配置起来十分简便
    • 可以合理使用多核
    • Caddy 对 WebSockets 有很好的支持
    • 自动把 Markdown 转成 HTML
    • 完全支持最新的IPv6
    • 以自定义格式创建日志
    • 适用于所有已知的平台 - Windows,Linux,BSD,Mac,Android
    缺点:

    要说它的缺点,就是效率不如Apache、Nginx,因此对于以下几种还是十分友好的

    推荐场景:
    • 作为 个人博客的 Server
    • 作为 静态页面的 WebServer
    • 反向代理,管理多个站点
    • 微服务 等等…

    安装

    Caddy 提醒定制化的下载,可以自由选择各种插件和平台,请前往官网: https://caddyserver.com/download 下载

    一、一键脚本安装(非商业版本)1

    curl https://getcaddy.com | bash -s personal

    脚本执行完成后,执行 which caddy,可以看到 caddy 已被安装到了 /usr/local/bin/caddy;caddy -version 查看版本号

    二、手动安装(需要商业许可证)

    • https://caddyserver.com/download 进入到 caddy 官网的下载界面,选择平台和插件
    • 然后使用下方 Direct link to download 内的链接即可
    • 解压之后用 cp 命令放到 /usr/local/bin/caddy 就完成了安装

    运行

    caddy

    输入 caddy,然后打开浏览器输入: http://ip:2015 ,得到了一个404页面,Caddy 已经成功运行了

    (1)、在无配置文件的情况下,Caddy 默认是映射当前程序执行的目录所有文件(即/usr/local/bin),因此可以创建一个文件:

    touch index.html
    
    echo "<h1>Hello Caddy...</h1>" >> index.html

    刷新浏览器, Hello Caddy… 已经出现在页面上

    (2)、默认情况下,Caddy 运行在 2015 端口,可以使用 Caddy 命令行工具来自定义运行端口

    例:改为运行在80端口

    caddy -port 80

    其他帮助:

    caddy -h

    配置文件

    一、Host网站配置

    Caddy 的各种强大功能还得需要 Caddyfile 来体现,Caddy 不强制你把配置文件放到哪个特定文件夹,可以在任意目录放置我们的配置文件,通过命令行 caddy -conf 即可指定

    创建配置文件(本文我们把配置文件放在/usr/local/bin/下)

    touch /usr/local/bin/Caddyfile            #创建配置文件
    chown -R root:www-data /usr/local/bin     #设置目录数据权限

    编辑 /usr/local/bin/Caddyfile 文件

    echo -e ":80 {
    root /usr/local/bin/www
    }" > /usr/local/bin/Caddyfile
    解释
    这是一个最简单的 Host 网站配置
    ‘:80’表示将网站绑定至可以访问到本机的任意一个IP,暴露在80端口,也可以写成 ‘0.0.0.0:80’
    root 参数则表示网站的根节点

    通过 caddy -conf /usr/local/bin/Caddyfile 命令用Caddyfile配置文件方式运行Caddy

    拓展配置
    设置响应过期时间,启用 gzip, 指定各种日志的输出端等等
    echo -e "0.0.0.0:80 {
    root /usr/local/www/
    timeouts none #响应过期时间 none - 不过期 60s - 1分钟过期
    gzip #启用gzip
    log /var/log/caddy/access.log #日志
    errors /var/log/caddy/error.log #错误日志
    }" > /usr/local/bin/Caddyfile

    二、反向代理配置

    echo -e ":80/api {
        proxy / 127.0.0.1:8080/api {
            transparent
        }
    }" > /usr/local/bin/Caddyfile
    解释:
    当浏览器收到所有包含:80/api 的请求都会自动转发到127.0.0.1:8080/api 这个地址
    transparent 这个设置保证了转发不会在浏览器生成任何额外的 301 或者 302 请求

    三、自动HTTPS

    为已经绑定域名的服务器自动从 Let’s Encrypt 生成和下载 HTTPS 证书,支持 HTTPS 协议访问,你只需要将绑定的 IP 换成 域名 即可

    echo -e "xxx.com {
        root /var/www/html/
    }" > /usr/local/bin/Caddyfile

    运行Caddy,按照提示输入你的 Email 之后,Caddy 会自动帮你获取并启用 HTTPS 证书

    Caddy 简单易用、自动 HTTPS ,此外 Caddy 还提供一大堆的插件供我们使用,是一款不错的 Web 服务器


    1. (1)、需要 curl 文件传输工具支持,如果出现 -bash: curl: command not found 请先安装 curl 
      (2)、You must specify a personal or commercial license; see getcaddy.com for instructions. – 您必须指定个人或商业许可证; 有关说明,请参阅 https://getcaddy.com 
      假设有非商业许可证,请使用: 
      curl https://getcaddy.com | bash -s personal 
      或者 
      wget -qO- https://getcaddy.com | bash -s personal 
      您购买了商业许可证,则必须设置您的帐户,环境变量中的ID和API密钥: 
      export CADDY_ACCOUNT_ID = ... 
      export CADDY_API_KEY = ... 
      然后使用: 
      curl https://getcaddy.com | bash -s commercial 
  • 相关阅读:
    boost-1.53源代码编译
    Hive分析窗体函数之NTILE,ROW_NUMBER,RANK和DENSE_RANK
    外接圆、内切圆半径公式及相应关系知识点总结
    最小生成树之Prim算法
    JavaScript实现简单图片滚动 --9张图告诉你,C罗欲哭无泪
    Scala入门到精通——第二十七节 Scala操纵XML
    第二十一篇:基​于​W​D​M​模​型​的​A​V​S​t​r​e​a​m​驱​动​架​构​研​究
    oracle表空间查询维护命令大全之中的一个(数据表空间)史上最全
    项目流程管理&amp;&amp;架构总结
    AIX常用命令略记
  • 原文地址:https://www.cnblogs.com/jinanxiaolaohu/p/10064219.html
Copyright © 2020-2023  润新知