O URL da máquina de desenvolvimento não reflete a parte "dev" no URL

1

Eu tenho duas máquinas e elas são servidas por uma máquina mestre. A máquina mestre define a primeira máquina 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;
}

A máquina dev é 10.19.9.56 e eu preciso adicionar (mais provável) /dev/ ao caminho do URL, para que eu possa navegar por http://public_domain/dev/.....

Cada uma dessas máquinas tem vários aplicativos em execução.

Com essa nova regra, posso continuar por http://public_domain/dev/app1/ , mas todos os links nessa página apontarão, por exemplo, http://public_domain/app1/login , que é o servidor # 1.

O que mais está errado? Obrigado.

Devo configurar uma nova cláusula do servidor? Se eu fizer isso, eu preciso abrir uma porta diferente porque os dois location blocos estão dentro da mesma cláusula do servidor e ouvindo no 80.

Obrigado.

    
por Daniel Huger 27.06.2012 / 13:36

2 respostas

3

O problema é o trailing / em suas diretivas proxy_pass . Isso indica proxy_pass para substituir a parte da URL que corresponde à localização (/ dev) pelo caminho fornecido (/). Não faz diferença na sua localização / porque está substituindo / com /. Se você acabou de substituir sua linha atual com

proxy_pass http://10.10.0.59;

Em seguida, ele não processará o URL antes de passá-lo ao back-end.

    
por 27.06.2012 / 14:11
-1

Atualizar : minha resposta está errada. Mas eu estou deixando aqui para que quem vê isso não cometa meu erro!

O bloco

location / provavelmente deve ser o último bloco de qualquer server . Na sua configuração, vem em primeiro lugar. Essa é provavelmente a razão do problema que você descreveu. Então, por favor, tente o seguinte ...

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/;
                     ........
    
por 27.06.2012 / 13:56

Tags