O Apache reporta o IP local em vez do hostname

2

Eu tenho uma configuração da seguinte forma:

Servidor Linux (OpenVZ) com IP interno 10.10.0.4  - Recipiente (10.10.0.5)  - Recipiente (10.10.0.6)

Devido ao espaço limitado de IP, só tenho um IP público mapeado para o servidor principal .4

192.168.1.2 = > 10.10.0.4 no lado da rede.

Agora, no host principal, o .4, tenho o apache executando conexões aceitáveis na porta 80, etc. Com o mod_proxy para ter hosts virtuais como esse:

<VirtualHost 10.10.0.4:80 192.168.1.2>
    ServerAdmin [email protected]
    ServerName host.example.com
    ServerAlias ct1.host.example.com

    ProxyPass / http://10.10.0.5/
    ProxyPassReverse / http://10.10.0.5/
</VirtualHost>

E há uma configuração de DNS do wild card para que * .host.example.com seja mapeado para 192.168.1.2. No container, um vhost padrão como esse é o setup:

<VirtualHost 10.10.0.5:80 *:80>
    ServerName ct1.host.example.com
    ServerAlias ct1.host.example.com
    ServerAdmin [email protected]
    DocumentRoot /var/www

    <Directory /var/www/>
      Options FollowSymLinks
      AllowOverride All
    </Directory>

    Options Indexes FollowSymLinks

    ErrorLog /var/logs/error_log
    CustomLog /var/logs/access_log common </VirtualHost>

Isso funciona bem - no entanto, todos os sites como Joomla, etc, usam alguma maneira inversa de encontrar o relatório de nome do servidor 10.10.0.5 em vez de ct1.host.example.com que eu preciso, pois isso precisa trabalhar fora do local rede. Claro que posso descobrir o código de cada uma dessas implementações, mas isso não resolve o problema que está apenas aplicando um band-aid. Eu estou em uma perda para o porquê isso está relatando o ip local de contêineres em vez do hostname.

Eu também tentei a seguinte configuração:

/ etc / hosts (em .4)

10.10.0.5   ct1.host.example.com

Então, o seguinte no vHost:

ProxyPass / http://ct1.host.example.com
ProxyPassReverse / http://ct1.host.example.com

No entanto, isso não produz nada de diferente. Há mais alguma coisa que eu preciso configurar no contêiner - talvez algum DNS, ou realmente criar DNS interno para esses IPs?

Obrigado!

    
por Marco Ceppi 05.07.2010 / 17:49

2 respostas

0

A segunda parte da minha pergunta realmente funciona - embora por causa do cache de código e da maneira como o aplicativo funcionava, não apareceu imediatamente. Criando uma entrada local no arquivo host (ou simplesmente configurando a ligação na máquina host) eu não precisaria mais passar o proxy para o IP, mas manter o nome do host assim como o Apache sendo executado nos contêineres seria como se eu digitasse o URL na barra de endereços, ao contrário do IP, que foi o que tentei anteriormente.

Acabei adicionando uma conexão ao script de criação de contêineres que adiciona o IP ao arquivo host para o nome do host do contêiner e cria um host virtual bem em um diretório conf.d que o Apache seleciona.

Obrigado por aqueles que olharam para isso.

    
por 07.07.2010 / 05:12
1

Estou tentando descobrir por que você está usando mod_proxy para isso. Os hosts virtuais baseados em nome não são adequados para seu caso de uso por algum motivo?

    
por 05.07.2010 / 21:42