¿Cómo redirigir scripts PHP antiguos en la configuración de NGINX a un nuevo sitio HTTPS?

¿Cómo redirigir scripts PHP antiguos en la configuración de NGINX a un nuevo sitio HTTPS?

Tengo un problema, estoy intentando capturar todos los scripts PHP excepto uno en mi configuración NGINX para mi configuración de dominio HTTP:

Tengo una regla general para todos los archivos PHP.

    location ~ \.php$ {

    include fastcgi_params;

    try_files $uri =404;
    fastcgi_split_path_info ^(.+\.php)(/.+)$;
    # NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini

    # With php5-fpm:
    fastcgi_pass unix:/var/run/php7.4-fpm.$user.sock;
    #fastcgi_pass php7-fpm-sock;

    fastcgi_index index.php;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;

    fastcgi_read_timeout 600;
}

Pero necesito manejar el antiguo script PHP del sitio antiguo para redirigir a un enlace HTTPS (con una estructura diferente).

Intenté poner esto en el controlador PHP, enubicación / {}bosquejarubicación /descarga {}bloquear, pero todo falla y el disparador predeterminado se activa en este script (404 en el controlador PHP)

    rewrite ^/download\.php\?file_id=(.*)$ https://$server_name/download/id/$1 permanent;

¿Cómo manejarlo correctamente? ¿Dónde poner esta excepción en la configuración de NGINX para que funcione? ¿Qué estoy haciendo mal?

PD. Necesito mantener una configuración HTTP separada para otras cosas.

Respuesta1

Ok, encontré la respuesta. El orden de las operaciones es importante, está bien explicado en

https://stackoverflow.com/questions/59846238/guide-on-how-to-use-regex-in-nginx-location-block-section

Y la solución se ve así:

location ^~ /download.php {
    rewrite ^ https://$server_name/download/id/$arg_file_id permanent;
}

información relacionada