前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >如何在PHP中使用 Caddy2 协同服务

如何在PHP中使用 Caddy2 协同服务

作者头像
Tinywan
发布2024-02-21 16:03:12
2750
发布2024-02-21 16:03:12
举报
文章被收录于专栏:开源技术小栈

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

代码语言:javascript
复制
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

确认服务已启动

服务命令

代码语言:javascript
复制
systemctl start caddy
caddy start
caddy run # Starts server and blocks indefinitely

systemctl stop caddy
caddy stop

systemctl reload caddy
caddy reload

systemctl restart caddy
caddy stop && caddy start

启动Caddy服务并使其在系统引导时自动启动

代码语言:javascript
复制
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配置。

代码语言:javascript
复制
/etc/caddy
  ├── Caddyfile
  └── conf/
        └── caddy.tinywan.com.conf

主次配置调整

主配置/etc/caddy/Caddyfile

代码语言:javascript
复制
{
    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

代码语言:javascript
复制
caddy.tinywan.com {
    # Set this path to your site's directory.
    root * /home/www/website/caddy

    # Enable the static file server.
    file_server
}

应用

静态网站托管

配置文件
代码语言:javascript
复制
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/

官方默认页面

自定义页面

代码语言:javascript
复制
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>开源技术小栈Caddy2</title>
</head>
<body>
<h1>2024 开源技术小栈Caddy2入门教程,专注于互联网技术分享</h1>
</body>
</html>

反向代理

代码语言:javascript
复制
proxy-caddy.tinywan.com {
  reverse_proxy localhost:6140
}

HTTP 重定向添加 www. 子域名

代码语言:javascript
复制
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 错误日志

代码语言:javascript
复制
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 

修改用户组

代码语言:javascript
复制
sudo vim /lib/systemd/system/caddy.service

修改前

代码语言:javascript
复制
User=caddy
Group=caddy

修改后

代码语言:javascript
复制
User=www
Group=www

完整配置

代码语言:javascript
复制
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

代码语言:javascript
复制
<?php
echo "Hello 开源技术小栈";

访问地址:https://caddy-php.tinywan.com/,该域名需要提前解析好哦!

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-02-03,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 开源技术小栈 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Caddy
    • 安装
      • 确认服务已启动
      • 服务命令
    • 配置
      • 主次配置调整
        • 应用
          • 静态网站托管
          • 反向代理
          • HTTP 重定向添加 www. 子域名
          • PHP-FPM 集成
      相关产品与服务
      云服务器
      云服务器(Cloud Virtual Machine,CVM)提供安全可靠的弹性计算服务。 您可以实时扩展或缩减计算资源,适应变化的业务需求,并只需按实际使用的资源计费。使用 CVM 可以极大降低您的软硬件采购成本,简化 IT 运维工作。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档