[英]On Demand TLS and Reverse Proxy Support for Custom Domains
我今天遇到了一个情况。 请分享您的专业知识
我有一个项目(my-app.com),其中一个功能是生成一个由不同端点组成的状态页面。
当前工作流程
例如。
my-app.com/status-page/google
例如。
status.google.com
由于这是一个自定义域,我们需要按需 TLS功能。 对于这个功能,我使用了Caddy并且工作正常。 Caddy 在我们的子域status.myserver.com
上运行,用户的自定义域status.myserver.com
对我们的子域status.google.com
有一个CNAME
除了按需 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.