繁体   English   中英

自定义域的按需 TLS 和反向代理支持

[英]On Demand TLS and Reverse Proxy Support for Custom Domains

我今天遇到了一个情况。 请分享您的专业知识

我有一个项目(my-app.com),其中一个功能是生成一个由不同端点组成的状态页面。

当前工作流程

  1. 用户登录系统
  2. 用户为他的一个站点(例如google)创建一个状态页面,并添加不同的端点和组件以包含在该页面上。
  3. 系统为给定的状态页面生成一个链接。

例如。 my-app.com/status-page/google

  1. 但是用户可能希望在他的自定义域中看到这个页面。

例如。 status.google.com

  1. 由于这是一个自定义域,我们需要按需 TLS功能。 对于这个功能,我使用了Caddy并且工作正常。 Caddy 在我们的子域status.myserver.com上运行,用户的自定义域status.myserver.com对我们的子域status.google.com有一个CNAME

  2. 除了按需 TLS,我还需要进行反向代理,如下所示。

例如。 status.google.com ->(CNAME)-> status.myserver.com ->(REVERSE_PROXY)-> my-app.com/status-page/google

但是 Caddy 仅支持反向代理的协议、主机和端口格式,例如my-app.com但我的要求是支持自定义页面my-app.com/status-page/google的反向代理。 我怎样才能做到这一点? 有没有更好的 Caddy 替代品或 Caddy 的解决方法?

我目前的实施

你是对的,因为你不能在反向代理上游 URL 中使用路径,所以在启动反向代理之前,你必须先重写请求以包含路径。

此外,上游地址不能包含路径或查询字符串,因为这意味着在代理时同时重写请求,这种行为没有定义或支持。 如果需要,可以使用rewrite指令。

因此,您应该能够使用内部球童rewrite/status-page/google路径添加到每个请求。 然后您可以简单地使用my-app.com作为您的 Caddy 反向代理上游。 这可能看起来像这样:

https:// {
    rewrite * /status-page/google{path}?{query}
    reverse_proxy http://my-app.com
}

您可以在此处找到有关所有可能的 Caddy reverse_proxy上游地址的更多信息: https://caddyserver.com/docs/caddyfile/directives/reverse_proxy#upstream-addresses

但是,由于您可能无法在 Caddyfile 中硬编码状态页的名称 ( /status-page/google ),因此您可以设置一个脚本(例如/status-page )来查看请求URL,在您的数据库中查找域(例如status.google.com ),并自动输出正确的状态页面。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM