Назад | Перейти на главную страницу

Сочетание двух ограничений местоположения в 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 для отправки мгновенных уведомлений об оплате.

Я размещаю Rails 3 через Passenger на Apache2.

Похоже, ты хочешь Satisfy.

Satisfy Any

По умолчанию установлено «Удовлетворительно все», тогда все методы аутентификации должны быть истинными. Помните, что подкаталог или подраздел наследует свойство от своего хозяина, и в ваших нуждах require должен быть любым. Если одно требование выполнено, другое не проверяется.

Если вы хотите более сложного поведения, вам следует использовать директивы и. Вы можете вкладывать эти директивы в сложные дела. Все это описано в официальных документах apache, пример здесь: http://httpd.apache.org/docs/current/mod/mod_authz_core.html