1 votes

L'url de la machine de développement ne reflète pas la partie "dev" dans l'url

J'ai deux machines, et elles sont desservies par une machine maître. La machine maître définit la première machine 10.10.0.59

server {
        listen 80;
        client_max_body_size 200M;
        server_name localhost 127.0.0.1;
        server_name_in_redirect off;

location / {
        proxy_pass http://10.10.0.59;
        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 ^~ /dev/ {

        proxy_pass http://10.10.0.56;
        proxy_redirect default;
        proxy_set_header Host $http_host;
        rewrite /dev/(.*) /$1 break;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}

En dev La machine est 10.19.9.56 et je dois ajouter (très probablement) /dev/ au chemin d'accès, afin que je puisse le parcourir par http://public_domain/dev/.....

Sur chacune de ces machines, plusieurs applications sont en cours d'exécution.

Avec cette nouvelle règle, je peux continuer par http://public_domain/dev/app1/ mais tous les liens de cette page pointeront vers, par exemple, http://public_domain/app1/login qui est le serveur n°1.

Qu'est-ce qui ne va pas ? Merci.

Dois-je créer une nouvelle clause serveur ? Si je le fais, dois-je ouvrir un port différent parce que les deux clauses suivantes ont été créées ? location sont dans la même clause serveur et écoutent sur 80.

Merci.

3voto

kolbyjack Points 7644

Le problème est le / de fin de votre proxy_pass Les directives de l'Union européenne. Cela indique à proxy_pass de remplacer la partie de l'url qui correspond à l'emplacement (/dev) par le chemin fourni (/). Cela ne fait pas de différence pour votre emplacement / car il remplace / par /. Si vous remplacez simplement votre ligne actuelle par

proxy_pass http://10.10.0.59;

Dans ce cas, il ne traitera pas l'url avant de la transmettre au backend.

-1voto

Pothi Kalimuthu Points 5514

Mise à jour : Ma réponse est fausse. Mais je la laisse ici pour que ceux qui la verront ne fassent pas mon erreur !

location / devrait probablement être le dernier bloc d'un server . Dans votre configuration, il vient en premier. C'est probablement la raison du problème que vous avez décrit. Essayez donc ce qui suit...

server {
        server\_name localhost 127.0.0.1;
        server\_name\_in\_redirect off;

        location /dev {
                proxy\_pass http://10.10.0.59/;
                    .........
        }

        location / {
                proxy\_pass http://10.10.0.56/;
                     ........

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