从另一个域到虚拟主机的代理

从另一个域到虚拟主机的代理

前两个虚拟主机按预期工作。第二个虚拟主机代理一个 Odoo 服务器。我想从我的辅助域到我的 Odoo 服务器再创建一个代理。但是,Odoo 必须接收与数据库匹配的子域,否则它将无法为其提供服务。

这是我现在的代码:

# static homepage

<VirtualHost *:80>
    ServerName mydomain.fr
    ServerAlias www.mydomain.fr
    DocumentRoot /var/www/odoo
</VirtualHost>


# wildcard proxy for odoo:
# one subdomain -> one database

<VirtualHost *:80>
    ServerName mydomain.fr
    ServerAlias *.mydomain.fr

    ErrorLog /var/log/odoo/odoo-error.log
    CustomLog /var/log/odoo/odoo-access.log combined
    LogLevel warn

    <Proxy *>
        Order deny,allow
        Allow from all
    </Proxy>

    ProxyRequests Off
    ProxyPass / http://mydomain.fr:8089/
    ProxyPassReverse / http://mydomain.fr:8089/

    ProxyVia On
</VirtualHost>


# a secondary domain
# should point to a specific database

<VirtualHost *:80>
    ServerName www.secondary-domain.com
    ServerAlias secondary-domain.com

    ProxyRequests Off
    ProxyPreserveHost On
    ProxyPass / http://some_database.mydomain.fr
    ProxyPassReverse / http://some_database.mydomain.fr

    ProxyVia On
</VirtualHost>


################
# restrictions #
################

<Location /web/database>
    Order deny,allow
    Deny from all
    Allow from x.x.x.x
</Location>

我并不是特别了解服务器管理,所以我了解的也不多(即使阅读了文档之后)。


忘记提及我得到的答复:

  • secondary-domain.com出现 502 代理错误
  • some_database.mydomain.fr按预期工作

如果我将第三个<VirtualHost/>块放在第二个位置,整个网站 mydomain.fr 就会滞后,而且这并不能解决我的二级域名的 502 代理错误。

如果我引用该ProxyPreserveHost指令,将secondary-domain.com导致secondary-domain.com, some_database.mydomain.fr...这里发生了什么?


我需要确认这可以完成并且我的设置正在执行此操作:

  1. 用户要求secondary-domain.com
  2. 第三个 vhost 条目将请求代理到some_database.mydomain.fr
  3. 第二个 vhost 条目将请求代理到mydomain.fr:8069

答案1

前两个虚拟主机按预期工作。

有点。它们共享相同的 ServerName,这没有意义,因为 vhost 的独特之处在于端口+服务器名称的组合。

Apache 在收到http://mydomain.fr或者http://www.mydomain.fr/。对于所有其他 *.mydomain.fr,它将使用第二个虚拟主机。我想这正是您想要的,但它写得不太好,而且容易出现诊断错误。

但是,Odoo 必须接收与数据库匹配的子域,否则它将无法为其提供服务。

这就是“ProxyPreserveHost On”的目的,它将 HTTP 客户端使用的名称传递给反向代理后面的应用程序。在您的第二个虚拟主机中使用它。

你的第三个虚拟主机看起来不错(它有“ProxyPreserveHost On”)。

相关内容