Apache VirtualHost 选项与 ePages 电子商务解决方案

Apache VirtualHost 选项与 ePages 电子商务解决方案

我有一台运行 ePages(在 Apache 上运行)的 Centos 服务器。现在我想使用同一台服务器来托管其他几个网站,但我似乎无法使我的配置正常工作。我不确定是否有人熟悉 epages(我在他们的论坛上查找过,但没有结果),但这是配置的 epages 部分:

<VirtualHost _default_:80>
<Location /epages/>
<IfDefine LB>
    ProxyPass balancer://cluster/epages/
    ProxyPassReverse balancer://cluster/epages/
</IfDefine>
<IfDefine !LB>
    ProxyPass http://myinternal.url:8008/epages/
    ProxyPassReverse http://myinternal.url:8008/epages/
</IfDefine>
</Location>
</VirtualHost>

这是我添加的内容

<VirtualHost my.ip.add.res:80>

DocumentRoot /var/www/html/path/
ServerName another.url.com
ServerAlias another.url.com

</VirtualHost>

现在我的印象是,任何对“another.url.com”的请求都将转到我添加的 DocumentRoot,而任何其他请求都将转到 epages 将处理的默认请求。

但是,无论我如何访问服务器,使用任何指向它的 URL,它总是转到我添加的新 vhost,并且再也不会转到 epages。

如果可能的话,我不想更改 epages 配置,有人可以解释一下这里发生了什么吗?

epages 配置还有很多内容,但与 VirtualHosts 无关,所以我没有粘贴它,但如果我需要,请告诉我。

谢谢

答案1

我自己也一直在为此苦苦挣扎。ePages 不是很有趣吗?

ePages Apache 配置与更“普通”的站点有许多不同之处。

1. 每次 ePages 服务重新启动时,它都会重写大多数配置文件。

任何带有“zzz”前缀的内容(conf.d 中的大多数文件)都将被重写,因此不必编辑这些文件。

2. 它不使用基于名称的虚拟主机。

如果您查看 conf/httpd.conf,您会看到 NameVirtualHost 指令已被注释掉。这意味着您的 VirtualHost 指令将通过 IP 地址而不是主机名激活。因此,在上面的示例中,如果 my.ip.add.res 恰好是服务器的默认 IP,那么您的 VirtualHost 块将被忽略,而使用之前的那个。您可以获取辅助 IP 地址并在第二个 VirtualHost 中使用它(然后为您需要的每个新 VirtualHost 获取一个新 IP),或者您可以取消注释 NameVirtualHost 指令。但:

3. 它在 IfDefine 块内定义一个 VirtualHost。

这可能因版本而异,但在我的例子中 (6.14.3),唯一的 VirtualHost 块位于 <IfDefine PROXY> 块 (conf.d/zzz-epages-httpd.conf) 内。这意味着如果您定义自己的 VirtualHost,并且您的服务器未定义 PROXY 环境变量,则您的 VirtualHost 将是唯一的,因此将对所有请求有效。为了安全起见,请定义两个 VirtualHost:一个适用于 epages,另一个适用于您的其他站点。如果定义了 PROXY,您的 epages VirtualHost 将被忽略,否则它将是一个必要的过滤器。还请注意,ePages 依赖于 mod_rewrite,因此这个“安全网”VirtualHost 将需要启用它。

这最终对我有用:

# file: /etc/httpd/conf/httpd.conf
# find and uncomment the NameVirtualHost directive,
# then add this at the very end of the file

<VirtualHost *:80>
    ServerName www.myepageswebsite.com
    ServerAlias myepageswebsite.com
    RewriteEngine On
    RewriteOptions Inherit
</VirtualHost>
<VirtualHost *:80>
    ServerName www.myotherwebsite.com
    ServerAlias myotherwebsite.com
    DocumentRoot /var/www/html
</VirtualHost>

相关内容