условный CORS, if, try_files и fastcgi
Илья Шипицин
chipitsine на gmail.com
Сб Дек 3 06:48:17 UTC 2022
привет!
берем nginx-1.23.2
задача - проксировать на fastcgi только реально существующие на файловой
системе файлы (чтобы всякие сканы типа /xmlrpc.php не отправлялись бы на
fastcgi).
классическое решение (работает)
location / {
try_files $uri =404;
fastcgi_pass unix:/run/php/php7.4-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME
$realpath_root$fastcgi_script_name;
fastcgi_intercept_errors on;
include fastcgi_params;
}
однако try_files перестает решать задачу, если мы добавляем if (чуть
упрощенный конфиг, просто для иллюстрации) - даже несуществующие файлы
отправляются на fastcgi
location / {
try_files $uri =404;
fastcgi_pass unix:/run/php/php7.4-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME
$realpath_root$fastcgi_script_name;
fastcgi_intercept_errors on;
include fastcgi_params;
set $cors "true";
if ($cors = "true") {
add_header 'Access-Control-Allow-Origin'
"$http_origin";
}
}
можно ли как-то во втором случае вернуть прежнее поведение try_files ?
Илья Шипицин
----------- следующая часть -----------
Вложение в формате HTML было извлечено…
URL: <http://mailman.nginx.org/pipermail/nginx-ru/attachments/20221203/7c04ef54/attachment.htm>
Подробная информация о списке рассылки nginx-ru