Перенаправление с одного nginx на другой

10

У меня есть два сервера (A и B) с NGINX. Сервер A обслуживает старый сайт, а сервер B обслуживает новый сайт. Я обновил свой DNS, но он довольно медленный: в моем офисе я все еще вижу свой старый сайт:

subdomain.site.com

Как я могу перенаправить все запросы с сервера A для этого конкретного субдомена на сервер B?

Теперь они оба обрабатываются с этим в NGINX:

server {
  listen 80;
  server_name subdomain.site.ru;
  root /var/www/subdomain/public;
  passenger_enabled on;
}
fl00r
источник

Ответы:

14

Поскольку они оба используют одно и то же имя_сервера, вы не можете выполнить простое перенаправление.

Вы, вероятно, можете использовать какой-нибудь прокси-сервер на старом сервере:

upstream newserver {
  server 172.16.0.1:80;  # this is new server, by IP address
}

server {
  listen 80;
  server_name subdomain.site.ru;
  location / {
    proxy_set_header Host $host;
    proxy_pass http://newserver;
  }
}

Поэтому, в основном, настройте старый сервер так, чтобы он передавал все запросы новому серверу. Конечно, укажите любую конфигурацию, которая вам понадобится для client_max_body_size и все такое.

CJC
источник
Как это можно сделать с помощью SSL? Нужен ли прокси-серверу ssl-сертификат, а также вышестоящий сервер?
earthmeLon
@earthmeLon В первоначальном вопросе этот прокси был временной мерой для обновления DNS. В этом случае как новые, так и старые серверы будут иметь сертификат SSL. В случае восходящего потока вы можете подключиться через SSL или через обычный HTTP; так как вы контролируете оба поля, это будет зависеть от ваших предпочтений.
cjc