我正在运行一个使用 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 指令中的 http 而不是 https 时,出现以下错误:
[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 和没有 SSL 会有所不同?
答案1
和往常一样,另一个程序妨碍了。我让 OpenVPN 监听端口 80,并将 http 请求代理到端口 8080 上的 apache。因此,自然而然地,http 请求看起来像是从本地主机发往 apache。