1 votes

Nginx proxy vers un nouveau vm sans affecter les anciennes règles activées sur le site

Nous avons 3 serveurs. L'un est le proxy frontal, et ensuite il y a les VM internes.

front-end/site-enabled/default

server {
        listen 80;
        rewrite ^(.*) https://$host$1 permanent;

        location / {
                proxy_pass              http://10.10.0.56;
                proxy_redirect          default;
                proxy_set_header        Host            $http_host;
                proxy_set_header        X-Real-IP       $remote_addr;
                proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
        }

        location /beta {
                proxy_pass              http://10.10.0.63;
                proxy_redirect          default;
                proxy_set_header        Host            $http_host;
                proxy_set_header        X-Real-IP       $remote_addr;
                proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
        }

}

Maintenant, le vm 10.10.0.63 est nouveau. Nous voulons faire fonctionner deux systèmes en parallèle.

Nous avons ce genre d'ancienne règle dans le nouveau vm.

10.10.0.63/site-enabled/default (site activé)

server {
    listen 80; 

    client_max_body_size 100M;
    server_name localhost 127.0.0.1;
    server_name_in_redirect off;

    location /api {
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

        proxy_pass http://localhost:5050;
        proxy_redirect default;
    }   

Le problème est qu'il y a un moyen de visiter http://example.com/beta/api sans que nous ayons à changer les règles en 10.10.0.63/site-enabled/default ? C'est-à-dire sans que nous ayons à écrire location /beta/api dans la règle de l'original location /api .

Peut-on faire cela avec nginx ? Nous allons nous débarrasser de l'ancien système dans quelques semaines et il semble idiot de se donner tout ce mal pour changer d'url (nous pourrions avoir à modifier de nombreux endroits dans le code source !)

Gracias.


Je n'ai toujours pas de solution de rechange, mais j'ai jeté un coup d'œil à ceci. Comment supprimer rapidement et facilement une partie d'une URL dans Nginx avec HttpRewriteModule ?

J'ai dépouillé beta . On dirait que ça marche.

1voto

user1730053 Points 21

En gros, j'ai dit au conseiller ici : Comment supprimer rapidement et facilement une partie d'une URL dans Nginx avec HttpRewriteModule ?

Supposons que l'ancienne url soit http://example.com/api et vous voulez garder la même configuration dans nginx, mais le nouveau vm utilise http://example.com/beta/api alors vous pouvez réutiliser la même configuration, sauf que, en ajoutant une rewrite .

Donc dans sites-enabled, j'ai ceci

server {
    listen 80;

    rewrite ^/beta(.*)$ $1 last; # strip out the beta
    .....
    location /api {
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

        proxy_pass http://localhost:5050;
        proxy_redirect default;
    }
    ....
}

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X