动态大规模虚拟主机中的 Apache ProxyPass

动态大规模虚拟主机中的 Apache ProxyPass

为了使我的生活更容易适应新的虚拟主机的出现,我设置了我的 httpd.conf 来使用这个:

<IfModule mod_vhost_alias.c>
  <VirtualHost *:80>
    RewriteEngine On
    RewriteCond %{SERVER_PORT}s ^(443(s)|[0-9]+s)$
    RewriteRule ^(.*)$ - [env=askapache:%2]

    RewriteCond %{HTTP_HOST} ^[^.]+\.[^.]+$
    RewriteRule ^(.*) http://www.%{HTTP_HOST}/$1 [R=301]

    ServerAlias *
    UseCanonicalName Off
    LogFormat "%V %h %l %u %t \"%r\" %s %b" vcommon
    CustomLog /var/log/httpd/access_log vcommon
    VirtualDocumentRoot /web-data/vhosts/%0/httpdocs
    VirtualScriptAlias  /web-data/vhosts/%0/httpdocs
  </VirtualHost>
</IfModule>

问题是其中一个主机需要使用 ProxyPass 语句。我本来打算将其放在该站点根目录(而不是 httpdocs 文件夹外的 Doc Root)中 conf 文件夹中的单独 conf 文件中。但是我不知道如何做到这一点并将其包含在动态虚拟主机中。我该怎么做才能仅为这台主机设置 ProxyPass,而不会弄乱我已有的动态虚拟主机设置?

编辑:

我尝试在 .htaccess 文件中执行以下操作,但无济于事。我收到 404

RewriteEngine on
RewriteRule ^blog/$ http://blog.mydomain.com [P,L]

答案1

您可能可以在 Apache conf 目录中的单独的 conf 文件中定义您的代理,然后在 htaccess 文件中使用带有 P 标志(在后台使用 mod_proxy)的重写规则。

相关内容