Nginx proxy_pass solo funciona parcialmente

Tengo la siguiente configuración

Servidor maestro: llámalohttps://master.comServidor esclavo: llámalohttps://slave.com

Ambos ejecutan Nginx en Ubuntu 16.04

En el servidor maestro, he creado el siguiente bloque de configuración en mi/etc/nginx/sites-available/default archivo

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 mas tardemaster.comy puedo hacer lo siguiente

Navegar haciahttps://master.com/test y ver la salida deslave.com\index.php.Navegar haciahttps://master.com/test/test.txty ver el texto en el archivoslave.com\test.txtNavegar haciahttps://master/com/test/test.jpg y ver la imagen en el archivoslave.com\test.jpg.

Sin embargo, no puedo hacer nada de lo siguiente

Navegar haciahttps://master.com/test/test.phpque en lugar de mostrarme la salida dehttps://slave.com/test.php me muestra un mensaje de error 404Navegar haciahttps://master.com/test/adminer/adminer.phpque en lugar de mostrarme la pantalla de inicio de sesión para la instancia de Adminer en el esclavo,https://slave.com/adminer/adminer.phpme muestra la pantalla de inicio de sesión para la instancia de Adminer enmaster.comes decirhttps://master.com/adminer/adminer.php

Esto es claramente porque me falta algo en mi configuración de Nginx enmaster.com. Sin embargo, no puedo ver qué podría ser eso.

En aras de la integridad, aquí está mi configuración en ambos servidores:

Ubuntu - 16.04.3Nginx - 1.10.3PHP - 7.0.22

Debería explicar por qué^~ es obligatorio ya que esto no está claro en mi pregunta original. Tengo otra configuración de bloque para manejar scripts PHP enmaster.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;
}

Debido a la forma en que Nginx procesa estas directivas, este bloque tiene prioridad cuando se trata de manejar.php archivos ymaster.com termina buscando localmente.php guiones que están realmente enslave.com. La única forma de evitar esto es usar^~

Respuestas a la pregunta(1)

Su respuesta a la pregunta