使用mod_proxy_http和mod_rewrite的时候保护Apache

我们有一个Apache服务器,作为运行在不同端口上的应用程序的代理。 例如:

domain.com/app1/service1 > localhost:101 domain.com/app1/service2 > localhost:102 domain.com/app2/service1 > localhost:201 

确定应用程序端口的规则相当复杂,所以我使用一个脚本来使用mod_rewrite来做到这一点:

 RewriteEngine On RewriteMap mapper prg:/foler/rewriteUrl.sh RewriteRule ^(.*)$ ${mapper:%{REQUEST_URI}} [P] 

我遇到的问题是查看日志,从其他网站获取内容的机器人有很多请求。 我testing了是否可以从其他服务器代理内容,我可以:

 telnet domain.com 80 GET http://www.yahoo.com/ HTTP/1.1 Host: www.yahoo.com 

在这里,我从雅虎获得内容,这意味着任何人都可以连接到我的服务器,并开始向其他服务器发送请求。

我已经看到,Apachebuild议如下所述保护您的代理:

http://httpd.apache.org/docs/trunk/mod/mod_proxy.html#access

但问题是,我不知道什么IP将使用我的服务器在高级,所以我的问题是如何解决这个问题,同时任何人都可以向我的应用程序请求?

一些额外的信息:

  • 我所有的应用程序都与我的Apache服务器在同一台机器上
  • 如果我需要移动我的应用程序到不同的服务器,他们将仍然在我的Intrantet
  • 我有mod_proxy,mod_proxy_http和mod_rewrite启用

谢谢

如果我正确理解你在做什么,你不需要一个转发代理,而是一个网关,因为你所有的代理都是从广域网到内部网的请求,也就是一个反向代理 ,为什么不直接禁用ProxyRequest呢?

 ProxyRequest Off 

ProxyRequests指令

这允许或防止Apache httpd作为转发代理服务器。 (将ProxyRequests设置为Off不会禁用ProxyPass指令的使用。)

在典型的反向代理或网关configuration中,应将此选项设置为closures。