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

前两个虚拟主机按预期工作。 第二个代理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 xxxx </Location> 

我没有真正进入服务器pipe理,所以我不太了解(甚至在阅读文档之后)。


忘了提到我得到的回应:

  • 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. 第三个虚拟主机条目将请求代理到some_database.mydomain.fr
  3. 第二个虚拟主机条目将请求代理到mydomain.fr:8069

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

有点。 他们共享相同的服务器名称是没有意义的,因为什么是唯一的虚拟主机是端口+服务器名称组合。

当Apache收到一个http://mydomain.fr或者http://www.mydomain.fr/时,实际上默默地使用了第一个虚拟主机定义&#x3002; 对于所有其他* .mydomain.fr它将使用第二个虚拟主机。 这是你想要的,我猜,但它是一个写作,并容易产生诊断错误。

但是,Odoo必须接收与数据库匹配的子域名,否则将不会提供该域名。

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

你的第三个虚拟主机似乎没问题(它有“ProxyPreserveHost开”)。