
Ich betreibe einen kleinen Webserver mit Ubuntu 12.05.5 LTS und Apache 2.2.22 und bin kürzlich auf dieses Problem gestoßen:
Für einen IIS-Server auf einer virtuellen Maschine habe ich die folgende Reverse-Proxy-Konfiguration:
<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>
Dies funktioniert einwandfrei und lässt wie erwartet nur Verbindungen aus dem Subnetz 192.168 zu.
Wenn ich jetzt die gleiche Konfiguration abzüglich SSLProxyEngine und http statt https in den ProxyPass-Direktiven verwende, erhalte ich die folgende Fehlermeldung:
[error] [client 127.0.0.1] client denied by server configuration: proxy:http://10.8.0.131/AutodeskDM/
Wenn ich hinzufüge
Allow from 127.0.
es funktioniert natürlich, aber der Zugriff ist von überall aus gestattet.
Das Spielen mit der Proxy-Direktive, wie anderswo vorgeschlagen (z. B.Apache Reverse-Proxy-Zugriffskontrolle) hat ebenfalls keine Wirkung.
<Proxy *>
Order deny,allow
Deny from all
Allow from 192.168.
</Proxy>
Ermöglicht weiterhin den Zugriff von überall.
Was übersehe ich hier? Ist das das erwartete Verhalten? Wenn ja, warum ist es mit und ohne SSL unterschiedlich?
Antwort1
Wie immer war ein anderes Programm im Weg. Ich habe OpenVPN auf Port 80 lauschen lassen und HTTP-Anfragen an Apache auf Port 8080 weiterleiten lassen. Daher sehen HTTP-Anfragen natürlich so aus, als kämen sie vom lokalen Host an Apache.