首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >路由到一个带有域的局域网中的多个应用程序。

问路由到一个带有域的局域网中的多个应用程序。
EN

Server Fault用户
提问于 2014-05-03 18:33:48
回答 3查看 174关注 0票数 0

我有几个应用程序运行在局域网中的几个盒子上。所有的应用程序都使用不同的端口。

为了简单起见,假设我在一台服务器上有两个应用程序,apache在8080,tomcat在9292。tomcat.local和apache.local说,我想做的是给每个应用程序一个域名。

我看了一下绑定,但DNS a似乎只想指向ip地址。我知道负载平衡器有能力,但我认为这可能是过火了。有一个很好的简单的解决方案来设置这个吗?

EN

回答 3

Server Fault用户

发布于 2014-05-03 18:47:38

除了dns条目之外,您还需要某种代理。

下面的示例显示了基于用于jenkins的apache的代理示例:

代码语言:javascript
复制
<VirtualHost *:80>

    ServerName jenkins.localdomain

    ProxyRequests Off
    ProxyVia Off
    # ProxyPreserveHost On

    ErrorLog  /var/log/httpd/jenkins_error.log
    CustomLog /var/log/httpd/jenkins_access.log combined

    <Proxy *>
        Order deny,allow
        Allow from all
    </Proxy>

    ProxyPass / http://192.168.1.100:8081/
    ProxyPassReverse / http://192.168.1.100:8081/

</VirtualHost>
票数 2
EN

Server Fault用户

发布于 2014-05-03 19:03:51

这里建议的另一种选择是在单个网络接口上设置多个IP地址。

例如,现在如果您将10.0.0.1分配给eth0。您可以在不添加额外硬件的情况下获得以下设置:

代码语言:javascript
复制
eth0:0 10.0.0.1
eth0:1 10.0.0.2
eth0:2 10.0.0.3
eth0:n 10.0.0.n

不确定你的操作系统,但是下面是如何在Debian中实现的方法。

如果您也在机器上运行德斯马斯克 (并使用它作为网络上其他计算机的名称服务器),那么您可以在内部网络中拥有主机名/虚拟主机,并将主机名/虚拟主机分配给唯一的IP地址(这允许您在10.0.0.1:80上运行apache,在10.0.0.1:80上使用tomcat,并使用例如:apache.dev和tomcat.dev在本地引用服务)

这是我在工作时为我们的开发服务器使用的设置(一个盒子、gitlab和gitlabci以及apache / php )

票数 2
EN

Server Fault用户

发布于 2014-05-03 18:48:04

我知道负载平衡器有能力,但我认为这可能是过火了。

您希望使用Apache反向代理与基于Apache名称的虚拟主机相结合。而且为了记录,负载平衡器基本上使用反向模仿,但是使用更精细的逻辑来帮助平衡系统流量。我将要描述的示例是一个非常简单的版本,它可以很好地适用于这种情况。

在本例中,我将重点介绍您通过端口9292所提供的Tomcat服务,因为它似乎是您尝试分割这个端口的8080?这不是一个判断,而是一个基于你的例子的观察。不管怎么说,只要继续阅读我将如何处理这件事的细节。

首先,确保像这样启用Apache中的proxy和proxy_http模块。我使用Ubuntu12.04作为示例:

代码语言:javascript
复制
sudo a2enmod proxy proxy_http

下面是一个如何在Apache中设置tomcat.local虚拟主机的快速示例。请注意与Proxy*相关的项;这是使其工作的关键:

代码语言:javascript
复制
<VirtualHost *:80>
  DocumentRoot /var/www/tomcat.local/site/
  ServerName tomcat.local
  ServerAlias tomcat.local

  ErrorLog /var/log/apache2/tomcat.local.error.log
  CustomLog /var/log/apache2/tomcat.local.access.log combined

  # Settings for Confluence
  <IfModule mod_proxy.c>

    # Proxy specific settings
    ProxyRequests Off
    ProxyPreserveHost On

    <Proxy *>
      AddDefaultCharset off
      Order deny,allow
      Allow from all
    </Proxy>

    ProxyPass / http://localhost:9292/
    ProxyPassReverse / http://localhost:9292/

  </IfModule>

</VirtualHost>

现在重启Apache,如下所示:

代码语言:javascript
复制
sudo service apache2 restart

因此,在本例中,您可以转到localhost:9292,而不是转到tomcat.local,而与虚拟主机设置相结合的代理设置将将localhost:9292输送到tomcat.local。

通常,当我这样做时,我想确保Tomcat的所有流量都通过Apache,所以我打开Tomcat服务器XML文件如下:

代码语言:javascript
复制
sudo nano /etc/tomcat6/server.xml

查找以下设置:

代码语言:javascript
复制
<Connector port="8080" protocol="HTTP/1.1"   
           connectionTimeout="20000" 
           URIEncoding="UTF-8"
           redirectPort="8443" />

然后添加address="127.0.0.1来限制连接到localhost环境,如下所示:

代码语言:javascript
复制
<Connector port="8080" protocol="HTTP/1.1"
           address="127.0.0.1"
           connectionTimeout="20000" 
           URIEncoding="UTF-8"
           redirectPort="8443" />

现在,像这样重新启动Tomcat:

代码语言:javascript
复制
sudo service tomcat6 restart

此时,Tomcat将被限制为localhost,但是基于名称的虚拟主机&反向推进的Apache设置将专门通过tomcat.local传输。

票数 1
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/592929

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档