Re: BasicAuth только с определенных IP
Maxim Dounin
mdounin на mdounin.ru
Вт Ноя 6 17:57:30 UTC 2018
Hello!
On Tue, Nov 06, 2018 at 05:24:58AM -0500, inkognito0609 wrote:
> Модуль ngx_http_access_module позволяет ограничить доступ для определённых
> адресов клиентов.
> ngx_http_auth_basic_module позволяет ограничить доступ к ресурсам с
> проверкой имени и пароля.
>
> Можно ли реализовать проверку имени и пароля при условии входа с
> определенных ip адресов?, если да то как?
Есть директива satisfy, она позволяет произвольно комбинировать
access (allow/deny) и auth_basic. Подробнее про неё рассказано в
документации тут:
http://nginx.org/ru/docs/http/ngx_http_core_module.html#satisfy
Поведение по умолчанию - "satisfy all", то есть проверяются
результаты как allow/deny, так и auth_basic. То есть для того,
чтобы доступ был разрешён только с определённых IP-адресов, и при
этом у пришедших с этих адресов спрашивалась авторизация,
достаточно написать:
allow 192.168.0.0/24;
deny all;
auth_basic "restricted site";
auth_basic_user_file /path/to/htpasswd;
При этом nginx сначала проверит IP-адрес, и если доступ с этого
IP-адреса запрещён - вернёт ошибку.
Если же вдруг я неверно понял вопрос и на самом деле зачем-то
хочется, чтобы доступ был разрешён всем, но с определённых
IP-адресов - только с авторизацией, то можно использовать "satisfy
any", и разрешить доступ от всех адресов, кроме тех, у которых
нужно спрашивать авторизацию:
satisfy any;
deny 192.168.0.0/24;
allow all;
auth_basic "restricted site";
auth_basic_user_file /path/to/htpasswd;
--
Maxim Dounin
http://mdounin.ru/
Подробная информация о списке рассылки nginx-ru