Apache2 混合了两种位置限制:基本身份验证和基于 ip

Apache2 混合了两种位置限制:基本身份验证和基于 ip

我想使用基本身份验证来限制暂存服务器,但有一个特殊位置除外,该位置不应具有基本身份验证,而应限制在客户端 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

相关内容