VirtualServer reverseeproxy在本地工作,但不是来自客户端

安装程序:2 Webservers指向127.0.0.1:8080和:8081。 curlvalidation他们按预期工作。 Apache与以下虚拟主机:

NameVirtualHost 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> NameVirtualHost 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> 

在服务器上,我可以curl到虚拟主机并接收适当的响应。 (curl 192.168.1.1给了我来自localhost:8080的webservers响应等)

远程主机不能连接到192.168.1.1或.2。 我错过了什么?

Re:评论

是的,默认目录指令仍然存在。

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

尝试远程访问192.168.1.1时,不会生成apache日志。 当它们从本地curl时,它们会产生。

如果我把web服务器指向*:8080和*:8081,而不是绑定到本地主机,我可以通过192.168.1.1和192.168.1.2从远程主机访问它们,如果我指定了8080和8081端口(两个端口在两个IP ,这是我试图避免与Apache反向代理绑定到80在每个接口上)

EDIT2:

curl详细输出:(类似的第二个networking服务器,并为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> 

从请求本地login

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

没有apache访问日志或错误日志时,请求来自远程客户端。

EDIT3

curl和login到两个虚拟主机是完全相同的,除了使用的IP地址。 工作与安全pipe理员获取更多信息的locking规则。 我感谢你们的时间。

由于proxypass安装完全在(虚拟)URL空间中运行,因此您需要通过Location指令授予对每个vhost的访问权限:

 <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> 

此外,摆脱NameVirtualHosts,如果你不使用它们,一个ServerName必须是一个主机名,没有计划或端口或任何其他。 只是一个主机名。

你能提供:

  • curl语法/输出(使用详细)
  • 日志从apache
  • ifconfig输出
  • 猫/ etc / hosts
  • 防火墙规则集
  • SELinux启用/禁用?

*更新*

ServerAlias你应该删除http://部分,不要说,因为你的ServerNameServerAlias相同, ServerAlias只是不需要。