Proxy de outro domínio para um virtualhost

1

Os dois primeiros vhosts funcionam conforme o esperado. O segundo proxy é um servidor Odoo. Eu gostaria de fazer outro proxy do meu domínio secundário para o meu servidor Odoo. No entanto, Odoo deve receber o subdomínio correspondente ao banco de dados, caso contrário, ele não será exibido.

Aqui está meu código por enquanto:

# 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>

Eu não estou realmente interessado em gerenciamento de servidores, então não sei muito (mesmo depois de ler os documentos).

Esqueci de mencionar o que recebo em resposta:

  • secondary-domain.com me dá um erro de proxy 502
  • some_database.mydomain.fr funciona como esperado

Se eu colocar o terceiro <VirtualHost/> bloc na segunda posição, todo o site mydomain.fr ficará lento e isso não resolverá o 502 Proxy Error para o meu domínio secundário.

Se eu citar a diretiva ProxyPreserveHost , ir para secondary-domain.com leva a secondary-domain.com, some_database.mydomain.fr ... O que está acontecendo aqui?

Eu preciso de confirmação de que isso pode ser feito e que minha configuração está fazendo isso:

  1. O usuário solicita secondary-domain.com
  2. Terceira entrada do vhost faz proxy da solicitação para some_database.mydomain.fr
  3. A segunda entrada do vhost envia por proxy a solicitação para mydomain.fr:8069
por Yann 10.05.2016 / 10:26

1 resposta

1

The first two vhosts works as expected.

Mais ou menos. Eles compartilham o mesmo ServerName, o que não faz sentido, pois o que é único sobre um vhost é a combinação de port + servername.

O Apache aqui está silenciosamente usando a primeira definição de vhost quando recebe um link ou link . Para todos os outros * .mydomain.fr, ele usará o segundo vhost. Qual é o que você quer, eu acho, mas é explicitamente escrito e propenso a erros de diagnóstico.

However, Odoo must receive the subdomain matching the database, else it won't serve it.

Esse é o propósito de "ProxyPreserveHost On", ele passa o nome usado pelo cliente HTTP até o aplicativo atrás do proxy reverso. Use-o no seu segundo vhost.

Seu terceiro vhost parece bem (ele tem tem o "ProxyPreserveHost On").

    
por 10.05.2016 / 13:59