если есть другое место, которое обрабатывает ваш запрос из-за приоритетного порядка. Поэтому, если вы проверите мое редактирование, вы увидите, почему и когда перезапись не нужна
я есть следующие настройки
Главный сервер - позвониhttps://master.com
Ведомый сервер - называйте этоhttps://slave.com
Оба запускают Nginx на Ubuntu 16.04
На главном сервере я создал следующий блок конфигурации в моем/etc/nginx/sites-available/default
файл
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
позжеmaster.com
и я могу сделать следующее
https://master.com/test
и просмотреть вывод изslave.com\index.php
.Перейти кhttps://master.com/test/test.txt
и увидеть текст в файлеslave.com\test.txt
Перейти кhttps://master/com/test/test.jpg
и увидеть изображение в файлеslave.com\test.jpg
.Тем не менее, я не могу сделать что-либо из следующего
Перейти кhttps://master.com/test/test.php
который вместо того, чтобы показать мне выход изhttps://slave.com/test.php
показывает мне сообщение об ошибке 404Перейти кhttps://master.com/test/adminer/adminer.php
который вместо того, чтобы показать мне экран входа в систему для экземпляра Adminer на ведомом устройстве,https://slave.com/adminer/adminer.php
показывает мне экран входа в систему для экземпляра Adminer наmaster.com
то естьhttps://master.com/adminer/adminer.php
Это очевидно, потому что я что-то упустил в моей конфигурации Nginx наmaster.com
, Однако я не вижу, что это может быть.
В интересах полноты, вот моя конфигурация на обоих серверах:
Ubuntu - 16.04.3Nginx - 1.10.3PHP - 7.0.22
Я должен объяснить, почему^~
требуется, так как это не ясно из моего первоначального вопроса. У меня есть другой блок настройки для обработки сценариев PHP наmaster.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;
}
Из-за того, как Nginx обрабатывает эти директивы, этот блок имеет приоритет при обработке.php
файлы иmaster.com
в конечном итоге ищет локально.php
сценарии, которые на самом деле наslave.com
, Единственный способ избежать этого - использовать^~