Apache 反向代理基于位置的访问控制不起作用

Apache 反向代理基于位置的访问控制不起作用

我正在运行一个使用 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。

相关内容