1. 球童版本(caddy version
):2.0.0
2. 我如何运行 Caddy:
我使用 Docker ( docker-compose
) 来运行 Caddyserver。这是我的球童服务的命令:command: ["caddy", "run", "--config", "/etc/caddy/Caddyfile"]
Docker 版本 19.03.1 docker-compose 版本 1.22.0
湾。命令:docker-compose -f docker-compose.caddy.yml up -d --build
C。服务/单元/撰写文件:
version: "3.4"
services:
# other services...
caddy:
image: caddy:2.0.0
restart: always
container_name: caddy
deploy:
replicas: 2
update_config:
delay: 10s
restart_policy:
condition: on-failure
volumes:
- ./Caddyfile:/etc/caddy/Caddyfile
- www:/var/www/html
- caddy_data:/data
- caddy_config:/config
ports:
- "80:80"
- "443:443"
command: ["caddy", "run", "--config", "/etc/caddy/Caddyfile"]
volumes:
db-data:
conf:
www:
cert:
caddy_data:
caddy_config:
d。我完整的 Caddyfile 或 JSON 配置:
:443 {
root * /var/www/html/{host}
file_server
tls {
on_demand
}
reverse_proxy /sites/action/* api:4000
}
3.我遇到的问题:
我运行一个平台,用户可以在其中托管他们的网站,因此我在服务器中托管了很多域,每个域都有自己的目录。每当访问者进入域时,我都会通过{host}
参数查看父目录并提供其文件。在我想将非 www 重定向到 www 或将 www 重定向到非 www 之前,它工作得很好。这也不是我的问题,当我不知道该域应该重定向到 www 还是非 www 时,就会出现问题!
当域由用户创建时,他们中的一些人可能会选择转发到 www,而他们中的一些人可能会选择转发到非 www。我可以根据该选择创建一个系统文件(例如:)redirect-rules.conf
。我需要一种方法来读取该文件的内容并在Caddyfile
.
假设example.com
创建了一个域目录并选择www
将其转发到example.com
. 我正在考虑一个redirect-rules.conf
包含以下内容的伪文件:
redir www.example.com example.com
4. 错误消息和/或完整日志输出:
我尝试使用import
如下指令读取 conf 文件import /var/www/html/{host}/redir_rules
:但是这个配置是错误的,因为我不允许在文件路径中使用变量!我得到的错误:Error during parsing: File to import not found: /var/www/html/{host}/redir
这种情况的理想解决方案是什么?
5. 我已经尝试过的:
import a conf file from root
,好像 import 指令从绝对路径读取文件。