Вопрос: Управление доступом к обратному прокси-серверу Apache


У меня есть обратный прокси-сервер Apache, который в настоящее время обращается к нескольким сайтам. Однако теперь я собираюсь добавить новый сайт (позвоните ему newsite.com), который должен быть доступен только определенным IP-адресам. Является ли это выполнимым, используя Apache как обратный прокси?

Я использую VirtualHosts для сайтов, которые являются проксимитированными. Я попытался использовать директивы Allow / Deny в сочетании с инструкциями Location. Например:

<VirtualHost *:80>  
Servername newsite.com   
<Location http://newsite.com>
Order Deny,Allow
Deny from all
Allow from x.x.x.x
</Location>
<IfModule rewrite_module>
 RewriteRule ^/$ http://newsite.internal.com [proxy]
</IfModule>

Я также попытался настроить allow / deny specicaily для сайта в директивах Proxy, например

<Proxy http://newsite.com/>
  Order deny,allow
  Deny from all
  Allow from x.x.x.x
</Proxy>

Тем не менее, я все еще использую это определение для остальных прокси-сайтов.

<Proxy *>
  Order deny,allow
  Allow from all
</Proxy>

Независимо от того, что я делаю, это кажется доступным из любого места. Это из-за определения для всех других прокси-сайтов. Есть ли порядок, к которому он применяет директивы Proxy. У меня был газетный номер как до, так и после *, а также в заявлении VirtualHost.


8
2018-04-09 06:00


Источник




Ответы:


Ты используешь Имя сервера а также ServerAlias для сопоставления newsite.com.

Вам следует НЕ используйте для конфигурации обратного прокси-сервера директиву:

<Proxy whatever>

Вы должны использовать:

Для apache 2.2:

<Location />
Order Deny,Allow
Deny from all
Allow from x.x.x.x
</Location>

Для apache 2.4:

<Location />
   <RequireAny>
       Require             ip x.x.x.x/255.255.255.0
       Require ...
</Location>

После выполнения Authz вам просто нужно сделать ProxyPass и ProxyPassReverse (для 302 301 переадресаций):

ProxyPass /  http://newsite.com/
ProxyPassReverse /  http://newsite.com/

Имейте в виду, что с этим вам нужно добавить newsite.com в ваш / etc / hosts или что dns должен разрешить хост в URL-адресе. Вы также можете использовать только IP-адрес, но вы должны указать сервер httpd, который сохраняет заголовок «Host:», с помощью:

ProxyPreserveHost On

2
2017-07-16 14:02





сегодня была аналогичная проблема; Было связано с тем, как выполняется сопоставление подстановочных знаков, я думаю, что он использует полный URL-адрес: в моем случае я

<Proxy /jira*>
  Order allow,deny
  Deny from all
</Proxy>
ProxyPass /jira https://myhost.com

и это не сработало. Сайт был доступен из любого места. Я попробовал пару вещей и нашел рабочую версию:

<Proxy *jira*>

Поэтому в вашем случае попробуйте

<Proxy http://newsite.com*>

чтобы убедиться, что apache соответствует этому URL-адресу.


0
2018-01-05 12:04





<VirtualHost *:80>
    Servername newsite.com

    <Proxy *>
            Order Deny,Allow
            Deny from all
            Allow from x.x.x.x
    </Proxy>

    ProxyPass /  http://newsite.com/
    ProxyPassReverse /  http://newsite.com/

</VirtualHost>

0
2017-11-26 15:47



Что это делает, и почему это так? - sysadmin1138♦
Это обратный прокси-сервер, доступный только для определенного IP-адреса (который определяется путем замены «x» на Разрешить от x.x.x.x). - dr0i