我不确定我尝试做的事情是否可行,但我在多台服务器上有几个应用程序。我有一台用于 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:// 扩展一起使用。有没有办法让它工作?
我可以按照我想要的方式设置代理吗?
答案1
无论我如何设置,它都无法与 https:// 扩展一起使用
你的<VirtualHost *:80>
是仅有的匹配端口 80 流量, 所以不能使用“https:// 扩展”。
无论存在什么问题可能与您的代理设置有关,您的第一个问题是您的虚拟主机设置。
根据 OP 评论进行编辑以回答:
我想要做的是当有人尝试访问 http 时重定向到 https
在这种情况下,您应该考虑做一个简单的操作Redirect
,而不是尝试设置代理:
<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>
答案2
典型的配置是您的用户/访问者浏览到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>