【问题标题】:wrap apache virtual host around another (proxy)将 apache 虚拟主机包裹在另一个(代理)周围
【发布时间】:2019-03-12 09:24:33
【问题描述】:

假设我有英文网站 www.x.com,然后是德文 www.x.de,我想要做的是将所有变体指向主要虚拟主机,并带有一些隐藏参数,如 ?lang=de 但是还具有某些文件的优先级,例如德语版本上是否存在徽标使用德语徽标,否则 x.com 虚拟主机中的文件。

到目前为止,我有多个主机,除了没有使用虚拟主机之外,我有多个主机,除了没有使用虚拟主机,并且变异站点使用代理脚本来调用主页,但是例如,如果图像存在于变异主机上,则使用它,否则来自代理。

作为新的解决方案,我想将代理脚本放在多个主机上,并在 VPS 上使用 apache 虚拟主机。

我知道应该(?)可以在服务器上的一个文件夹(虚拟主机)上指向多个别名或多个域(顺便说一句,如何传递 lang url 参数?)但问题是:

是否有可能有虚拟主机A,然后虚拟主机B实际上使用虚拟主机A,但如果虚拟主机B文件夹中存在某些请求的文件,则使用它(如提到的徽标文件)?

第二种解决方案是将所有域指向一个虚拟主机并以某种方式更改站点脚本以使用特定语言的某些图像子文件夹,但我想知道前一种方法是否可行。

【问题讨论】:

    标签: apache virtualhost


    【解决方案1】:

    使用mod_rewrite,您应该能够获取参数,即使只有一个VirtualHost。但请记住,如果不使用 SAN 证书,您将在 SSL VirtualHosts 中遇到问题。否则,您可以将两个单独的 VirtualHosts 与适当的证书一起使用。徽标部分可能也可以使用,但维护起来可能负担过重。

    ServerName www.example.com
    ServerAlias www.example.de
    
    RewriteEngine On
    
    # When using two VHosts you don't need this Cond or the [C] flag
    RewriteCond %{HTTP_HOST} www.example.de
    RewriteRule ^(.*\.php)$ $1?lang=de [C]
    
    RewriteCond "$1-de\.jpg" -f
    RewriteRule ^(logo).jpg$ logo-de.jpg
    

    【讨论】:

    • 感谢回复。所以我正在考虑一个具有多个别名的 VH(但随后存在 SSL 问题),或者多个 VH 每个都有自己的 SSL 证书但所有相同的文档根目录呢? (然后继续修复自己的文件)
    • 它们中的任何一个都应该可以工作,但是使用多个 VHost,您在添加域时不必更新昂贵的 SAN 证书。
    猜你喜欢
    • 1970-01-01
    • 2010-10-07
    • 1970-01-01
    • 2021-08-16
    • 2016-06-30
    • 2021-03-02
    • 2014-05-28
    • 1970-01-01
    • 2016-08-22
    相关资源
    最近更新 更多