基于 URL 和文件的访问控制

基于 URL 和文件的访问控制

我有一个旧的 Web 应用程序,需要根据 URL 设置访问控制。

只有两种可能性:允许所有人或允许我的域。

我相信我可以做类似的事情:

<Location /app/one-part>
   Allow from all
</Location>

<Location /app/another-part>
   Allow from .foo.tld
</Location>

<Location /app/yet-another-part>
   Allow from .foo.tld
</Location>

....

问题是这个特定的应用程序有数百个/app/thinguieURL,我不想像上面所示的那样对它们全部进行编码。

有没有办法做类似的事情

<Location from file dom.txt>
   Allow from .foo.tld
</Location>

<Location from file all.txt>
   Allow from All
</Location>

以及列出的两个文件/app/whatevers

提前致谢。

哦,顺便说一句,没有模式,因此没有正则表达式可以用来优雅地过滤。:(

答案1

apache 指令“Location”仅接受 URL 路径或 URL 作为参数,无法读取外部列表。我建议创建一个脚本来生成自定义 conf,您可以将其包含在 apache conf 中。

例子:

[sparx@E1]$ cat file-foo.txt
/my/local
/my/src
/my/local/src
[sparx@E1]$ 

现在创建一个简单的 bash 脚本来生成自定义配置。

#!/bin/bash
for x in `cat file-foo.txt`
do
echo "<Location $x>"
echo "Allow from .foo.tld"
echo "<\Location>"
done

现在执行脚本并将输出重定向到 my-foo.conf

[sparx@E1]$ ./apgen.sh > my-foo.conf
[sparx@E1]$ cat my-foo.conf
<Location /my/local>
Allow from .foo.tld
<\Location>
<Location /my/src>
Allow from .foo.tld
<\Location>
<Location /my/local/src>
Allow from .foo.tld
<\Location>
[sparx@E1]$ 

现在,conf 文件已生成。验证它并将其包含在主 apache conf 中。

Include "path/to/my-foo.conf"

相关内容