Caddy Server 是一个模块化的现代Web服务器平台,支持自动HTTPS证书,QUIC和HTTP/2,Zstd和Brotli压缩,以及各种现代功能以及经典的Web服务器功能,如可配置的虚拟主机,URL重写和重定向,反向复制等。
本文介绍了如何将PHP与Caddy Web服务器版本2系列集成,以及高级配置。它还将类似的配置与Apache和Nginx配置进行了比较,以简化从Apache和Nginx到Caddy的迁移。
Caddy
安装
官方安装文档:https://caddyserver.com/docs/install
sudo apt install -y debian-keyring debian-archive-keyring apt-transport-https curl
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | sudo gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' | sudo tee /etc/apt/sources.list.d/caddy-stable.list
sudo apt update
sudo apt install caddy
确认服务已启动
服务命令
systemctl start caddy caddy start caddy run # Starts server and blocks indefinitely
systemctl stop caddy
caddy stopsystemctl reload caddy
caddy reload
systemctl restart caddy
caddy stop && caddy start
启动Caddy服务并使其在系统引导时自动启动
sudo systemctl daemon-reload
sudo systemctl start caddy.service
sudo systemctl enable caddy.service
配置
Caddy可以在许多操作系统和基于Linux的发行版上使用。Caddy文档解释了如何安装Caddy,并将其配置为随服务器启动自动运行的服务/守护程序。
Caddy Server配备了安全和高性能的默认配置,这使得它很容易配置最小的配置。
当Caddy安装并配置为系统服务时,默认的 /etc/caddy/Caddyfile
可以用作全局配置文件,并使用建议名称 /etc/caddy/conf
的子目录来包含各个站点的配置文件,类似于Apache和Nginx配置。
/etc/caddy
├── Caddyfile
└── conf/
└── caddy.tinywan.com.conf
主次配置调整
主配置:
/etc/caddy/Caddyfile
{
log default {
format console
output file /var/log/caddy/system.log
exclude http.log.access
}
}
import conf/*
次配置目录:
/etc/caddy/Caddyfile/conf
。以后就可以在这个目录下新增多个站点配置了,是不是和Nginx看起来一样喽!
例如:caddy.tinywan.com.conf
caddy.tinywan.com {
# Set this path to your site's directory.
root * /home/www/website/caddy# Enable the static file server. file_server
}
应用
静态网站托管
配置文件
caddy.tinywan.com {
# Set this path to your site's directory.
root * /home/www/website/caddy# Enable the static file server. file_server
}
访问域名:https://caddy.tinywan.com/
官方默认页面
自定义页面
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>开源技术小栈Caddy2</title>
</head>
<body>
<h1>2024 开源技术小栈Caddy2入门教程,专注于互联网技术分享</h1>
</body>
</html>
反向代理
proxy-caddy.tinywan.com {
reverse_proxy localhost:6140
}
HTTP 重定向添加 www. 子域名
tinywan.com {
redir https://www.{host}{uri}
}www.tinywan.com {
# Set this path to your site's directory.
root * /home/www/website/full-stack/dist# Enable the static file server. file_server
}
访问域名
tinywan.com
会被重定向到https://www.tinywan.com/
PHP-FPM 集成
与Apache Web服务器和Nginx与PHP集成的方式类似,Caddy也使用Caddy的FastCGI反向代理与PHP集成。
其基本思想是,当Caddy接收到一个应该用PHP处理的请求(例如,一个对带有 .php
扩展名的文件名的请求)时,请求被发送到PHP-FPM
,在那里执行PHP应用程序,响应被发送回Caddy以返回给用户。
异常 502 Bad Gateway 错误日志
2024/02/02 09:42:36.814 ERROR http.log.error dialing backend: dial unix /var/run/php8.0.7-fpm.sock: connect: permission denied
修改用户组
sudo vim /lib/systemd/system/caddy.service
修改前
User=caddy
Group=caddy
修改后
User=www
Group=www
完整配置
caddy-php.tinywan.com {
# Resolve the root directory for the app root * /home/www/website/demo/public # Allow caddy to serve static files file_server # Encode responses in zstd or gzip, depending on the # availability indicated by the browser. encode gzip # Configures multiple PHP-related settings php_fastcgi unix//var/run/php8.0.7-fpm.sock
}
目录
/home/www/website/demo/public
新建文件index.php
<?php
echo "Hello 开源技术小栈";
访问地址:https://caddy-php.tinywan.com/,该域名需要提前解析好哦!