Virtualbox + NAT Apache ProxyPass

0

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
    
por talkinggoat 17.08.2017 / 14:48

1 resposta

0

Descobri que o problema estava no servidor proxy. Eu esqueci que o Apache processa as coisas na ordem em que aparecem, então eu precisei colocar / faturar na frente do /. Por exemplo, no arquivo conf do domínio,

ProxyPass /billing http://hoststmachine:2080/billing/

ENTÃO

ProxyPass / http://hostmachine:12000/
    
por talkinggoat 17.08.2017 / 23:50