Я запускаю небольшой веб-сервер с Ubuntu 12.05.5 LTS и Apache 2.2.22 и недавно столкнулся с этой проблемой:
Для сервера IIS на виртуальной машине у меня есть следующая конфигурация обратного прокси:
<VirtualHost *:443>
SSLEngine on
DocumentRoot /var/www/
<Directory />
Options FollowSymLinks
AllowOverride None
Order deny,allow
Deny from all
Allow from 127.0.0.1
allow from 192.168.
allow from 10.8.0
</Directory>
...
ProxyRequests Off
ProxyPreserveHost On
ProxyVia On
SSLProxyEngine on
<Location /AutodeskDM>
Order Deny,Allow
Deny from all
Allow from 192.168.
ProxyPass https://10.8.0.131/AutodeskDM
ProxyPassReverse https://10.8.0.131/AutodeskDM
</Location>
<Location /autodeskdm>
Order Deny,Allow
Deny from all
Allow from 192.168.
ProxyPass https://10.8.0.131/autodeskdm
ProxyPassReverse https://10.8.0.131/autodeskdm
</Location>
....
</VirtualHost>
Это работает отлично и разрешает соединения только с 192.168. подсеть, как и ожидалось.
Теперь, когда я использую ту же конфигурацию без SSLProxyEngine on и http вместо https в директивах ProxyPass, я получаю следующую ошибку:
[error] [client 127.0.0.1] client denied by server configuration: proxy:http://10.8.0.131/AutodeskDM/
Если я добавлю
Allow from 127.0.
работает конечно, но доступ предоставляется откуда угодно.
Игра с директивой Proxy, как предложено в другом месте (например, Контроль доступа к обратному прокси-серверу Apache) тоже не действует.
<Proxy *>
Order deny,allow
Deny from all
Allow from 192.168.
</Proxy>
По-прежнему позволяет получить доступ из любого места.
Что мне здесь не хватает? Это ожидаемое поведение? Если да, то чем отличается с SSL и без него?
Как всегда, мешала другая программа. У меня OpenVPN прослушивает порт 80 и проксирует http-запросы к apache через порт 8080. Итак, естественно, http-запросы выглядят так, как будто они идут с localhost на apache.