O proxy reverso em 127.0.0.1 funciona localmente, mas não na rede

O proxy reverso em 127.0.0.1 funciona localmente, mas não na rede

Dois servidores web, vinculados a 127.0.0.1:8080 e 127.0.0.1:8081. Curl valida que eles funcionam conforme o esperado.

Apache com os seguintes hosts:

Host 192.168.1.1:80

<VirtualHost 192.168.1.1:80>
  ServerAdmin [email protected]
  ProxyPass             /       http://127.0.0.1:8080/
  ProxyPassReverse      /       http://127.0.0.1:8080/
  ServerName 192.168.1.1
  ServerAlias http://192.168.1.1
</VirtualHost>

Host 192.168.1.2:80

<VirtualHost 192.168.1.2:80>
  ServerAdmin [email protected]
  ProxyPass             /       http://127.0.0.1:8081/
  ProxyPassReverse      /       http://127.0.0.1:8081/
  ServerName 192.168.1.2
  ServerAlias http://192.168.1.2
</VirtualHost>

No servidor posso acessar os hosts e receber a resposta apropriada. (curl 192.168.1.1 me dá a resposta do servidor web de localhost:8080)

Hosts remotos não conseguem se conectar a 192.168.1.1 ou .2. o que estou perdendo?

Ré: comentários

Sim, a diretiva de diretório padrão ainda está em vigor.

# Deny access to root file system
<Directory />
        Options None
        AllowOverride None
        Order Deny,Allow
        deny from all
</Directory>

Nenhum log do Apache é gerado ao tentar acessar 192.168.1.1 remotamente. Eles são gerados quando curl do local.

Se eu vincular os servidores da Web a *:8080 e *:8081 em vez de vincular ao host local, poderei acessá-los de um host remoto via 192.168.1.1 e 192.168.1.2.

Editar 2:

saída detalhada curl: (semelhante para o segundo servidor web e para 127.0.0.1:portnum)

[user@host mingle_12_2_1]$ curl -v 192.168.1.1
* About to connect() to 192.168.1.1 port 80
*   Trying 192.168.1.1... connected
* Connected to 192.168.1.1 (192.168.1.1) port 80
> GET / HTTP/1.1
> User-Agent: curl/7.15.5 (x86_64-redhat-linux-gnu) libcurl/7.15.5 OpenSSL/0.9.8b zlib/1.2.3 libidn/0.6.5
> Host: 192.168.1.1
> Accept: */*
>
< HTTP/1.1 302 Found
< Date: Tue, 16 Oct 2012 16:22:08 GMT
< Server: Jetty(6.1.19)
< Cache-Control: no-cache
< Location: http://192.168.1.1/install
< X-Runtime: 130
< Content-Type: text/html; charset=utf-8
< Content-Length: 94
< Connection: close
Closing connection #0
<html><body>You are being <a href="http://192.168.1.1/install">redirected</a>.</body></html>

log da solicitação local

192.168.1.1 - - [16/Oct/2012:12:22:08 -0400] "GET / HTTP/1.1" 302 94

nenhum log de acesso do Apache ou log de erros gerado quando solicitações de clientes remotos.

Editar 3

curl e logs para ambos os hosts são idênticos, exceto pelo endereço IP usado. Trabalhando com administradores de segurança para obter as regras bloqueadas e obter mais informações.

Responder1

Como uma configuração de proxypass opera inteiramente no espaço URL (virtual), você precisa conceder acesso a cada vhost por meio de uma diretiva Location:

<VirtualHost 192.168.1.1:80>
  ServerAdmin [email protected]
  ProxyPass / http://127.0.0.1:8080/
  ProxyPassReverse / http://127.0.0.1:8080/
  ServerName 192.168.1.1
  <Location />
    Order allow,deny
    Allow from All
  </Location>
</VirtualHost>

Além disso, livre-se dos NameVirtualHosts se não os estiver usando, e um ServerName deve ser um nome de host, não há esquema ou porta ou qualquer outra coisa. Apenas um nome de host.

Responder2

você pode prover:

  • sintaxe/saída curl (use detalhado)
  • registros do apache
  • saída ifconfig
  • gato /etc/hosts
  • conjunto de regras de firewall
  • SELinux ativar/desativar?

* ATUALIZAR *

você também ServerAliasdeve remover http://a parte que não é necessária, sem falar que, como a sua ServerNameé igual a ServerAlias, ServerAliassimplesmente não é necessária.

informação relacionada