使用 mod_proxy 在 Apache 上运行 WordPress 和 Ghost

使用 mod_proxy 在 Apache 上运行 WordPress 和 Ghost

我目前有三个 WordPress 网站托管在 Apache 上,并使用虚拟主机文件将正确的域指向正确的 DocumentRoot。Ghost (node.js) 刚刚推出,我想对它进行修改,并在我的一个备用域上试用一下。我对转移到 nginx 并不感兴趣,所以我试图通过 mod_proxy 让 Ghost 在 Apache 上运行。我设法让 Ghost 在我的备用域上运行,但我认为我的虚拟主机文件有问题,因为我的所有其他域也开始指向 Ghost。这里有两个虚拟主机文件,一个用于我的主要 WordPress 网站,运行良好,另一个用于 Ghost。域已删除并替换为 DOMAIN 和 DOMAIN2。

领域

<VirtualHost *:80>
ServerAdmin webmaster@localhost
ServerName DOMAIN.com
ServerAlias www.DOMAIN.com

DocumentRoot /var/www/DOMAIN.com/public_html
<Directory />
    Options FollowSymLinks
    AllowOverride All
</Directory>
<Directory /var/www/DOMAIN.com/public_html>
    Options Indexes FollowSymLinks MultiViews
    AllowOverride All
    Order allow,deny
    allow from all
</Directory>

ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory "/usr/lib/cgi-bin">
    AllowOverride None
    Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
    Order allow,deny
    Allow from all
</Directory>

ErrorLog ${APACHE_LOG_DIR}/error.log

# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn

CustomLog ${APACHE_LOG_DIR}/access.log combined

Alias /doc/ "/usr/share/doc/"
<Directory "/usr/share/doc/">
    Options Indexes MultiViews FollowSymLinks
    AllowOverride None
    Order deny,allow
    Deny from all
    Allow from 127.0.0.0/255.0.0.0 ::1/128
</Directory>
</VirtualHost>

域2

<VirtualHost IP:80>
    ServerAdmin EMAIL
    ServerName DOMAIN2.com
    ServerAlias www.DOMAIN2.com

    ProxyPreserveHost on
    ProxyPass / http://IP:2368/
</VirtualHost>

我感觉虚拟主机或 mod_proxy 的使用不太正确,而且我尝试了很多次后,Google-fu 也让我失望了。有什么好主意吗?谢谢!

答案1

您尝试在 IP 地址上混合使用基于名称和基于 IP 的虚拟托管。这几乎不会产生您期望的结果。

来自文档

现在,当请求到达时,服务器将首先检查它是否正在使用与 NameVirtualHost 匹配的 IP 地址。如果是,它将查看具有匹配 IP 地址的每个部分,并尝试找到 ServerName 或 ServerAlias 与请求的主机名匹配的部分。如果找到一个,它将使用该服务器的配置。如果未找到匹配的虚拟主机,则将使用与 IP 地址匹配的第一个列出的虚拟主机。

因此,<VirtualHost *:80>对于块中定义的 IP 地址发出的任何请求<VirtualHost IP:80>,块中的任何虚拟主机都会被完全忽略,并且它会为所有请求提供服务。

您可以通过对给定 IP 地址上的所有虚拟主机一致使用基于名称或基于 IP 的虚拟托管来解决此问题。

相关内容