我有几个应用程序运行在局域网中的几个盒子上。所有的应用程序都使用不同的端口。
为了简单起见,假设我在一台服务器上有两个应用程序,apache在8080,tomcat在9292。tomcat.local和apache.local说,我想做的是给每个应用程序一个域名。
我看了一下绑定,但DNS a似乎只想指向ip地址。我知道负载平衡器有能力,但我认为这可能是过火了。有一个很好的简单的解决方案来设置这个吗?
发布于 2014-05-03 18:47:38
除了dns条目之外,您还需要某种代理。
下面的示例显示了基于用于jenkins的apache的代理示例:
<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>发布于 2014-05-03 19:03:51
这里建议的另一种选择是在单个网络接口上设置多个IP地址。
例如,现在如果您将10.0.0.1分配给eth0。您可以在不添加额外硬件的情况下获得以下设置:
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 )
发布于 2014-05-03 18:48:04
我知道负载平衡器有能力,但我认为这可能是过火了。
您希望使用Apache反向代理与基于Apache名称的虚拟主机相结合。而且为了记录,负载平衡器基本上使用反向模仿,但是使用更精细的逻辑来帮助平衡系统流量。我将要描述的示例是一个非常简单的版本,它可以很好地适用于这种情况。
在本例中,我将重点介绍您通过端口9292所提供的Tomcat服务,因为它似乎是您尝试分割这个端口的8080?这不是一个判断,而是一个基于你的例子的观察。不管怎么说,只要继续阅读我将如何处理这件事的细节。
首先,确保像这样启用Apache中的proxy和proxy_http模块。我使用Ubuntu12.04作为示例:
sudo a2enmod proxy proxy_http下面是一个如何在Apache中设置tomcat.local虚拟主机的快速示例。请注意与Proxy*相关的项;这是使其工作的关键:
<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,如下所示:
sudo service apache2 restart因此,在本例中,您可以转到localhost:9292,而不是转到tomcat.local,而与虚拟主机设置相结合的代理设置将将localhost:9292输送到tomcat.local。
通常,当我这样做时,我想确保Tomcat的所有流量都通过Apache,所以我打开Tomcat服务器XML文件如下:
sudo nano /etc/tomcat6/server.xml查找以下设置:
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
URIEncoding="UTF-8"
redirectPort="8443" />然后添加address="127.0.0.1来限制连接到localhost环境,如下所示:
<Connector port="8080" protocol="HTTP/1.1"
address="127.0.0.1"
connectionTimeout="20000"
URIEncoding="UTF-8"
redirectPort="8443" />现在,像这样重新启动Tomcat:
sudo service tomcat6 restart此时,Tomcat将被限制为localhost,但是基于名称的虚拟主机&反向推进的Apache设置将专门通过tomcat.local传输。
https://serverfault.com/questions/592929
复制相似问题