Сопоставление перенаправленных запросов nginx из исходного пути

Моя текущая конфигурация перезаписывает все страницы php на /index.php?$query_string , мне нужно, чтобы это работало для конкретный путь, но при использовании для этого блока местоположения, как только путь был переписан, он больше не соответствует. Есть ли способ перенаправить запрос на fpm и переписать URI в том же блоке местоположения без перенаправления? Или альтернативу, которая выполнит то, что я хочу?

Вот мой конкретный код:

location /civicrm/group {
    location ~ \.php$ {
        fastcgi_send_timeout 0;
        fastcgi_read_timeout 0;
        include snippets/fastcgi-common.conf;
        fastcgi_param HTTPS 'on';
        fastcgi_pass unix:/run/php/php7.2-fpm.sock;
    }
    try_files $uri @drupal;
}

location ~ \.php$ {
    include snippets/fastcgi-modify.conf;
    include snippets/fastcgi-common.conf;
    fastcgi_param HTTPS 'on';
    fastcgi_pass unix:/run/php/php7.2-fpm.sock;
}

location @drupal {
    try_files $uri /index.php?$query_string;
}

Проблема в том, что я теряю информацию об исходном базовом пути и больше не могу соответствовать исходному местоположению, например:

  1. Запрос / civicrm / group? Reset = 1
  2. Соответствует местоположению / some / path , здесь я бы хотел изменить настройки для php-fpm .
  3. Мне нужно изменить URI, поэтому я переписываю его на /index.php?$query_string
  4. Теперь я начинаю сопоставление с самого начала, но теперь местоположение / some / path? Reset = 1 не соответствует (проблема)
  5. Итак, я использую обычный блок местоположения php.
1
задан 28 December 2019 в 02:52
1 ответ

Если нет никаких статических файлов под этим путем, Вы могли бы отправить все запросы непосредственно к index.php с:

location /civicrm/group {
    try_files /index.php =404;

    fastcgi_send_timeout 0;
    fastcgi_read_timeout 0;
    include snippets/fastcgi-common.conf;
    fastcgi_param HTTPS 'on';
    fastcgi_pass unix:/run/php/php7.2-fpm.sock;
}

Уведомление, что эти /index.php термин был перемещен так, чтобы это больше не было последним параметром и больше не содержало строку запроса. См. этот документ для деталей.

1
ответ дан 29 December 2019 в 22:46

Теги

Похожие вопросы