首页 > 解决方案 > 带有通配符子域的反向代理

问题描述

我们的反向代理需要一个 Apache 配置,它允许任何子域 ( any.example.com) 被重定向到保留子域 ( any.server.local) 的上游服务器。

我们发现 RewriteRules 指令存在几个死胡同,并且没有现成的可用配方。

最终,我们想出了一个解决方案:

<VirtualHost example.com:443>
    #any other directives you usually use
        ProxyPassInterpolateEnv On
        SetEnvIf Host "^([^.]*).example.com$" SUBDOMAIN=$1
        SetEnvIf Host "^example.com$" SUBDOMAIN=www
        ProxyPass /  http://${SUBDOMAIN}.server.local/ interpolate
        ProxyPassReverse /  http://${SUBDOMAIN}.server.local/ interpolate
        ServerName example.com
        ServerAlias *.example.com
</VirtualHost>

因此:

any.example.com被发送到any.server.local,并且

example.com被发送到www.server.local

此外,我们还配置了内部和外部 DNS,以便将任何请求*.example.com分别发送到内部和外部反向代理地址。对于 SSL,我们设置了 Let's Encrypt ( *.example.com)的通配符证书

我们希望这可以帮助任何需要类似配置的人。

标签: apachereverse-proxywildcard

解决方案


推荐阅读