我正在尝试设置mod代理来阻止除特定域以外的所有流量。我可以使用ProxyBlock指令将其配置为阻止单个域,我可以使用ProxyBlock *阻止所有内容。有没有办法阻止除一个域之外的所有内容?
谢谢,
-Andrew
答案 0 :(得分:5)
在apache 2.2上,你需要有2个proxy
个部分。
ProxyRequests On
ProxyVia On
# block all domains except our target
<ProxyMatch ^((?!www\.proxytarget\.com).)*$>
Order deny,allow
Deny from all
</ProxyMatch>
# here goes your usual proxy configuration...
<ProxyMatch www\.proxytarget\.com >
Order deny,allow
Deny from all
Allow from 127.0.0.1
</ProxyMatch>
在apache 2.4上,它会更容易,因为您可以使用If directive而不是regexp来反转域名的匹配。
获得了正则表达式答案 1 :(得分:0)
尝试:
ProxyBlock *
ProxyPass <path> <destination>
看看是否有效。
编辑:划伤。我认为你必须使用mod_rewrite获得创意(基本参考位于http://httpd.apache.org/docs/current/rewrite/proxy.html):
RewriteCond %{HTTP_HOST} =allowtoproxy.com
RewriteRule ^/(.*)$ http://proxytarget.com/$1 [P]
ProxyPassReverse / http://proxytarget.com/
试试吗?
答案 2 :(得分:0)
试试这段代码:
RewriteEngine On
# Testing URLs
RewriteCond %{HTTP_HOST} !google.co.uk [NC]
RewriteCond %{HTTP_HOST} !bbc.co.uk [NC]
RewriteCond %{HTTP_HOST} !amazon.com [NC]
RewriteCond %{HTTP_HOST} !centos.org [NC]
RewriteCond %{HTTP_HOST} !opensuse.org [NC]
# Url to redirect to if not in allowed list
RewriteRule (.*) http://example.org/notallowed.htm