Configurer un frontal nginx pour savoir sur quel backend on se trouve

Pour des questions de performance, on est parfois amené à mettre plusieurs serveurs différents. Il peut être intéressant de savoir sur quel backend on tombe tout en ayant exactement le même serveur.

Nginx à la rescousse

Sur nginx il est un module sub_filter qui permet de remplacer une chaîne par une autre. On pourrait donc remplacer une chaine xxx par le nom du serveur

Configuration

Ici c'est la configuration du nginx frontal, il faut lui dire de remplacer xxx par Sylvain. proxy_set_header Accept-Encoding ""; permet de dire à nginx de ne pas demander au backend de gzip car sinon le sub_filter ne fonctionnera pas. Heureusement sinon ça voudrait dire que nginx décode/remplace/ré-encode, ça serait pas top pour les perfs. Sur les backends il n'y a rien à faire.

server {

    ...

    server_name guerin.rivsc.ovh;

    location = /favicon.ico { log_not_found off; access_log off; }
    location = /robots.txt { log_not_found off; access_log off; allow all; }

    ...

    location /blog/ {
        
        # Sinon nginx ne sait pas décoder du gzip
        proxy_set_header Accept-Encoding "";
        
        proxy_pass http://192.168.0.33/blog/;
        proxy_read_timeout 120s;
        access_log /var/log/nginx/access_echangeur.log;
        error_log /var/log/nginx/error_echangeur.log error;

        sub_filter xxx Sylvain;
        # Evite de vérifier tout le contenu qui passe...
        sub_filter_types text/html;
    }
}