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

Прокси-сервер Nginx с различным адресом источника

у меня есть работает Конфигурация nginx для проксирования всех запросов к серверу из диапазона исходных IP-адресов. В настоящее время у меня настроено 20 исходных IP-адресов, и конфигурация довольно обширна. Для краткости я удалил остальные 18 блоков.

Мне интересно, есть ли более простой способ сделать это. Мне нужно добавить более 100 IP-адресов, и в этом случае конфигурация будет слишком большой. Должен быть способ лучше!

Чтобы уточнить: Мне нужно, чтобы запросы исходили с одного из 100 случайных IP-адресов, предоставленных на сервере. Целевой сервер увидит, что проксированный запрос поступает с одного из 100 адресов.

Подойдет ли HAProxy или другая альтернатива для такого рода задач?

Упрощенная конфигурация nginx:

# nginx proxies all requests to one of these servers
upstream cluster {
  # one server line for every server block configured below
  server 127.0.0.1:8000;
  server 127.0.0.1:8001;
  # 18 more...  

  least_conn;
  keepalive 16;
}

# one server block for every source ip address configured
server {
  listen 8000;

  location / {
    proxy_pass https://destination;
    # ip address below is one of 20 addresses outgoing requests will bind to
    proxy_bind 10.0.0.1;
  }
}

server {
  listen 8001;

  location / {
    proxy_pass https://destination;
    # ip address below is one of 20 addresses outgoing requests will bind to
    proxy_bind 10.0.0.2;
  }
}

# 18 more server blocks

# redirect all http traffic to https
server {
  listen 80;
  listen [::]:80;

  return 301 https://$host$request_uri;
}

# proxy requests to upstream, which proxies requests to destination
server {
  listen 443 ssl;
  listen [::]:443 ssl;

  location / {
    proxy_pass http://cluster;
    proxy_http_version 1.1;
    proxy_set_header Connection '';
  }
}