
Я использую небольшой веб-сервер с 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 и 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 и без него?
решение1
Как всегда, другая программа вмешивалась. У меня OpenVPN прослушивает порт 80 и проксирует http-запросы на apache на порт 8080. Поэтому, естественно, http-запросы выглядят так, будто они идут с localhost на apache.