通过IP地址限制对虚拟URI的访问

时间:2016-10-11 15:32:23

标签: django apache .htaccess dreamhost

我正在尝试在我的共享Web服务器上运行Django应用程序(使用DreamHost托管)。我想根据IP地址的白名单锁定一个界面,但是我无法弄清楚如何做到这一点。此接口位于虚拟URL(换句话说,服务器上没有与URL对应的物理文件; Django内部根据传入的URL提供正确的内容)。我的共享主机使用Apache作为Web服务器,然后将所有必要的请求传递给Passenger。

我目前有一个.htaccess文件,其中包含以下内容:

SetEnvIf Request_URI ^/manage require_auth=true

AuthUserFile /home/myuser/.htpasswd
AuthName "Who Goes There?"
AuthType Basic

order deny,allow
deny from all
Satisfy any
Require user my_web_user
Allow from env=!require_auth

当我访问我网站上的/manage网址时,系统会提示我提供凭据,就像我预期的那样。访问任何其他URL不会提示我,因此此规则集似乎有效。

但是,我无法弄清楚如何将IP地址白名单添加到混音中。我知道Satisfy any指令本质上是它下面语句的逻辑OR。理想情况下,我希望能够根据IP 限制对此URL的访问,要求用户登录。但仅针对该特定路径

这里是否有一些简单的东西,或者Apache / Passenger的设置是否会阻止我吃蛋糕并吃掉它?

1 个答案:

答案 0 :(得分:0)

您可以使用"允许来自iprange"来指定您允许的范围CIDR表示法工作正常,因此所有不匹配的表示法都需要进行身份验证。

例如:

AuthUserFile /home/myuser/.htpasswd
AuthName "Who Goes There?"
AuthType Basic
Order deny,allow
Allow from 192.168.0.0/16
Satisfy any
Require user my_web_user

这意味着所有不在192.168.0.0范围内的人都必须进行身份验证。