Encontrei outra maneira de resolver o meu problema, chamado mod_proxy_express e está disponível no Apache 2.4. É capaz de mapear um grande número de domínios para seus IPs usando um banco de dados.
Eu sei como usar o mod_rewrite do Apache de uma forma comum, mas agora estou tentando usá-lo de uma maneira diferente, que não foi um sucesso até o momento. Aqui está o que eu escrevi:
RewriteEngine on
RewriteMap lowercase int:tolower
RewriteCond %{lowercase:%{HTTP_HOST}} ^([^.]+)\.internal$
RewriteRule ^(.*)$ http://%1.local$1
E aqui está a história toda:
Eu adicionei duas linhas ao meu arquivo hosts
da seguinte forma:
127.0.0.1 test.local
127.0.0.1 test.internal
Eu também adicionei um host virtual para test.local
no meu Apache e criei um arquivo para que a URL http://test.local/info.php
imprimisse a configuração e outras coisas do PHP. Agora vamos voltar para as diretivas do mod_rewrite; Eu estava esperando, escrevendo o que escrevi no início do post, quando eu abrir o URL http://test.internal/info.php
, ele será servido pelo script test.local/info.php
. Alguém pode me dizer o que eu fiz de errado?
BTW, eu escrevi as diretivas fornecidas no arquivo de configuração principal do Apache, não em um host virtual e eu insisto nisso.
[UPDATE]
Adicionei as duas linhas seguintes ao arquivo de configuração do Apache para poder depurar o comportamento de Rewrite
:
RewriteLog "/tmp/rewrite.log"
RewriteLogLevel 9
Eu tenho alguns hosts virtuais nesta máquina que usam Rewrite
e quando os visito, devido a essas duas linhas, um arquivo de log é criado no caminho especificado. Mas quando eu visito http://test.internal/info.php
nenhum arquivo de log é criado.
[UPDATE]
Vou esclarecer meu objetivo, talvez eu esteja fazendo tudo errado do zero.
Eu tenho vários VPSs hospedando um site diferente. E todos eles residem em uma rede local e eu quero adicionar um frontend a essa coleção de sites para que eles possam ser acessados pela Internet. Mas a questão é que os membros dessa coleção são adicionados ou removidos dinamicamente, portanto, não quero modificar meu DSN e / ou o arquivo de configuração do servidor proxy reverso toda vez que algo é alterado. Eu posso usar um curinga no servidor DNS para direcionar todas as solicitações para um domínio específico para o frontend (o servidor proxy reverso) e então será até o frontend para redirecionar a solicitação para o VPS apropriado usando seu subdomínio (cada subdomínio é atribuído a um VPS logicamente). Para esse fim, configurarei um DNS local mapeando alguns nomes de domínio fictícios para IPs de VPS internos. Tudo o que resta é que o servidor proxy reverso deve reescrever o URL do pedido para que ele corresponda aos domínios fictícios.
A única parte desta solução que não consigo entender é como dizer ao Apache para mapear o domínio das requisições recebidas para as dummy!
Alguma sugestão?
Encontrei outra maneira de resolver o meu problema, chamado mod_proxy_express e está disponível no Apache 2.4. É capaz de mapear um grande número de domínios para seus IPs usando um banco de dados.
Tags mod-rewrite apache-2.2