Redirection d'un nginx vers un autre

10

J'ai deux serveurs (A et B) avec NGINX. Le serveur A dessert l'ancien site et le serveur B dessert un nouveau site. J'ai mis à jour mon DNS mais c'est assez lent: dans mon bureau je vois toujours mon ancien site:

subdomain.site.com

Comment puis-je rediriger toutes les demandes du serveur A pour ce sous-domaine particulier vers le serveur B?

Maintenant, ils sont tous les deux gérés avec NGINX:

server {
  listen 80;
  server_name subdomain.site.ru;
  root /var/www/subdomain/public;
  passenger_enabled on;
}
fl00r
la source

Réponses:

14

Puisqu'ils utilisent tous les deux le même nom de serveur, vous ne pouvez pas faire une simple redirection.

Vous pouvez probablement faire une sorte de proxy, sur le modèle de ce qui suit sur l'ancien serveur:

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

Donc, en gros, configurez l'ancien serveur pour qu'il transmette toutes les demandes au nouveau serveur. Bien sûr, mettez dans la configuration dont vous aurez besoin pour client_max_body_size et tout ça.

cjc
la source
Comment cela peut-il être fait en utilisant SSL? La machine proxy a-t-elle besoin du certificat SSL ainsi que du serveur en amont?
earthmeLon
@earthmeLon Dans la question d'origine, ce proxy était une mesure temporaire pour la mise à jour DNS. Dans ce cas, les nouveaux et les anciens serveurs auraient le certificat SSL. Dans le cas de l'amont, vous pouvez vous connecter via SSL ou via HTTP simple; puisque vous contrôlez les deux cases, cela dépendra de votre préférence.
cjc