我如何设置Apache虚拟主机代理到不同的码头集装箱上的子域
问题描述:
我有一个项目设置与多个码头集装箱,我想访问一个子域,我试图代理到另一个容器。我可以实现类似的,当没有一个子域,例如下面让我打localdev.com/api
:我如何设置Apache虚拟主机代理到不同的码头集装箱上的子域
<VirtualHost localdev.com:80>
ServerName localdev.com
SetEnv PROJECT_HOME /project/server
SetEnv PROJECT_SERVER_ID local
SetEnv PROJECT_ENVIRONMENT docker
DocumentRoot /project/server/www
<Directory /project/server/www>
Require all granted
</Directory>
<Proxy *>
Allow from localhost
</Proxy>
ProxyPass /api http://api.localdev.com/
ProxyPassReverse /api http://api.localdev.com/
</VirtualHost>
但是当我添加一个虚拟主机api.localdev.com
我被转发到localdev(网址不会改变该浏览器,但我从它的内容)
这是我的子域名的虚拟主机:
<VirtualHost api.localdev.com:80>
ServerName api.localdev.com
<Proxy *>
Allow from localhost
</Proxy>
ProxyPass /http://api.localdev.com/
ProxyPassReverse/http://api.localdev.com/
</VirtualHost>
有趣的是,在Apache日志,我得到了正确的主机,即api.localdev.com
从含有localdev.com
泊坞窗的容器内,我既可以平&卷曲api.localdev.com
虽然可能不会对这一问题相关的,在我的Mac主机文件,我有以下映射到泊坞窗容器
127.0.0.1 localhost localdev.com api.localdev.com
我在网上寻找的任何地方尝试解决这个问题并不明确,我承认我发现这些例子令人困惑。任何帮助非常感谢和高兴地提供任何进一步的信息,如果我什么都没有丢失
答
我终于找到了解决方案。相反,创建第二个虚拟主机的我加了一个重写规则与API子域中的任何条件:
# proxy api subdomain to api container
RewriteCond %{HTTP_HOST} ^api\.localdev\.com$
RewriteRule (.*) http://api.localdev.com$1 [P]
现在似乎像预期的那样。
容器不会知道Mac/etc/hosts文件中的条目 - 您最好在代理配置中使用Docker主机名值。 – ldg
@idg我意识到,我只有在我的Mac的主机,所以我可以在我的浏览器中使用localdev.com,我不相信这是在反正造成我的问题,突然认为它可能是相关的知道 – jonnie