【问题标题】:apache2 : how to allow access from a fileapache2:如何允许从文件访问
【发布时间】:2013-08-24 11:46:23
【问题描述】:

我想根据某些 IP 限制对文件夹的访问。

我已经知道该怎么做了

<Directory "/path/to/my/directory/">
    Order Deny,Allow
    Deny from all
    Allow from 123.123.123.1 # IP 1
    Allow from 123.123.123.2 # IP 2
    Allow from 127
</Directory>

由于我想以不同的方式管理允许的 IP 列表,我更愿意从一个文本文件中允许它们,其中 IP 可以是这样的注释:

123.123.123.1
123.123.123.2

有人知道怎么做吗?如果这是不可能的,还有其他方法可以做这样的事情吗?

P.S.:为了清楚起见,我的最终目的是获取连接到本地 VPN (OpenVPN) 的 IP,如果尚未包含该 IP,则使用该 IP 完成一个文件,然后重新启动 apache2 以便它可以考虑它们。这有点奇怪,但在同一台服务器上,我有 html 内容,我只想由 vpn 用户访问。但是即使我通过vpn,apache2看到的远程IP地址不是端点...

【问题讨论】:

    标签: apache .htaccess apache2 openvpn


    【解决方案1】:

    你不能像你想做的那样在 apache 配置中包含额外的文件,但是你可以使用 mod_rewrite 的 RewriteMap 指令来使用映射文件,或者运行一个脚本。

    例如,您可以创建地图:

    RewriteMap allow_ips txt:/path/to/ipfile.txt
    

    /path/to/ipfile.txt 中,您将拥有

    123.123.123.1  1
    123.123.123.2  1
    123.123.123.4  1
    123.123.123.10  1
    

    然后在你的目录容器中:

    重写引擎开启 RewriteCond ${allow_ips:%{REMOTE_ADDR}|0} 0 重写规则 ^ - [L,F]

    映射正在使用条件:${allow_ips:%{REMOTE_ADDR}|0}。如果远程地址在/path/to/ipfile.txt中,则映射返回“1”,否则返回“0”,满足条件,规则拒绝访问。

    这种映射的问题是您需要在每个 IP 的末尾添加一个“0”以外的内容(以便形成映射)。

    另一种选择是编写脚本并使用prg 映射类型。该脚本将在不同的文件中查找 IP 并返回适当的“1”或“0”。这有点不那么轻量级,因为脚本每次都会运行,而不是缓存的地图文件。

    【讨论】:

    • 感谢您的回答。我会检查并回信
    猜你喜欢
    • 1970-01-01
    • 2014-01-20
    • 2014-02-25
    • 2020-04-15
    • 1970-01-01
    • 1970-01-01
    • 2013-07-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多