Um endereço IP, dois sites, em duas máquinas - Detalhes necessários

3

Esta questão já foi postada por outro usuário, mas uma resposta detalhada não foi dada. Aqui está o link para a pergunta original - Um endereço IP, dois sites, em duas máquinas

Eu tenho duas máquinas, cada uma com o apache2 instalado e endereços IP estáticos.

Servidor 1

example.com
static ip = 192.168.0.6
apache2 running on ports 80 and 443 fine
ufw and router firewall are open on ports 80 and 443 as well

Servidor 2

domain name = myhost01.example.com 
static ip = 192.168.0.7
apache2 running on 8080(HTTP) and 8443(HTTPS) 
ufw and router firewall are open on ports 8080 and 8443

Quando eu vou para {http) www.example.com ou (https) www.example.com - recebo corretamente o conteúdo da Web para o servidor 1

Quando vou para myhost01.example.com:8080 ou myhost01.example.com:8443 - recebo corretamente o conteúdo da Web para o servidor 2

Eu gostaria de reverter o servidor proxy 2, assim, quando um usuário acessa http: // myhost01 .example.com /, ele recebe o conteúdo de http: // myhost01. example.com:8080/, basicamente escondendo o número da porta. Atualmente, eu recebo um erro "não é possível conectar / página da Web não encontrado", quando eu tento acessar myhost01 (ponto) exemplo (ponto) com

No arquivo do Host virtual de example.com, usei o seguinte:

ProxyRequests Off

ProxyPass / http://myhost01. example.com:8080/
ProxyPassReverse / http://myhost01 .example.com:8080/

Os módulos proxy e proxy_http estão habilitados no apache2

Alguma idéia de como fazer isso funcionar?

P.S. - Espaços foram adicionados aos URLs porque não tenho pontos de reputação suficientes para postar mais de dois URLs.

** UPDATE - Veja as notas abaixo

Server1 - example.com - VHOST FILE

<VirtualHost *:80>

    ServerAdmin [email protected]
    ServerName example.com
    ServerAlias www.example.com

    DocumentRoot /myweb/cmweb/apache/http

#ProxyPreserveHost On
ProxyRequests Off
ProxyPass / http://myhost01.example.com:8080/
ProxyPassReverse / http://myhost01.example.com:8080/

        <Directory />
                Options Indexes FollowSymLinks
                AllowOverride None
        </Directory>
        <Directory /myweb/cmweb/apache/http/>
                Options Indexes FollowSymLinks MultiViews
                AllowOverride None
                Order allow,deny
                allow from all

        </Directory>

        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined
        LogLevel warn

</VirtualHost>

Tentei Proxy com 192.168.0.7 substituindo myhost01 (ponto) exemplo (ponto) com sem sucesso

Server2 - exemplo myhost01 (ponto) (ponto) com Arquivo VHOST

 <VirtualHost *:8080>

    ServerAdmin [email protected]
    ServerName myhost01.example.com
    ServerAlias myhost01 myhost01.example.com

    DocumentRoot /mwdhost/cmweb/apache/http

        <Directory />
                Options FollowSymLinks
                AllowOverride None
        </Directory>
        <Directory /mwdhost/cmweb/apache/http/>
                Options Indexes FollowSymLinks MultiViews
                AllowOverride None
                Order allow,deny
                allow from all
        </Directory>

    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
    LogLevel warn

</VirtualHost>

myhost01 foi adicionado a um registro de registrante de domínio pode fazer um NSLOOKUP e obter o endereço IP externo correto para myhost01.example.com

Aqui abaixo está o Apache Error.log para server1 - pode ser uma pista para os meus problemas ???

Sun Feb 02 18:24:52 2014] [error] (111)Connection refused: proxy: HTTP: attempt to connect to 54.43.138.12:8080 (myhost01.example.com) failed
[Sun Feb 02 18:24:52 2014] [error] ap_proxy_connect_backend disabling worker for (myhost01.example.com)
[Sun Feb 02 18:24:53 2014] [error] proxy: HTTP: disabled connection for (myhost01.example.com) 
[Mon Feb 03 07:33:54 2014] [warn] Init: Name-based SSL virtual hosts only work for clients with TLS server name indication support (RFC 4366)
    
por Cmweb 02.02.2014 / 23:18

2 respostas

0

Sugestões:

Verificado que server1 (example.com) pode procurar e obter um registro de dns correto para myhost01.example.com ?

Os seus servidores têm um IP público cada e um interno? Ou é como a pergunta vinculada que você tem um IP?

Eu sinto o cheiro de um roteador barato que tem um IP, corre nat e encaminhamento de porta nas portas mencionadas?

  • Geralmente é com roteadores baratos que eles têm problemas ao combinar nat e portforwarding usando endereços externos para acessar outras máquinas internas. Alguns também falham isso de propósito, já que é uma má prática enviar toda a sua carga interna ao seu roteador gateway / nat.

Os dois registros de DNS (myhost1.example.com e example.com) apontam para o mesmo IP público?

  • sim, e isso é intencional e correto, mas o que acontece?

    • Quando a instância do Apache deseja pesquisar onde fazer a conexão do proxy, será informado ao IP externo de myhost01.example.com que está apontando para o roteador que pode falhar na conexão. Vamos supor que faz.

Encontramos um possível erro, como podemos contorná-lo?

  • Como o IP externo do dns não ajudará o server1 a encontrar o IP local para passar pela rede local, precisamos de uma maneira de fazê-lo, felizmente existem muitas maneiras para Roma.

    • Uma maneira seria usar o IP local do server2 no ProxyPass.
    • Outra maneira seria simplesmente substituir suas respostas do DNS. Isso pode ser feito no server1 que serve como proxy. Edite o arquivo /etc/hosts . Mais informações sobre o arquivo hosts podem ser lidas aqui.
    • Uma terceira forma seria criar registros de DNS adicionais para seus servidores locais. Por exemplo, uma entrada chamada por exemplo. local2.example.com apontando para 192.168.0.7 .

Nota. Se você se perguntou, é totalmente possível ter mais IPs públicos e executá-los em uma pequena sub-rede, por exemplo. que também servirá como interconexão. Pensei que não é muito recomendado fazê-lo.

Aviso de isenção

Esta resposta é baseada em um palpite experiente, como configuração completa, os logs do Apache e erros estão faltando a partir da resposta. Sinta-se à vontade para melhorar.

    
por Anders F. U. Kiær 03.02.2014 / 02:29
0

Sua abordagem parece um exagero.

Todos os servidores da Web modernos permitirão que você conecte vários sites a um único endereço IP e porta. Isso é feito configurando o nome do cabeçalho do host para os respectivos sites.

Além disso, você pode apontar vários sites SSL para o mesmo endereço IP e porta (443 ou qualquer outro) pelo uso de SNI. Navegadores mais antigos não suportam SNI, mas isso pode não ser uma preocupação para você.

Conectar um dos sites à porta 8080 e, em seguida, conectar um proxy sobre ele é o caminho mais longo, a menos que exista uma necessidade explícita de a porta 8080 ser exposta a um cliente de alguma forma.

Sendo o cara ocupado que sou, não gasto muito tempo na configuração do Apache, a menos que seja absolutamente necessário. Caso contrário, eu uso o Virtualmin ( link ) e ele lida com 85% do trabalho sujo para essa configuração.

    
por Xavier J 03.02.2014 / 22:04