如何在同一域上实现带有代理通行证的 Apache 别名



我们有一个运行Apache VirtualHost的NodeJS站点,如下所示:

<VirtualHost *:80>
    ServerName      domain.org
    ServerAlias www.domain.org
    ProxyPass / http://localhost:8884/
    ProxyPassReverse / http://localhost:8884/
    ProxyPreserveHost on
    LogLevel debug
</VirtualHost>

这工作正常。

但是,我们现在的任务是安装WordPress博客作为域的别名。

www.domain.org/blog

为此,我们尝试设置一个带有如下别名的虚拟主机:

<VirtualHost *:80>
       Alias /blog /var/apache-vhosts/www.domain.org-blog
       <Directory /var/apache-vhosts/www.domain.org-blog/>
           Options Indexes FollowSymLinks MultiViews
           AllowOverride All
           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
</VirtualHost>

我们启用了 mod_alias apache 模块,但它就是无法拾取它。

还有其他人做到了这一点吗?

我也尝试过包含没有 vhost 包装标签的别名,但仍然没有快乐:/

请注意,ProxyPass优先于 Alias

要修复,请声明另一个指向感叹号 ( !ProxyPass

例如:

<VirtualHost *:80>
    ServerName      domain.org
    ServerAlias www.domain.org
   
    # the next line is your fix
    ProxyPass /blog !
    Alias     /blog /var/apache-vhosts/www.domain.org-blog
    <Directory /var/apache-vhosts/www.domain.org-blog/>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride All
        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

    ProxyPass        / http://localhost:8884/
    ProxyPassReverse / http://localhost:8884/
    ProxyPreserveHost on
    LogLevel debug
</VirtualHost>

您可以在官方ProxyPass文档中找到更多信息:

! 指令在您不想反向代理子目录的情况下很有用― https://httpd.apache.org/docs/2.4/mod/mod_proxy.html

最新更新