Ответ 1
remote_addr будет ссылаться на прокси-сервер, но вы можете настроить прокси-сервер для отправки адреса клиента с полями заголовка X-Real-IP/X-Forwarded-For.
В сочетании с модулем ngx_http_realip вы можете изменить входящий заголовок, чтобы использовать реальный адрес клиента для remote_addr. Я считаю, что это будет работать, как ожидалось, с синтаксисом allow/deny.
Просто пояснить - синтаксис allow/deny должен быть идентичным после включения и настройки модуля. Подставьте свой IP-адрес и ваши прокси-адреса ниже.
Back-end nginx разрешить/запретить:
location / {
allow <your ip>;
allow 127.0.0.1;
deny all;
}
Конфигурация back-end nginx realip:
set_real_ip_from <your proxy>;
real_ip_header X-Forwarded-For;
В вашей конфигурации прокси-сервера nginx:
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
Если у вас несколько промежуточных прокси-серверов, вам нужно включить дополнительные адреса real_ip_recursive и whitelist с помощью директивы set_real_ip_from.