
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 ServerAlias
deve remover http://
a parte que não é necessária, sem falar que, como a sua ServerName
é igual a ServerAlias
, ServerAlias
simplesmente não é necessária.