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

Есть ли способ заблокировать подмену заголовка IP-адреса хоста?

Я уже добавил в свою конфигурацию nginx следующее, чтобы иметь дело с поддельными доменами:

    if ($host !~* ^(.*example.org|\d+\.\d+\.\d+\.\d+)$ ) {
            return 444;
    }

Прямо сейчас он заносит IP-адреса в белый список, так как мне нужно принимать их для определенных запросов.

Он находится за AWS ELB, поэтому он также должен отвечать на IP-адрес.

В идеале я бы хотел, чтобы он принимал только собственный общедоступный и собственный частный IP-адрес. Однако я не хочу жестко закодировать это в конфигурации, поскольку это экземпляры AWS.

Так что я думаю, мне интересно, придумал ли кто-нибудь решение для блокировки поддельных заголовков хоста, которые конкретно ограничивают желаемые IP-адреса.

Лучшая идея, которую я могу придумать, - это сценарий, который генерирует файлы конфигурации, добавляет правильные IP-адреса при запуске и затем копирует их в папку конфигурации nginx. Но я чувствую, что должно быть более элегантное решение, которое не требует от меня написания сценария запуска.

Почему

Поскольку кто-то спросил, почему я хочу это сделать, у меня в основном две цели:

Ваш лучший вариант - действительно создать часть файла конфигурации и включить ее, потому что nginx не может узнать авторизованные IP-адреса в заголовке Host без нее.

server {

    listen 80;

    server_name mypublicdomain.com anotherdomain.com;
    include conf.d\domain-ips;  

    [ ... ]        

}

С файлом domain-ips, содержащим:

server_name x.x.x.x; # Public IP
server_name x.x.x.x; # Private IP