3

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 指令从绝对路径读取文件。

6.相关资源链接:

4

0 回答 0