目录
Caddy简介
Caddy具有如下主要特性:
安装
使用
基本使用
Caddyfile基本语法
反向代理
静态代理
动态代理
文件压缩
地址重写
按目录划分
HTTPS
Docker支持
首页 运维 nginx Nginx的Web服务器caddy怎么使用

Nginx的Web服务器caddy怎么使用

May 30, 2023 pm 12:19 PM
web nginx caddy

    Caddy简介

    Caddy是一款功能强大、高度可扩展的Web服务器,目前已经获得了38K Star的GitHub关注。Caddy采用Go语言编写,可用于静态资源托管和反向代理。

    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怎么使用

    使用

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

    基本使用

    让我们先尝试使用Caddy进行入门,指定Caddy运行在2015端口,并返回“Hello, world!”信息。

    直接使用caddy命令将输出Caddy的常用命令,基本看介绍就知道如何使用了,标出来的是常用命令;

    Nginx的Web服务器caddy怎么使用

    使用caddy start命令可以让Caddy服务在后台运行;

    Nginx的Web服务器caddy怎么使用

    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怎么使用

    当然我们还可以使用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服务器caddy怎么使用

    介绍下上图中的关键字,有助于理解。

    关键字解释使用
    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服务器caddy怎么使用

    修改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服务器caddy怎么使用

    通过docs.macrozheng.com即可访问部署好的文档项目了:

    Nginx的Web服务器caddy怎么使用

    通过mall.macrozheng.com即可访问到部署好的前端项目了。

    Nginx的Web服务器caddy怎么使用

    动态代理

    动态代理就是把代理服务器的请求转发到另一个服务上去,这里我们将把对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怎么使用

    文件压缩

    如果我们的服务器带宽比较低,网站访问速度会很慢,这时我们可以通过让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服务器caddy怎么使用

    压缩后为544K,访问速度也有很大提示;

    Nginx的Web服务器caddy怎么使用

    另外我们可以看下响应信息,如果有Content-Encoding: gzip这个响应头表明Gzip压缩已经启用了。

    Nginx的Web服务器caddy怎么使用

    地址重写

    有的时候我们的网站更换了域名,但还有用户在使用老的域名访问,这时可以通过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容器内部执行命令;

    docker exec -it caddy /bin/sh
    登录后复制

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

    Nginx的Web服务器caddy怎么使用

    以上是Nginx的Web服务器caddy怎么使用的详细内容。更多信息请关注PHP中文网其他相关文章!

    本站声明
    本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

    热AI工具

    Undresser.AI Undress

    Undresser.AI Undress

    人工智能驱动的应用程序,用于创建逼真的裸体照片

    AI Clothes Remover

    AI Clothes Remover

    用于从照片中去除衣服的在线人工智能工具。

    Undress AI Tool

    Undress AI Tool

    免费脱衣服图片

    Clothoff.io

    Clothoff.io

    AI脱衣机

    AI Hentai Generator

    AI Hentai Generator

    免费生成ai无尽的。

    热门文章

    R.E.P.O.能量晶体解释及其做什么(黄色晶体)
    3 周前 By 尊渡假赌尊渡假赌尊渡假赌
    R.E.P.O.最佳图形设置
    3 周前 By 尊渡假赌尊渡假赌尊渡假赌
    R.E.P.O.如果您听不到任何人,如何修复音频
    3 周前 By 尊渡假赌尊渡假赌尊渡假赌
    WWE 2K25:如何解锁Myrise中的所有内容
    4 周前 By 尊渡假赌尊渡假赌尊渡假赌

    热工具

    记事本++7.3.1

    记事本++7.3.1

    好用且免费的代码编辑器

    SublimeText3汉化版

    SublimeText3汉化版

    中文版,非常好用

    禅工作室 13.0.1

    禅工作室 13.0.1

    功能强大的PHP集成开发环境

    Dreamweaver CS6

    Dreamweaver CS6

    视觉化网页开发工具

    SublimeText3 Mac版

    SublimeText3 Mac版

    神级代码编辑软件(SublimeText3)

    tomcat服务器怎么让外网访问 tomcat服务器怎么让外网访问 Apr 21, 2024 am 07:22 AM

    要让 Tomcat 服务器对外网访问,需要:修改 Tomcat 配置文件,允许外部连接。添加防火墙规则,允许访问 Tomcat 服务器端口。创建 DNS 记录,将域名指向 Tomcat 服务器公有 IP。可选:使用反向代理提升安全性和性能。可选:设置 HTTPS 以提高安全性。

    Welcome to nginx!怎么解决? Welcome to nginx!怎么解决? Apr 17, 2024 am 05:12 AM

    要解决 "Welcome to nginx!" 错误,需要检查虚拟主机配置,启用虚拟主机,重新加载 Nginx,如果无法找到虚拟主机配置文件,则创建默认页面并重新加载 Nginx,这样错误消息将消失,网站将正常显示。

    html文件怎么生成网址 html文件怎么生成网址 Apr 21, 2024 pm 12:57 PM

    要将 HTML 文件转换为网址,需要使用网络服务器,包括以下步骤:获取网络服务器。设置网络服务器。上传 HTML 文件。创建域名。路由请求。

    nodejs项目怎么部署到服务器 nodejs项目怎么部署到服务器 Apr 21, 2024 am 04:40 AM

    Node.js 项目的服务器部署步骤:准备部署环境:获取服务器访问权限、安装 Node.js、设置 Git 存储库。构建应用程序:使用 npm run build 生成可部署代码和依赖项。上传代码到服务器:通过 Git 或文件传输协议。安装依赖项:SSH 登录服务器并使用 npm install 安装应用程序依赖项。启动应用程序:使用 node index.js 等命令启动应用程序,或使用 pm2 等进程管理器。配置反向代理(可选):使用 Nginx 或 Apache 等反向代理路由流量到应用程

    nodejs可以外网访问么 nodejs可以外网访问么 Apr 21, 2024 am 04:43 AM

    是的,Node.js 可以外网访问。您可以使用以下方法:使用 Cloud Functions 部署函数并公开访问。使用 Express 框架创建路由并定义端点。使用 Nginx 反向代理请求到 Node.js 应用程序。使用 Docker 容器运行 Node.js 应用程序并通过端口映射公开。

    如何使用 PHP 部署和维护网站 如何使用 PHP 部署和维护网站 May 03, 2024 am 08:54 AM

    要成功部署和维护PHP网站,需要执行以下步骤:选择Web服务器(如Apache或Nginx)安装PHP创建数据库并连接PHP上传代码到服务器设置域名和DNS监控网站维护步骤包括更新PHP和Web服务器、备份网站、监控错误日志和更新内容。

    如何使用 Fail2Ban 保护服务器免受暴力攻击 如何使用 Fail2Ban 保护服务器免受暴力攻击 Apr 27, 2024 am 08:34 AM

    Linux管理员的一个重要任务是保护服务器免受非法攻击或访问。默认情况下,Linux系统带有配置良好的防火墙,比如iptables、UncomplicatedFirewall(UFW),ConfigServerSecurityFirewall(CSF)等,可以防止多种攻击。任何连接到互联网的机器都是恶意攻击的潜在目标。有一个名为Fail2Ban的工具可用来缓解服务器上的非法访问。什么是Fail2Ban?Fail2Ban[1]是一款入侵防御软件,可以保护服务器免受暴力攻击。它是用Python编程语

    和我一起来学习Linux安装Nginx 和我一起来学习Linux安装Nginx Apr 28, 2024 pm 03:10 PM

    而今天将来一起带领大家在Linux环境安装Nginx,这里用的Linux系统是CentOS7.2.准备安装工具1.从Nginx官网下载Nginx。这里用的版本为:1.13.6.2.将下载下来的Nginx上传到Linux上,这里以/opt/nginx目录为例。运行“tar-zxvfnginx-1.13.6.tar.gz”进行解压。3.切换到/opt/nginx/nginx-1.13.6目录下,运行./configure进行初始化配置。如出现下面的提示,说明该机器没有安装PCRE,而Nginx需要依

    See all articles