Nginx proxy_pass funciona apenas parcialmente

Eu tenho a seguinte configuração

Servidor mestre - chame-ohttps://master.comServidor escravo - chame-ohttps://slave.com

Ambos executam o Nginx no Ubuntu 16.04

No servidor mestre, criei o seguinte bloco de configuração no meu/etc/nginx/sites-available/default Arquivo

location /test
{
 rewrite ^/test(.*) /$1 break;
 proxy_pass https://slave.com;
 proxy_read_timeout 240;
 proxy_redirect off;
 proxy_buffering off;
 proxy_set_header Host $host;
 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
 proxy_set_header X-Forwarded-Proto https;
}

A service nginx reload mais tardemaster.come eu posso fazer o seguinte

Navegue atéhttps://master.com/test e veja a saída deslave.com\index.php.Navegue atéhttps://master.com/test/test.txte veja o texto no arquivoslave.com\test.txtNavegue atéhttps://master/com/test/test.jpg e veja a imagem no arquivoslave.com\test.jpg.

No entanto, não posso executar nenhuma das seguintes ações

Navegue atéhttps://master.com/test/test.phpque em vez de me mostrar a saída dehttps://slave.com/test.php mostra uma mensagem de erro 404Navegue atéhttps://master.com/test/adminer/adminer.phpque, em vez de me mostrar a tela de login da instância do Adminer no escravo,https://slave.com/adminer/adminer.phpmostra a tela de login para a instância do Adminer emmaster.comisto éhttps://master.com/adminer/adminer.php

Isto é claramente porque estou faltando algo na minha configuração do Nginx nomaster.com. No entanto, não consigo ver o que isso pode ser.

No interesse da integridade, eis a minha configuração nos dois servidores:

Ubuntu - 16.04.3Nginx - 1.10.3PHP - 7.0.22

Eu deveria explicar por que o^~ é necessário, pois isso não está claro na minha pergunta original. Eu tenho outra configuração de bloco para lidar com scripts PHP emmaster.com.

location ~ \.php$ 
{
 try_files $uri =404;
 fastcgi_split_path_info ^(.+\.php)(/.+)$;
 fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;
 fastcgi_index index.php;
 fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
 include fastcgi_params;
}

Devido à maneira como o Nginx processa essas diretivas, esse bloco tem prioridade quando se trata de manipulação.php arquivos emaster.com acaba procurando localmente.php scripts que estão realmente emslave.com. A única maneira de evitar isso é usar^~

questionAnswers(1)

yourAnswerToTheQuestion