Я уже добавил в свою конфигурацию 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