我正在尝试在我的共享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的设置是否会阻止我吃蛋糕并吃掉它?
答案 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范围内的人都必须进行身份验证。