Назад | Перейти на главную страницу

Прокси из другого домена на виртуальный хост

Первые два хоста работают должным образом. Второй прокси-сервер 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>

Я не особо занимаюсь управлением серверами, поэтому мало что знаю (даже после прочтения документации).


Забыл упомянуть, что я получаю в ответ:


Если я поставлю третий <VirtualHost/> bloc во второй позиции, весь сайт 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

Первые два хоста работают должным образом.

Вид. Они используют одно и то же имя сервера, что не имеет смысла, поскольку уникальность виртуального хоста - это комбинация порт + имя сервера.

Apache здесь фактически молча использует первое определение vhost, когда получает http://mydomain.fr или http://www.mydomain.fr/. Для всех остальных * .mydomain.fr будет использоваться второй виртуальный хост. Я думаю, это именно то, что вам нужно, но он неуклюже написан и подвержен диагностическим ошибкам.

Однако Odoo должен получить поддомен, соответствующий базе данных, иначе он не будет его обслуживать.

Это цель «ProxyPreserveHost On», он передает имя, используемое HTTP-клиентом, в приложение за обратным прокси-сервером. Используйте его во втором виртуальном хосте.

Ваш третий vhost кажется нормальным (он делает иметь "ProxyPreserveHost On").