百度360必应搜狗淘宝本站头条
当前位置:网站首页 > IT技术 > 正文

Caddy简单使用

wptr33 2025-01-07 16:17 57 浏览

环境:CentOS 7系统

Caddy官网:https://caddyserver.com/

1、安装

1.1、方式1:下载预编译的文件

# 1、下载
wget https://github.com/caddyserver/caddy/releases/download/v2.8.4/caddy_2.8.4_linux_amd64.tar.gz
 
# 2、解压
tar -xf caddy_2.8.4_linux_amd64.tar.gz
 
# 3、移动文件到/usr/local/bin/
mv caddy /usr/local/bin/
 
# 4、查看版本
caddy version
 
# 5、命令帮助
# 启动:caddy start 或者 caddy run
# 重启:caddy reload
# 停止:caddy stop
caddy
 
# 6、启动
# 6.1、前台运行
caddy run
 
# 或者
# 6.2、后台运行
# caddy start --config caddy.json
# caddy run --config nginx.conf --adapter nginx
# caddy run --config caddy.file --adapter caddyfile
caddy start

1.2、方式2:使用源码编译安装

安装go:

# 1、下载
# 下载地址:https://go.dev/dl/
wget https://go.dev/dl/go1.23.3.linux-amd64.tar.gz
 
# 2、解压
tar -xf go1.23.3.linux-amd64.tar.gz -C /usr/local/
 
# 3、添加环境变量
# 添加到环境变量,编辑/root/.bash_profile文件,内容如下: 
GO_PATH=/usr/local/go/bin
PATH=$PATH:$HOME/bin:$GO_PATH
export PATH
 
# 4、使环境变量生效
source /root/.bash_profile
 
# 5、查看版本
go version
 
# 6、配置goproxy
go env -w GOPROXY=https://goproxy.cn,direct

安装Caddy:

# 1、下载
git clone "https://github.com/caddyserver/caddy.git"
 
# 2、切换目录
cd caddy/cmd/caddy/
 
# 3、构建
go build
 
# 4、复制文件到/usr/local/bin/
cp caddy /usr/local/bin/
 
# 5、其他
caddy
 
# 6、启动
# 6.1、前台运行
caddy run
 
# 或者
# 6.2、后台运行
# caddy start --config caddy.json
# caddy run --config nginx.conf --adapter nginx
# caddy run --config caddy.file --adapter caddyfile
caddy start

2、命令说明

# 命令
caddy
 
# 显示内容如下
 
Caddy is an extensible server platform written in Go.
 
At its core, Caddy merely manages configuration. Modules are plugged
in statically at compile-time to provide useful functionality. Caddy's
standard distribution includes common modules to serve HTTP, TLS,
and PKI applications, including the automation of certificates.
To run Caddy, use:
	- 'caddy run' to run Caddy in the foreground (recommended).
	- 'caddy start' to start Caddy in the background; only do this
	  if you will be keeping the terminal window open until you run
	  'caddy stop' to close the server.
When Caddy is started, it opens a locally-bound administrative socket
to which configuration can be POSTed via a restful HTTP API (see
https://caddyserver.com/docs/api).
Caddy's native configuration format is JSON. However, config adapters
can be used to convert other config formats to JSON when Caddy receives
its configuration. The Caddyfile is a built-in config adapter that is
popular for hand-written configurations due to its straightforward
syntax (see https://caddyserver.com/docs/caddyfile). Many third-party
adapters are available (see https://caddyserver.com/docs/config-adapters).
Use 'caddy adapt' to see how a config translates to JSON.
 
For convenience, the CLI can act as an HTTP client to give Caddy its
initial configuration for you. If a file named Caddyfile is in the
current working directory, it will do this automatically. Otherwise,
you can use the --config flag to specify the path to a config file.
 
Some special-purpose subcommands build and load a configuration file
for you directly from command line input; for example:
 
	- caddy file-server
	- caddy reverse-proxy
	- caddy respond
 
These commands disable the administration endpoint because their
configuration is specified solely on the command line.
 
In general, the most common way to run Caddy is simply:
 
	$ caddy run
 
Or, with a configuration file:
 
	$ caddy run --config caddy.json
 
If running interactively in a terminal, running Caddy in the
background may be more convenient:
 
	$ caddy start
	...
	$ caddy stop
 
This allows you to run other commands while Caddy stays running.
Be sure to stop Caddy before you close the terminal!
 
Depending on the system, Caddy may need permission to bind to low
ports. One way to do this on Linux is to use setcap:
 
	$ sudo setcap cap_net_bind_service=+ep $(which caddy)
 
Remember to run that command again after replacing the binary.
 
See the Caddy website for tutorials, configuration structure,
syntax, and module documentation: https://caddyserver.com/docs/
 
Custom Caddy builds are available on the Caddy download page at:
https://caddyserver.com/download
 
The xcaddy command can be used to build Caddy from source with or
without additional plugins: https://github.com/caddyserver/xcaddy
 
Where possible, Caddy should be installed using officially-supported
package installers: https://caddyserver.com/docs/install
 
Instructions for running Caddy in production are also available:
https://caddyserver.com/docs/running
 
Usage:
  caddy [command]
 
Examples:
  $ caddy run
  $ caddy run --config caddy.json
  $ caddy reload --config caddy.json
  $ caddy stop
 
Available Commands:
  adapt          Adapts a configuration to Caddy's native JSON
  add-package    Adds Caddy packages (EXPERIMENTAL)
  build-info     Prints information about this build
  completion     Generate completion script
  environ        Prints the environment
  file-server    Spins up a production-ready file server
  fmt            Formats a Caddyfile
  hash-password  Hashes a password and writes base64
  help           Help about any command
  list-modules   Lists the installed Caddy modules
  manpage        Generates the manual pages for Caddy commands
  reload         Changes the config of the running Caddy instance
  remove-package Removes Caddy packages (EXPERIMENTAL)
  respond        Simple, hard-coded HTTP responses for development and testing
  reverse-proxy  A quick and production-ready reverse proxy
  run            Starts the Caddy process and blocks indefinitely
  start          Starts the Caddy process in the background and then returns
  stop           Gracefully stops a started Caddy process
  storage        Commands for working with Caddy's storage (EXPERIMENTAL)
  trust          Installs a CA certificate into local trust stores
  untrust        Untrusts a locally-trusted CA certificate
  upgrade        Upgrade Caddy (EXPERIMENTAL)
  validate       Tests whether a configuration file is valid
  version        Prints the version
 
Flags:
  -h, --help      help for caddy
  -v, --version   version for caddy
 
Use "caddy [command] --help" for more information about a command.
 
Full documentation is available at:
https://caddyserver.com/docs/command-line

3、配置

3.1、方式1:命令行

详见:https://caddyserver.com/docs/command-line

caddy file-server(静态文件服务器):

# 参考:https://caddyserver.com/docs/command-line#caddy-file-server
 
# 命令
caddy file-server
	[-r, --root <path>]
	[--listen <addr>]
	[-d, --domain <example.com>]
	[-b, --browse]
	[--reveal-symlinks]
	[-t, --templates]
	[--access-log]
	[-v, --debug]
	[--no-compress]
	[-p, --precompressed]
 
# 示例
caddy file-server -r /usr/local/nginx/html -b

caddy respond(http服务器):

# 参考:https://caddyserver.com/docs/command-line#caddy-respond
 
# 命令
caddy respond
	[-s, --status <code>]
	[-H, --header "<Field>: <value>"]
	[-b, --body <content>]
	[-l, --listen <addr>]
	[-v, --debug]
	[--access-log]
	[<status|body>]
 
# 示例
caddy respond --listen :2000-2004 "I'm server {{.N}} on port {{.Port}}"

caddy reverse-proxy(http反向代理):

# 参考:https://caddyserver.com/docs/command-line#caddy-reverse-proxy
 
# 命令
caddy reverse-proxy
	[-f, --from <addr>]
	(-t, --to <addr>)
	[-H, --header-up "<Field>: <value>"]
	[-d, --header-down "<Field>: <value>"]
	[-c, --change-host-header]
	[-r, --disable-redirects]
	[-i, --internal-certs]
	[-v, --debug]
	[--access-log]
	[--insecure]
 
# 示例
# ----------from----------:
caddy respond --listen :2024 "I'm server {{.N}} on port {{.Port}}"
 
# ----------to----------:
# 当前浏览器访问8080端口,反向代理到2024端口
caddy reverse-proxy -t :2024 -f :8080

3.2、方式2:JSON文件

详见:https://caddyserver.com/docs/json/

1)编写caddy.json文件

{
	"apps": {
		"http": {
			"servers": {
				"example": {
					"listen": [":2015"],
					"routes": [
						{
							"handle": [{
								"handler": "static_response",
								"body": "Hello, world!"
							}]
						}
					]
				}
			}
		}
	}
}

2)加载配置

# 参考:https://caddyserver.com/docs/getting-started
 
# 1、上传文件
curl localhost:2019/load -H "Content-Type: application/json" -d @caddy.json
 
# 2、查看配置
curl localhost:2019/config/

3)访问站点

curl localhost:2015

3.3、方式3:Caddyfile文件

详见:https://caddyserver.com/docs/quick-starts/caddyfile

1)编写Caddyfile文件

:5566 {
	# 指定root为nginx的html目录
	root * /usr/local/nginx/html
	file_server
 
	log {
		output file /var/log/access.log
	}
 
	handle /halo/ {
		respond "hello world"
	}
 
	handle_path /local-nginx/* {
		# 代理本地nginx服务
		reverse_proxy localhost
	}
 
	handle_path /local-php/* {
		# 访问php项目
		root * /usr/local/nginx/html
		php_fastcgi localhost:9000
		file_server
	}
 
	handle /jump-csdn/ {
		# 重定向
		redir http://www.csdn.net/
	}
 
	handle_path /proxy-csdn/* {
		# 反向代理
		reverse_proxy https://www.csdn.net
	}
}
 
:6060 {
	reverse_proxy localhost
}
 
:7070 {
	redir http://www.baidu.com
}

2)加载配置

方式1:使用caddy start启动时,同时加载配置的情况

# 1、启动并加载配置
caddy start --config Caddyfile --adapter caddyfile
 
# 2、查看配置
curl localhost:2019/config/

注:如果不确定是否已启动caddy服务,使用ps aux | grep caddy命令查看。如果存在,使用caddy stop命令或者使用kill 进程id来停止服务。

方式2:caddy服务已经启动,使用curl命令上传文件的情况

# 参考:https://caddyserver.com/docs/quick-starts/caddyfile
 
# 1、上传文件
curl localhost:2019/load -H "Content-Type: text/caddyfile" --data-binary @Caddyfile
 
# 2、重启
caddy reload
 
# 3、查看配置
curl localhost:2019/config/

方式3:caddy服务已经启动,使用caddy adapt加载配置的情况

# 参考:https://caddyserver.com/docs/getting-started
 
# 1、加载配置
# 假设Caddyfile文件在/path/to目录下
# caddy adapt --config /path/to/Caddyfile
# 如果caddy adapt命令不指定--config参数,默认加载当前路径下的Caddyfile文件
caddy adapt
 
# 2、重启
caddy reload
 
# 3、查看配置
curl localhost:2019/config/

3)访问站点

# 浏览器访问以下地址:
# 其中:localhost替换成当前的 ip 或 域名
# localhost:5566/
# localhost:5566/halo/
# localhost:5566/local-nginx/
# localhost:5566/local-php/
# localhost:5566/jump-csdn/
# localhost:5566/proxy-csdn/
# localhost:6060/
# localhost:7070/

3.4、方式4:Nginx文件

详见:https://caddyserver.com/docs/config-adapters

1)安装xcaddy

# 参考:https://github.com/caddyserver/xcaddy#install
 
# 1、下载
wget https://github.com/caddyserver/xcaddy/releases/download/v0.4.4/xcaddy_0.4.4_linux_amd64.tar.gz
 
# 2、解压
tar -xf xcaddy_0.4.4_linux_amd64.tar.gz
 
# 3、移动文件到/usr/local/bin/
mv xcaddy /usr/local/bin/
 
# 4、查看版本
xcaddy version

2)安装nginx-adapter

# 参考:https://github.com/caddyserver/nginx-adapter
 
# 1、安装
xcaddy build --with github.com/caddyserver/nginx-adapter
 
# 2、移动文件到/usr/local/bin/
mv caddy /usr/local/bin/

3)编写Nginx配置文件

# 相关文档:
# https://github.com/caddyserver/nginx-adapter/
# https://github.com/caddyserver/nginx-adapter/blob/master/testdata/example1.conf
# https://github.com/caddyserver/nginx-adapter/blob/master/testdata/example2.conf
 
# 以下为nginx.conf配置内容:
 
http {
  server {
    listen 8080;
    location / {
      proxy_pass http://127.0.0.1:2024;
    }
  }
}

其中2024端口:

# 执行命令
caddy respond --listen :2024 "I'm server {{.N}} on port {{.Port}}"

4)检查配置文件

caddy validate -c nginx.conf -a nginx

5)加载配置

# 方式1:启动并加载配置
# caddy run --config nginx.conf --adapter nginx
# caddy start --config nginx.conf --adapter nginx
 
caddy start --config nginx.conf --adapter nginx
 
# 或者
# 方式2:caddy服务已经启动,使用curl命令上传文件
# 2.1、上传文件:
# curl localhost:2019/load -H "Content-Type: text/nginx" --data-binary @nginx.conf
# 2.2、重启:
# caddy reload
# 2.3、查看配置
# curl localhost:2019/config/ 

6)访问站点

# 浏览器访问以下地址:
# 其中:localhost替换成当前的 ip 或 域名
# localhost:8080/

4、参考

  • https://caddyserver.com/
  • https://caddyserver.com/docs/getting-started
  • https://github.com/caddyserver/caddy/tree/master/caddytest/integration/caddyfile_adapt

相关推荐

[常用工具] git基础学习笔记_git工具有哪些

添加推送信息,-m=messagegitcommit-m“添加注释”查看状态...

centos7安装部署gitlab_centos7安装git服务器

一、Gitlab介1.1gitlab信息GitLab是利用RubyonRails一个开源的版本管理系统,实现一个自托管的Git项目仓库,可通过Web界面进行访问公开的或者私人项目。...

太高效了!玩了这么久的Linux,居然不知道这7个终端快捷键

作为Linux用户,大家肯定在Linux终端下敲过无数的命令。有的命令很短,比如:ls、cd、pwd之类,这种命令大家毫无压力。但是,有些命令就比较长了,比如:...

提高开发速度还能保证质量的10个小窍门

养成坏习惯真是分分钟的事儿,而养成好习惯却很难。我发现,把那些对我有用的习惯写下来,能让我坚持住已经花心思养成的好习惯。...

版本管理最好用的工具,你懂多少?

版本控制(Revisioncontrol)是一种在开发的过程中用于管理我们对文件、目录或工程等内容的修改历史,方便查看更改历史记录,备份以便恢复以前的版本的软件工程技术。...

Git回退到某个版本_git回退到某个版本详细步骤

在开发过程,有时会遇到合并代码或者合并主分支代码导致自己分支代码冲突等问题,这时我们需要回退到某个commit_id版本1,查看所有历史版本,获取git的某个历史版本id...

Kubernetes + Jenkins + Harbor 全景实战手册

Kubernetes+Jenkins+Harbor全景实战手册在现代企业级DevOps体系中,Kubernetes(K8s)、Jenkins和Harbor组成的CI/CD流水...

git常用命令整理_git常见命令

一、Git仓库完整迁移完整迁移,就是指,不仅将所有代码移植到新的仓库,而且要保留所有的commit记录1.随便找个文件夹,从原地址克隆一份裸版本库...

第三章:Git分支管理(多人协作基础)

3.1分支基本概念分支是Git最强大的功能之一,它允许你在主线之外创建独立的开发线路,互不干扰。理解分支的工作原理是掌握Git的关键。核心概念:HEAD:指向当前分支的指针...

云效Codeup怎么创建分支并进行分支管理

云效Codeup怎么创建分支并进行分支管理,分支是为了将修改记录分叉备份保存,不受其他分支的影响,所以在同一个代码库里可以同时进行多个修改。创建仓库时,会自动创建Master分支作为默认分支,后续...

git 如何删除本地和远程分支?_git怎么删除远程仓库

Git分支对于开发人员来说是一项强大的功能,但要维护干净的存储库,就需要知道如何删除过时的分支。本指南涵盖了您需要了解的有关本地和远程删除Git分支的所有信息。了解Git分支...

git 实现一份代码push到两个git地址上

一直以来想把自己的博客代码托管到github和coding上想一次更改一次push两个地址一起更新今天有空查资料实践了下本博客的github地址coding的git地址如果是Gi...

git操作:cherry-pick和rebase_git cherry-pick bad object

在编码中经常涉及到分支之间的代码同步问题,那就需要cherry-pick和rebase命令问题:如何将某个分支的多个commit合并到另一个分支,并在另一个分支只保留一个commit记录解答:假设有两...

模型文件硬塞进 Git,GitHub 直接打回原形:使用Git-LFS管理大文件

前言最近接手了一个计算机视觉项目代码是屎山就不说了,反正我也不看代码主要就是构建一下docker镜像,测试一下部署的兼容性这本来不难但是,国内服务器的网络环境实在是恶劣,需要配置各种镜像(dock...

防弹少年团田柾国《Euphoria》2周年 获世界实时趋势榜1位 恭喜呀

当天韩国时间凌晨3时左右,该曲在Twitter上以“2YearsWithEuphoria”的HashTag登上了世界趋势1位。在韩国推特实时趋势中,从上午开始到现在“Euphoria2岁”的Has...