Por favor, me diga o que estou fazendo de errado. Eu tenho uma configuração onde o apache escuta em uma interface externa, hospeda um domínio e atua como um proxy para alguns servidores internos. Na maior parte, isso funciona perfeitamente. Quando uma URL específica corresponde à diretiva proxypass, o apache encaminha para o site interno. No entanto, estou tentando usar o NAT para encaminhar para outro servidor virtual, mas ele continua encaminhando para o host, mas apenas do lado de fora. Por exemplo, esta é a configuração do proxy:
<VirtualHost *:80>
ServerName example.com
O host atende na porta 12000 com o nome example.com. ProxyPass encaminha a raiz do domínio para o computador, hostmachine
ProxyPass / http://hostmachine:12000/
O proxy encaminha / fatura para a porta 2080 na máquina host, que é encaminhada, usando o vbox NAT, da porta 2080, para a porta 80, sob o nome example.com/billing
ProxyPass /billing http://hostmachine:2080/billing/
Estou usando o NAT para encaminhar a porta 2080 no host para a porta 80 do servidor virtual.
vboxmanage showvminfo server1
...
NIC 1 Rule(0): name = http, protocol = tcp, host ip = , host port = 2080, guest ip = , guest port = 80
Aqui está o problema, quando eu direciono um navegador interno (mesmo o proxyserver) para o hostmachine: 2080, recebo o arquivo html esperado do server1 virtual. Quando eu tento acessá-lo do lado de fora, roteando através do proxy eu recebo o arquivo html da hostmachine
De um computador interno:
telnet hostmachine 2080
Trying 10.28.45.100...
Connected to hostmachine.
Escape character is '^]'.
GET /billing/index.html
test billing server1
Connection closed by foreign host.
De um navegador externo:
http://example.com/billing
test billing hostmachine
Do lado de fora, é isso que deve acontecer
example.com:80/billing -> ProxyPass -> hostmachine:2080 -> 2080:NAT:80 -> server1:80/billing
O que está acontecendo
example.com:80/billing -> ProxyPass -> hostmachine:80