【问题标题】:Caddy: How to add multiple reverse proxies via API and not using Caddyfile?Caddy:如何通过 API 添加多个反向代理而不使用 Caddyfile?
【发布时间】:2020-06-24 13:47:06
【问题描述】:

我可以使用这样的 Caddyfile(+ https withletsencrypt)拥有一个具有多个域的服务器:

site1.com {
  reverse_proxy localhost:3001
}

site2.com {
  reverse_proxy localhost:3002
}

site3.com {
  reverse_proxy localhost:3003
}

但我想在没有 Caddyfile 的情况下运行 caddy,并且我想通过管理 API 动态添加此类代理。

他们有一个API,但我不明白如何在不需要 Caddyfile 的情况下为 caddy 添加新的反向代理。

我正在寻找这个请求的 JSON 格式,它可以是这样的(伪请求):

curl localhost:2019/load \
    -X POST \
    -H "Content-Type: application/json" \
    -data "{'domain': 'site1.com', 'tls': 'yes', 'proxy': 'http://localhost:3001'}"

curl localhost:2019/load \
    -X POST \
    -H "Content-Type: application/json" \
    -data "{'domain': 'site2.com', 'tls': 'yes', 'proxy': 'http://localhost:3002'}"

是否可以仅通过 API 添加反向代理?我正在使用 Caddy v2.0

【问题讨论】:

    标签: caddy


    【解决方案1】:

    caddy adapt不是你需要的吗?

    > caddy adapt --config /path/to/Caddyfile
    
    {"apps":{"http":{"servers":{"srv0":{"listen":[":443"],"routes":[{"match":[{"host":["site1.com"]}],"handle":[{"handler":"subroute","routes":[{"handle":[{"handler":"reverse_proxy","upstreams":[{"dial":"localhost:3001"}]}]}]}],"terminal":true},{"match":[{"host":["site2.com"]}],"handle":[{"handler":"subroute","routes":[{"handle":[{"handler":"reverse_proxy","upstreams":[{"dial":"localhost:3002"}]}]}]}],"terminal":true},{"match":[{"host":["site3.com"]}],"handle":[{"handler":"subroute","routes":[{"handle":[{"handler":"reverse_proxy","upstreams":[{"dial":"localhost:3003"}]}]}]}],"terminal":true}]}}}}}
    

    https://caddyserver.com/docs/getting-started

    【讨论】:

    • 问题的作者要求提供一个 api 端点,如果这可能的话,请告诉我:)
    猜你喜欢
    • 2020-03-26
    • 1970-01-01
    • 2021-05-09
    • 2022-12-14
    • 1970-01-01
    • 2021-10-22
    • 2012-05-31
    • 2021-11-24
    • 2012-07-06
    相关资源
    最近更新 更多