Как запретить доступ к nginx, если в пути есть /local или /local-int ко всем сетям, кроме локальной? Например https://example.com/api/local/settings. Я пробовал это, но при локальном доступе запрос идет в /etc/nginx/html/api/local/settings, а не в нужный бэкенд
location = (local|local-int) {
allow 10.150.0.0/16;
allow 10.160.0.0/16;
allow 10.170.0.0/16;
deny all;
}
У меня около 20 таких сайтов, и я пытаюсь придумать решение, которое бы не было привязано к конкретной локации
Резюмирую: если я захожу на сайт с разрешенного ip, то он должен показывать страницу, на которую я захожу, а если с запрещенного списка, то 403
Пример конфигурации:
server {
listen ip:80;
listen ip:443 ssl;
server_name test.com;
if_modified_since off;
location /api {
proxy_pass https://api.example.com;
}
location ~ (\/local) {
allow 10.150.0.0/16;
allow 10.160.0.0/16;
allow 10.170.0.0/16;
deny all;
}
}
Решение проблемы
Это будет просто работать с обоими вашими locations
, так как оба начинаются с/local
location ~ (\/local) {
allow 10.150.0.0/16;
allow 10.160.0.0/16;
allow 10.170.0.0/16;
deny all;
}
Комментариев нет:
Отправить комментарий