我有一台服务器用于测试某些服务。它基本上是一个服务器,开发人员可以运行一些容器来运行一些测试。
我要做的是将一些网址模式代理反转到一些容器中。
例如,这就是我现在所拥有的:
<VirtualHost *:80>
ServerName dev.server.com
RewriteEngine On
RewriteRule (.*) https://%{HTTP_HOST}$1 [R=301,L]
</VirtualHost>
<VirtualHost *:443>
ServerName dev.server.com
<--- certificates and log configs --->
SetEnv proxy-nokeepalive 1
ProxyRequests On
ProxyPreserveHost On
RewriteEngine On
ProxyPass /appOne http://localhost:9999/
ProxyPassReverse /appOne http://localhost:9999/
ProxyPass /appTwo http://localhost:9000/
ProxyPassReverse /appTwo http://localhost:9000/
ProxyPass / http://localhost:3000/
ProxyPassReverse / http://localhost:3000/
</VirtualHost>
但是当我访问https://dev.server.com/appOne
时,它会访问部署在端口3000
上的应用,而不是部署在端口9999
上的应用。
我以前从未配置过Apache,所以我很难理解所有的概念。这可能吗?如果是的话,我的错误在哪里?
答案 0 :(得分:0)
你想要做的当然是可能的。事实上,使用与您发布的内容基本相同的配置,我无法重现您所描述的问题 - 一切似乎都可以按您的需要运作。
我已将完整的示例here作为docker-compose应用程序;它启动了四个容器:
mod_proxy
配置与您所显示的配置相同:
ProxyPass /appOne http://localhost:9999/
ProxyPassReverse /appOne http://localhost:9999/
ProxyPass /appTwo http://localhost:9000/
ProxyPassReverse /appTwo http://localhost:9000/
ProxyPass / http://localhost:3000/
ProxyPassReverse / http://localhost:3000/
唯一不同的是我没有为我的前端服务器配置SSL上下文。除了您在问题中显示的两个示例之外,您的配置中是否还有其他VirtualHost
块(特别是在端口443上配置的其他虚拟主机)?