proxyapachemod-proxy

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


Solution

  • 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