带域的 apache2 反向代理

带域的 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:// 扩展一起使用。有没有办法让它工作?

我可以按照我想要的方式设置代理吗?

答案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>

相关内容