Как настроить mod_proxy для блокировки всех сайтов кроме одного - PullRequest
4 голосов
/ 25 мая 2011

Я пытаюсь настроить мод-прокси, чтобы блокировать весь трафик, кроме определенного домена. Я могу настроить его для блокировки отдельных доменов, используя директиву ProxyBlock, и могу блокировать все, используя ProxyBlock *. Есть ли способ заблокировать все, кроме одного домена?

Спасибо

-Эндрю

Ответы [ 3 ]

5 голосов
/ 21 марта 2012

На 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 вместо этого регулярного выражения, чтобы инвертировать совпадение для имени домена.

Примечание: я получил это регулярное выражение из Инвертировать совпадение с регулярным выражением

0 голосов
/ 24 октября 2011

Попробуйте этот код:

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
0 голосов
/ 25 мая 2011

Попробуйте:

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/

Попробуйте это?

...