Welcome! Log In Create A New Profile

Advanced

условный доступ / access control

Anatoly Pugachev
June 16, 2020 05:16AM
Здравствуйте!

Есть обычный nginx (не plus).

Добавил к нему geoip модуль, все работает. Теперь хочу сделать доступ
на основе geoip и обычных IP списков доступа.

По отдельности geoip и IP acl работают, как сделать чтобы работало вместе?

Логика нужна такая:

- если ip_whitelist, то дальше по конфигурационному файлу
- если ip_blacklist , то return 403
- (тут geoip) если $allowed_country == no, то return 403

если убрать первые два пункта, то получается такая конфигурация nginx
(относительно /etc/nginx/ ) :

nginx.conf :
load_module modules/ngx_http_geoip_module.so;
load_module modules/ngx_stream_geoip_module.so;

cat conf.d/site.conf

map $geoip_country_code $allowed_country {
default no;
RU yes;
}

server {
server_name site.ru;
if ($allowed_country = no) {
return 403;
}
}

и это работает, доступ только тем, для кого geoip вычислил что он из "RU" .

Есть ли возможность добавить еще проверку по IP как описано выше
(whitelist, blacklist, country) ?
Вероятно в теории это можно сделать через директиву(ы) map и условиями
if , но я никак пока не могу сообразить...


Спасибо.
_______________________________________________
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru
Subject Author Posted

условный доступ / access control

Anatoly Pugachev June 16, 2020 05:16AM



Sorry, only registered users may post in this forum.

Click here to login

Online Users

Guests: 155
Record Number of Users: 8 on April 13, 2023
Record Number of Guests: 421 on December 02, 2018
Powered by nginx      Powered by FreeBSD      PHP Powered      Powered by MariaDB      ipv6 ready