我想使用基本身份验证来限制暂存服务器,但有一个特殊位置除外,该位置不应具有基本身份验证,而应限制在客户端 IP 块内。
我的虚拟主机部分如下所示:
DocumentRoot /var/www/vhosts/example/public
ServerName beta.example.com
<Directory /var/www/vhosts/example/public>
Options FollowSymLinks -MultiViews
AllowOverride all
Order allow,deny
Allow from all
</Directory>
<Location />
AuthUserFile /var/www/.htpasswd
AuthType Basic
AuthName "Secret"
Require valid-user
</Location>
<Location /payment/ipn>
# How can I disable basic auth here?
Order deny,allow
Deny from all
Allow from 216.113.191
</Location>
因此,除非知道密码,否则任何人都无法访问该网站。但 PayPal 沙盒 (216.113.191.xxx) 应该能够访问http://beta.example.com/payment/ipn发送即时付款通知。
我通过 Apache2 上的 Passenger 托管 Rails 3。
答案1
听起来你想要Satisfy
。
Satisfy Any
答案2
默认情况下设置为 Satisfy All,则所有身份验证方法都应为真。请记住,子目录或子位置从其主目录或子位置继承属性,并且根据您的需要,要求应该是任意的。如果满足一个要求,则不会检查其他要求。
如果您想要更复杂的行为,则应使用指令和。您可以嵌套这些指令以创建复杂的情况。所有这些都在官方 apache 文档中描述,示例如下:http://httpd.apache.org/docs/current/mod/mod_authz_core.html