условный 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