在同一服务器中具有基于Web的用户界面的多个服务

时间:2017-07-26 14:52:55

标签: service server dns

我有一个服务器,有多个服务和工具,基于Web的用户界面(rundeck,jenkins,sonarqube,...),我希望devteam可以使用正确的URL访问,而不是服务器IP和端口。 IE: - companyName-rundeck.com - companyName-jenkins.com - companyName-sonarqube.com

这样做的最佳方法是什么?

1 个答案:

答案 0 :(得分:1)

最常用于此目的的是某种reverse proxy。我将描述简单的Apache设置,但使用nginx或HAProxy配置它应该很容易。

出于示例目的,我们假设您在服务器上运行了3个服务:

  • 詹金斯在8080号港口
  • 端口9000上的SonarQube
  • 端口4440上的RunDeck

首先,为了仅通过使用域名来区分服务,您需要在DNS中创建多个条目,将名称指向服务器IP地址:

jenkins.example.com  A  192.0.2.2
sonar.example.com    A  192.0.2.2
rundeck.example.com  A  192.0.2.2

接下来,(如果您还没有这样做)安装Apache HTTP服务器:

yum install httpd

创建文件/etc/httpd/conf.d/proxy.conf

<VirtualHost *:80>
  ServerName jenkins.example.com
  ProxyPreserveHost On
  ProxyPass           /     http://localhost:8080/
  ProxyPassReverse    /     http://localhost:8080/
</VirtualHost>
<VirtualHost *:80>
  ServerName sonar.example.com
  ProxyPreserveHost On
  ProxyPass           /     http://localhost:9000/
  ProxyPassReverse    /     http://localhost:9000/
</VirtualHost>
<VirtualHost *:80>
  ServerName rundeck.example.com
  ProxyPreserveHost On
  ProxyPass           /     http://localhost:4440/
  ProxyPassReverse    /     http://localhost:4440/
</VirtualHost>

(逻辑应该非常清楚,详细解释,请看the docs

之后,只需启动httpd服务:service httpd start

  • 说明适用于CentOS,但对其他发行版不应有太大差异
  • 如果它无法正常工作(日志中没有任何明显的痕迹)请尝试使用已停用的selinux(setenforce 0&amp;&amp; service httpd restart