
私は Ubuntu 12.05.5 LTS と Apache 2.2.22 を使用して小規模な Web サーバーを実行していますが、最近次のような問題に遭遇しました。
仮想マシン上の 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 をオフにして同じ設定を使用し、ProxyPass ディレクティブで https の代わりに http を使用すると、次のエラーが発生します。
[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 でリッスンし、ポート 8080 で Apache に HTTP リクエストをプロキシしています。そのため、当然、HTTP リクエストはローカルホストから Apache に送られているように見えます。