Назад | Перейти на главную страницу

Только прокси-сервер проходит, если файл существует на прокси-сервере с Nginx

Я знаком с практикой обслуживание статического файла, если он существует, а все остальное передать 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. Видеть этот документ для подробностей.