Я пытаюсь настроить прокси-сервер в nginx, который привязывает все прокси-запросы к случайному IP-адресу в определенном диапазоне. Каждый прокси-запрос будет исходить с другого IP-адреса.
В настоящее время у меня есть конфигурация, размещенная ниже. Однако по какой-то причине nginx не прослушивает порт 80, хотя конфигурация загружается нормально. Я получаю отказ в соединении при попытке доступа к серверу.
Я ошибаюсь?
server {
listen 80;
listen [::]:80;
server_name my.server.name;
location / {
# proxy all requests to destination
proxy_pass https://destination;
# generate random IPv6 between IPv6Prefix::0 and IPv6Prefix::13
set_by_lua_block $ip { return 'IPv6Prefix::' .. string.format('%x', math.random(0, 19)) }
proxy_bind $ip;
# keep connections alive
proxy_http_version 1.1;
proxy_set_header Connection '';
}
}
Чтобы проверить, прослушивает ли Nginx порт 80 на том же сервере, вы можете запустить:
sudo netstat -nlp | grep nginx
Вы должны получить результат, соответствующий Nginx, сообщив, что он прослушивает порт 80. Если это сработает, следующим тестом будет доступ к Nginx изнутри сервера через HTTP:
curl http://127.0.0.1
Если это сработает, проблема в брандмауэре или другой сетевой проблеме. Убедитесь, что брандмауэр на сервере разрешает входящий HTTP, если он у вас запущен. Если вы находитесь в такой среде, как AWS, вам также может потребоваться проверить, разрешают ли правила группы безопасности также входящие HTTP-запросы к хосту.
Что касается вашего прокси-кода, обратите внимание, что прокси-привязка предназначена для привязки к местный IP-адреса. То есть IP-адреса, которые уже назначены аппарату. Для того, чтобы это сработало, вам, кажется, нужен дополнительный код для запуска перед запуском Nginx, который назначает каждый IP-адрес в целевом диапазоне вашей машине, если ваша ОС и сетевое оборудование поддерживают это.
Для безопасной работы все IP-адреса также должны быть неиспользованными, поскольку широковещательная передача двух машин с одним и тем же IP-адресом может вызвать проблемы.