Przekierowanie z jednego nginx do drugiego

10

Mam dwa serwery (A i B) z NGINX. Serwer A obsługuje starą witrynę, a serwer B obsługuje nową witrynę. Zaktualizowałem swój DNS, ale działa dość wolno: w moim biurze wciąż widzę moją starą witrynę:

subdomain.site.com

Jak mogę przekierować wszystkie żądania z serwera A dla tej konkretnej subdomeny na serwer B?

Teraz oba są obsługiwane w NGINX:

server {
  listen 80;
  server_name subdomain.site.ru;
  root /var/www/subdomain/public;
  passenger_enabled on;
}
fl00r
źródło

Odpowiedzi:

14

Ponieważ oba używają tej samej nazwy serwera, nie można wykonać prostego przekierowania.

Prawdopodobnie możesz zrobić coś w rodzaju proxy na starym serwerze:

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;
  }
}

Zasadniczo skonfiguruj stary serwer, aby przekazywał wszystkie żądania do nowego serwera. Oczywiście, ustaw dowolną konfigurację, której potrzebujesz dla client_max_body_size i tak dalej.

cjc
źródło
Jak można to zrobić za pomocą protokołu SSL? Czy maszyna proxy potrzebuje certyfikatu ssl, a także serwera nadrzędnego?
earthmeLon
@earthmeLon W pierwotnym pytaniu ten serwer proxy był tymczasowym środkiem aktualizacji DNS. W takim przypadku zarówno nowy, jak i stary serwer będą miały certyfikat SSL. W przypadku wysyłania danych można łączyć się za pośrednictwem protokołu SSL lub zwykłego protokołu HTTP; ponieważ kontrolujesz oba pola, będzie to zależało od twoich preferencji.
cjc