Kaddy:自动HTTPS 反向代理、重定向、静态页面教程软件Server

savh 246

简介

Caddy 是一个免费开源、易于使用的 Web 服务器软件,通过简单的配置,就可以让用户轻松地在电脑上搭建网站。其特点在于配置简单、易于上手:

快速: Caddy 使用 Go 语言编写,以高性能著称。
安全: Caddy 支持 HTTPS、自动证书生成、HTTP/2 等安全功能。
易用: Caddy 的配置文件简单易懂,易于配置。
功能丰富: Caddy 支持多种功能,包括反向代理、负载均衡、缓存、日志记录等。
Caddy 可以用于各种场景,包括:
托管静态网站
托管 Web 应用
作为反向代理
作为负载均衡器
Caddy 可以运行在各种操作系统上,包括 Linux、Windows、macOS 等。

Caddy 的优势:

快速:Caddy 使用 Go 语言编写,以高性能著称。
安全:Caddy 支持 HTTPS、自动证书生成、HTTP/2 等安全功能。
易用:Caddy 的配置文件简单易懂,易于配置。
社区活跃:Caddy 社区活跃,可以获得及时帮助。

Nginx 的优势:

性能:Nginx 性能较高,在高负载情况下表现稳定。
功能丰富:Nginx 支持多种功能,可以满足复杂的需求。
社区活跃:Nginx 社区活跃,可以获得及时帮助。

Caddy 的劣势:

性能:Caddy 的性能略逊于 Nginx。
功能:Caddy 的功能略少于 Nginx。
Nginx 的劣势:

易用性:Nginx 的配置文件语法复杂,学习曲线较陡。

总结:

Caddy 和 Nginx 都是优秀的 Web 服务器。Caddy 的优势在于快速、安全、易用,适合中小网站和对性能要求不高的场景。Nginx 的优势在于性能高、功能丰富,适合大型网站和对性能要求高的场景。

选择 Caddy 还是 Nginx 取决于你的具体需求:

如果你的网站对性能要求不高,并且希望快速、安全、易于部署,那么 Caddy 是一个不错的选择。如果你的网站对性能要求高,并且需要丰富的功能,那么 Nginx 是一个不错的选择。

官方&下载

开源项目地址:https://github.com/caddyserver/dist

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

帮助文档:https://caddy2.dengxiaolong.com/docs/install

安装

Debian、Ubuntu、Raspbian
安装此软件包会自动启动将Caddy作为systemd服务(名称为caddy)运行,另外,还有一个名为caddy-api可供使用,它默认没有被启用。

sudo apt install -y debian-keyring debian-archive-keyring apt-transport-https
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


Fedora 或 RHEL/CentOS 8:

dnf install 'dnf-command(copr)'
dnf copr enable @caddy/caddy
dnf install caddy


RHEL/CentOS 7:

yum install yum-plugin-copr
yum copr enable @caddy/caddy
yum install caddy


Arch Linux, Manjaro, Parabola:这个包附带了 Caddy 的两个systemd服务单元文件,但默认情况下不启用它们。

pacman -Syu caddy


Docker

docker pull caddy
docker run -i -t -d --name kangle -p 80:80 -p 443:443 caddy
使用:Caddy2相关命令行

命令行

# 启动Caddy2
systemctl start caddy
# 开机自启
systemctl enable caddy
# 重启Caddy2
systemctl restart caddy
# 停止Caddy2
systemctl stop caddy
# 重载配置Caddy配置文件(修改配置文件后执行)
systemctl reload caddy
# 查看Caddy2运行状态
systemctl status caddy
简单使用

# 进入/etc/caddy,打开Caddyfile文件,清空文件内容,然后输入下面的代码

virplus.com {
    root * /var/www/html
    file_server
}

# 创建静态

mkdir -p /var/www/html

进入/var/www/html文件夹并创建文件index.html

编写index.html

到此,完成静态网站配置

功能:反向代理

1、命令行

终端运行以下命令:

caddy reverse-proxy --to 127.0.0.1:9000

如果没有绑定到低端口的权限,则可以从较高的端口进行代理:

caddy reverse-proxy --from :2016 --to 127.0.0.1:9000

然后访问localhost (或者你通过--from指定的任意地址)发出请求,检查它是否能正常工作!


2、Caddyfile 文件

在当前工作目录中,创建一个名为Caddyfile的文件,内容如下:

example.com{
reverse_proxy 127.0.0.1:9000
encode gzip
}

然后,从同一目录执行如下命令:

caddy run

然后,可以访问https://example.com,检查它是否能正常工作!

要更改代理地址也很简单:

:2016
reverse_proxy 127.0.0.1:9000

更改Caddyfile后,请确保重新重载Caddy(或停止并重新启动它)。

现在可以通过 localhost:2016访问代理了。

也可以使用reverse_proxy指令完成更多的操作。


功能:网站配置

Caddyfile是一种方便用户使用的Caddy配置格式。这是大多数人最喜欢使用Caddy的方式,因为它易于编写、易于理解,且能满足绝大部分的使用场景。

它看起来像这样

example.com
root * /var/www/wordpress
php_fastcgi unix//run/php/php-version-fpm.sock
file_server

(以上示例是一个真正的、生产就绪的Caddyfile,它通过完全托管的HTTPS为WordPress提供服务。)

基本思路是,先填写网站的地址,然后填写网站需要具备的特性或功能。

查看更多常见模式。


功能:Caddyfile常用配置

此页面演示了一些用于常见用例的完整和最小的Caddyfile配置。这些可能是你自己的Caddyfile文档的有用起点
这些不是即插即用的解决方案;你将不得不自定义你的域名、端口/套接字、目录路径等。它们旨在说明一些最常见的配置模式。

静态文件服务器

example.com
root * /var/www
file_server

像往常一样,第一行是站点地址。该root指令指定站点根目录的路径(*匹配所有请求的方法,以便与路径匹配器消除歧义);如果站点不是当前工作目录,则更改站点的路径。最后,我们启用静态文件服务器。

反向代理

代理所有的请求:

example.com{
reverse_proxy 127.0.0.1:5000
encode gzip
}


只代理以/api/开头的请求,并为其他所有内容提供静态文件:

example.com
root * /var/www
reverse_proxy /api/* localhost:5000
file_server


PHP

在运行PHP FastCGI服务的情况下,类似这样的内容适用于大多数现代PHP应用程序

example.com
root * /var/www
php_fastcgi /blog/* localhost:9000
file_server

请对应地调整站点根目录和路径匹配器;

此示例假定PHP仅位于/blog/子目录中——所有其他请求将作为静态文件提供。

该php_fastcgi指令实际上只是几个配置的快捷方式。

重定向到www.子域名

T使用HTTP重定向,给域名添加www.子域。

example.com {
    redir https://www.example.com{uri}
}
www.example.com {
}

要删除它:

www.example.com {
    redir https://example.com{uri}
}
example.com {
}


尾随斜杠

通常不需要自己进行配置;该file_server指令将通过 HTTP 重定向自动添加或删除请求中的尾部斜杠,具体取决于请求的资源是目录还是文件。

但如果需要,仍然可以在配置中强制使用斜杠。有两种方法:内部或外部。


内部执法

这使用rewrite指令。Caddy将在内部重写URI以添加或删除尾部斜杠:

example.com
rewrite /add     /add/
rewrite /remove/ /remove

使用重写,带有和不带有斜杠的请求将是相同的。

外部执行

这使用redir指令。Caddy 将要求浏览器更改 URI 以添加或删除尾部斜杠:

example.com
redir /add     /add/
redir /remove/ /remove

使用重定向,客户端将不得不重新发出请求,为资源强制执行一个可接受的URI。


普通网站,自动申请TLS证书

# gzip 压缩指令
# 日志:路径
# 网站根目录
# tls 指令告caddy为网站开启 https 并自动申请证书,后面email是告知CA申请人邮箱。默认使用 let's encry
www.virplus.com:80 {
  encode gzip
  root /home/www/virplus  
  tls sp@virplus.com
  }


通配符证书

如果你需要使用相同的通配符证书为多个子域提供服务,处理它们的最佳方法是使用如下所示的Caddyfile,利用handle指令和[host]host匹配器:

*.example.com {
    tls {
        dns <provider_name> [<params...>]
    }
    @foo host foo.example.com
    handle @foo {
        respond "Foo!"
    }
    @bar host bar.example.com
    handle @bar {
        respond "Bar!"
    }
    # Fallback for otherwise unhandled domains
    handle {
        abort
    }
}

请注意,你必须启用ACME DNS 质询才能让 Caddy 自动管理通配符证书。


单页面应用(SPAs)

当一个网页进行自己的路由时,服务器可能会收到大量的请求,这些请求并不存在于服务器端,但只要提供单一的索引文件,这些请求就可以在客户端呈现。这样架构的Web应用程序被称为SPA,或单页应用程序。

其主要思想是让服务器“尝试文件”来查看请求的文件在服务器端是否存在,如果不存在,则返回到一个索引文件,客户端在其中进行路由(通常使用客户端JavaScript):try_files {path} /index.html

最基本的SPA配置通常是这样的:

example.com
root * /path/to/site
try_files {path} /index.html
file_server

如果你的SPA与API或其他仅在服务器端使用的端点相结合,你会想要使用handle块来专门处理它们:

example.com
handle /api/* {
    reverse_proxy backend:8000
}
handle {
    root * /path/to/site
    try_files {path} /index.html
    file_server
}


更多

手册:https://caddy2.dengxiaolong.com/docs/caddyfile/patterns


http://www.savh.cn/thread-1604.htm

转载请注明:Savh.Cn 发表

推荐阅读
最新动态 (0)

    ( 登录 ) 后,可以发表评论!

    返回