【发布时间】:2015-11-09 11:55:37
【问题描述】:
我们希望通过任何向量来解决以下通过 URL 访问我们的网络产品的问题。我们想通过拥有一个公共 IP 的托管服务器上的端口 80 访问三个产品。它们将在不同的时间点被访问,因此我们为所有它们使用一个端口。我们如何通过以下 URL 访问这些产品?可以通过下面的Apache Web 服务器配置来实现吗?或者,除了 Apache Web 服务器配置之外,我们还需要本地 DNS 服务器吗?
通过 URL 访问的产品:
http://<Our.Server.Fully.Qualified.Domain.Name.com>/product1
http://<Our.Server.Fully.Qualified.Domain.Name.com>/product2
http://<Our.Server.Fully.Qualified.Domain.Name.com>/product3
在/etc/hosts文件中,我们添加了
10.10.10.100 product1 product2 product3
Apache Web 服务器的vhosts.conf
<VirtualHost 10.10.10.100:80>
DocumentRoot "/usr/local/product1"
ServerName product1
ServerAdmin admin@Our.Server.Fully.Qualified.Domain.Name.com
ErrorLog "/usr/local/apache2/logs/error_log"
TransferLog "/usr/local/apache2/ logs/access_log"
</VirtualHost>
<VirtualHost *:80>
DocumentRoot "/usr/local/product2"
ServerName product2
ServerAdmin admin@Our.Server.Fully.Qualified.Domain.Name.com
ErrorLog "/usr/local/apache2/logs/error_log"
TransferLog "/usr/local/apache2/ logs/access_log"
</VirtualHost>
<VirtualHost *:80>
DocumentRoot "/usr/local/product3"
ServerName product3
ServerAdmin admin@Our.Server.Fully.Qualified.Domain.Name.com
ErrorLog "/usr/local/apache2/logs/error_log"
TransferLog "/usr/local/apache2/ logs/access_log"
</VirtualHost>
编辑:由于@arober11 的解决方案对我们有效,我们已将配置扩展到三个附加产品,这些产品分布在同一台服务器(虚拟机、VM-1、VM-2)上物理服务器:
(1) product4 位于 VM-1 的不同目录 (/usr/local/dir4/product4) 中(products1/2/3 位于 /usr/local)。
(2) product5 位于/usr/local/dir5/product5 中的另一台服务器 VM-2 中。
(3) product6 在/usr/local/dir6/product6 的VM-2 中。
我们知道一个 VirtualHost 容器只能有一个 ServerName,而 ServerName 又只能有一个 DocumentRoot。因此,对于 4/5/6 的每个产品,我们是否必须:
(i) 使用各自的 IP 和端口号创建新的虚拟主机?
(ii) 将 ServerNames 分别添加到 VM-1 和 VM-2 的 /etc/hosts。 (或者,即使在这个扩展部署中,这也是多余的吗?)
---------详情------------
两个虚拟机都由同一个外部 IP 访问。虚拟机的私有 IP 和它们的 DNS 指针是:
VM-1: http://<Our.Server.Fully.Qualified.Domain.Name.com> -> 10.10.10.100 (Port 80)
VM-2: http://<Our.Server.Fully.Qualified.Domain.Name.com:9080> -> 10.10.10.200 (Port 9080)
产品将通过以下方式访问:
http://<Our.Server.Fully.Qualified.Domain.Name.com>/product4 (in VM-1)
http://<Our.Server.Fully.Qualified.Domain.Name.com>:9080/product5 (in VM-2)
http://<Our.Server.Fully.Qualified.Domain.Name.com>:9080/product6 (in VM-2)
(1) VM-1 中的产品 4。
<VirtualHost *:80>
DocumentRoot "/usr/local/dir4/product4"
ServerName product4
ServerAdmin admin@Our.Server.Fully.Qualified.Domain.Name.com
ErrorLog "/usr/local/apache2/logs/error_log"
TransferLog "/usr/local/apache2/ logs/access_log"
<Directory />
DirectoryIndex index.php
</Directory>
</VirtualHost>
(2) 产品 5(在 VM-2 中)
<VirtualHost 10.10.10.200:9080>
DocumentRoot "/usr/local/dir5/product5"
ServerName product5
ServerAdmin admin@Our.Server.Fully.Qualified.Domain.Name.com
ErrorLog "/usr/local/apache2/logs/error_log"
TransferLog "/usr/local/apache2/ logs/access_log"
<Directory />
DirectoryIndex index.html
</Directory>
</VirtualHost>
(3) 对于产品 6(在 VM-2 中)
<VirtualHost 10.10.10.200:9080>
DocumentRoot "/usr/local/dir6/product6"
ServerName product6
ServerAdmin admin@Our.Server.Fully.Qualified.Domain.Name.com
ErrorLog "/usr/local/apache2/logs/error_log"
TransferLog "/usr/local/apache2/ logs/access_log"
<Directory />
DirectoryIndex abc.jsp
</Directory>
</VirtualHost>
【问题讨论】:
标签: apache location webserver virtualhost document-root