Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to configure mod_proxy to block every site except one

I'm trying to set up mod proxy to block all traffic except to a specific domain. I can configure it to block individual domains using the ProxyBlock directive, and I can block everything using ProxyBlock *. Is there a way to block everything but one domain?

Thanks,

-Andrew

like image 951
abudker Avatar asked May 25 '11 19:05

abudker


2 Answers

On apache 2.2 you need to have 2 proxy sections.

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>

On apache 2.4 it would be much easier because you could use the If directive instead of that regexp to invert the match for the domain name.

Note: I got that regexp from Invert match with regexp

like image 106
schettino72 Avatar answered Sep 29 '22 11:09

schettino72


Try:

ProxyBlock *
ProxyPass <path> <destination>

See if that works.

EDIT: scratch that. I think you have to get creative here with mod_rewrite (the basic reference is at http://httpd.apache.org/docs/current/rewrite/proxy.html):

RewriteCond  %{HTTP_HOST}    =allowtoproxy.com
RewriteRule  ^/(.*)$         http://proxytarget.com/$1 [P]
ProxyPassReverse / http://proxytarget.com/

Try that?

like image 36
Femi Avatar answered Sep 29 '22 10:09

Femi