我们有一个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将使用我的服务器在高级,所以我的问题是如何解决这个问题,同时任何人都可以向我的应用程序请求?
一些额外的信息:
谢谢
如果我正确理解你在做什么,你不需要一个转发代理,而是一个网关,因为你所有的代理都是从广域网到内部网的请求,也就是一个反向代理 ,为什么不直接禁用ProxyRequest呢?
ProxyRequest Off
ProxyRequests指令
这允许或防止Apache httpd作为转发代理服务器。 (将ProxyRequests设置为Off不会禁用ProxyPass指令的使用。)
在典型的反向代理或网关configuration中,应将此选项设置为closures。