Я знаком с практикой обслуживание статического файла, если он существует, а все остальное передать index.php.
Можно ли это использовать вместе с передачей прокси и существует ли статический файл на прокси-сервере?
Например, допустим, у меня есть эти два сервера:
Сервер 1:
Сервер 2 (прокси):
example.com настроен на разрешение на Сервер 1. Когда поступает запрос, конфигурация nginx смотрит на входящий URL-адрес и видит, отображается ли он в файл на Сервере 2. Если это так, он передает запрос в файл на Сервере. 2. Если файл не существует, он просто хранит его на Сервере 1. Однако на Сервере 1 он по-прежнему предпочитает существующие файлы и сопоставляет другие маршруты с index.php.
Если это сбивает с толку, вот несколько примеров
В случаях, когда один и тот же файл существует на обоих серверах, он должен отображаться на сервере 2.
Отказ от ответственности: это неэффективный способ работы с обратным прокси.
Вы обращаете прокси-сервер каждый запрос к серверу 2, и если этот сервер не может удовлетворить запрос, он отвечает статусом 404.
Сервер 1 может обрабатывать статус 404, установив proxy_intercept_errors
и error_page
.
Например:
location / {
proxy_pass ...;
proxy_intercept_errors on;
error_page 404 = @fallback;
}
location @fallback {
try_files $uri /index.php;
}
location ~ \.php$ {
try_files $uri =404;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $request_filename;
fastcgi_pass ...;
}
Единственное исключение - URI, заканчивающиеся на .php
не будет сначала отправлен на server2. Видеть этот документ для подробностей.