Обслуживание некоторых файлов js/html с помощью php-fpm

Обслуживание некоторых файлов js/html с помощью php-fpm

У меня есть настройка docker-compose с nginx и wordpress. Я следовал одному из руководств в Интернете, и все, кажется, работает нормально.

НО у меня есть один критический плагин, который генерирует пару файлов html/js напрямую через PHP. То есть HTML-код содержит <script>тег с путем к /script.js, плагин ловит это конкретное имя и отвечает соответствующим контентом. Здесь не задействованы модули url-rewrite, только некоторые самописные (т.е. из плагина)

Я не могу понять, как настроить nginx, чтобы образ fpm docker мог обслуживать сгенерированный на стороне сервера js.

Теперь у меня следующая настройка:

location / {
  try_files   $uri $uri/ /index.php?$query_string;
}
location ~* \.php$ {
  fastcgi_pass wordpress:9000;
  fastcgi_index index.php;
  include fastcgi_params;
  fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
  fastcgi_param SCRIPT_NAME $fastcgi_script_name;
}
location ~ ^/(script1.js|script2.js) {
  fastcgi_pass wordpress:9000;
  fastcgi_index index.php;
  include fastcgi_params;
  fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
  fastcgi_param SCRIPT_NAME $fastcgi_script_name;
}
location ~* \.(css|js|gif|ico|jpeg|jpg|png)$ {
  expires max;
  log_not_found off;
}

После повторного запроса страницы script1 и script2 возвращают ответ 404.

Возможно ли это вообще осуществить?

решение1

Оператор try_filesбудет обслуживать статические файлы, если они существуют, а в противном случае отправит запрос в /index.php. Поскольку файлы script1.jsи script2.jsне существуют, они обрабатываются /index.php, что вам и нужно.

Блоки location ~ ^/(script1.js|script2.js)и location ~* \.(css|js|gif|ico|jpeg|jpg|png)$ломают эту логику.

Одним из решений является удаление location ~ ^/(script1.js|script2.js)блока (что просто неправильно) и помещение try_filesв location ~* \.(css|js|gif|ico|jpeg|jpg|png)$него утверждения.

Например:

location / {
    try_files $uri $uri/ /index.php?$query_string;
}
location ~* \.php$ {
    ...
}
location ~* \.(css|js|gif|ico|jpeg|jpg|png)$ {
    try_files $uri /index.php?$query_string;
    expires max;
    log_not_found off;
}

Связанный контент