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

Как запретить доступ по IP-адресу источника, находясь за Amazon ELB или другим прокси

У Nginx есть приятная функция, которая позволяет ограничивать доступ к ресурсам по исходному IP-адресу.

Однако я заметил, что это может не работать в ситуации, когда nginx находится за прокси-сервером или балансировщиком нагрузки. В моем случае Amazon ELB.

Я хочу предоставить страницу состояния для агента datadog и проверок работоспособности Amazon ELB. Поэтому я хочу разрешить локальные подключения и подключения из ELB, но запретить все остальное.

Следующее работает не так, как ожидалось, поскольку позволяет трафику, исходящему за пределами ELB, также получить доступ к странице состояния. Причина в том, что IP-адрес будет исходить из ELB, а разрешающие правила не смотрят на заголовки, чтобы определить реальный источник запроса. Есть ли способ указать nginx, какой исходный IP-адрес использовать для определения правил разрешения / запрета?

location /status {
    stub_status;
    access_log off;
    allow 127.0.0.1;
    allow 10.0.0.0/16;
    deny all;
}

Как указал Майкл Хэмптон. Я могу использовать модуль Real IP. Я не знал об этом.

Следующее сработало.

http { 
    real_ip_header X-Forwarded-For;
    set_real_ip_from 0.0.0.0/0;
}