与域的apache2反向代理

我不知道是否有可能做什么,但我有多个服务器上的几个应用程序。 我有一个服务器gitlab,一个jenkins和一个sonarqube。 我希望能够通过使用我的域导航到他们,如下所示:

gitlab > https:// git.mydomain.com jenkins > https:// jenkins.mydomain.com sonarqube > http:// sonar.mydomain.com 

我想要做的是在与应用程序独立运行的第四台服务器上设置一个带有apache2的反向代理。 这是我试图做的:

 <VirtualHost *:80> ServerName http:// mydomain.com ProxyPass http:// sonar.mydomain.com/ http:// sonar.mydomain.com:9000/ ProxyPassReverse http:// sonar.mydomain.com http:// sonar.mydomain.com:9000/ ProxyPass http:// jenkins.mydomain.com/ https:// jenkins.mydomain.com:8081/ ProxyPassReverse http:// jenkins.mydomain.com/ https:// jenkins.mydomain.com:8081/ </VirtualHost> 

当我这样做,它将无法正常工作,只会去Apache的默认页面。 我所做的尝试是用/来做,而且我注意到无论用什么方法设置它,它都不能和https://扩展一起工作。 有没有办法让这个工作?

而且有可能以我想要的方式设置代理

无论以什么方式设置,它都不会与https://扩展一起工作

您的<VirtualHost *:80> 只能匹配80端口的stream量 ,所以无法使用“https://延长”。

无论您的代理安装程序可能存在什么问题,您的第一个问题是您的虚拟主机设置。

编辑每个OP评论来回答:

当有人试图访问http时,我想要做的是redirect到https

在这种情况下,你应该考虑只做一个简单的Redirect ,而不是试图build立一个代理:

 <VirtualHost *:80> ServerName jenkins.mydomain.com Redirect permanent / https://jenkins.mydomain.com <VirtualHost *:80> <VirtualHost *:443> ServerName jenkins.mydomain.com * * * * * EVERY DIRECTIVE YOU WANT TO SET UP THE HTTPS SERVER * * * * * <VirtualHost *:80> 

典型的configuration是您的用户/访问者浏览到http://www.example.com.com/sonar ,然后他们从http://sonar.example.com:9000/获得反向代理的内容。

 <VirtualHost *:80> ServerName www.example.com ServerAlias example.com ProxyPass /sonar http://sonar.example.com:9000/ ProxyPassReverse /sonar http://sonar.example.com:9000/ ProxyPass /jenkins https://jenkins.example.com:8081/ ProxyPassReverse /jenkins https://jenkins.example.com:8081/ </VirtualHost> 

然后在TLS虚拟主机条目中重复相同的操作:

 <VirtualHost *:443> ServerName www.example.com ServerAlias example.com ProxyPass /sonar http://sonar.example.com:9000/ ProxyPassReverse /sonar http://sonar.example.com:9000/ ProxyPass /jenkins https://jenkins.example.com:8081/ ProxyPassReverse /jenkins https://jenkins.example.com:8081/ </VirtualHost>