NGINX 구성의 이전 PHP 스크립트를 새 HTTPS 사이트로 리디렉션하는 방법은 무엇입니까?

NGINX 구성의 이전 PHP 스크립트를 새 HTTPS 사이트로 리디렉션하는 방법은 무엇입니까?

문제가 있습니다. HTTP 도메인 구성에 대한 NGINX 구성에서 하나를 제외한 모든 PHP 스크립트를 잡으려고 합니다.

모든 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;
}

하지만 (다른 구조를 가진) HTTPS 링크로 리디렉션하려면 이전 사이트의 이전 PHP 스크립트를 처리해야 합니다.

나는 이것을 PHP 핸들러에 넣으려고했습니다.위치 / {}블록, 안으로위치/다운로드 {}차단했지만 모두 실패하고 이 스크립트에서 기본 트리거가 당겨졌습니다(PHP 핸들러의 404).

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

올바르게 처리하는 방법은 무엇입니까? 이 예외를 작동시키려면 NGINX 구성에서 어디에 넣어야 합니까? 내가 도대체 ​​뭘 잘못하고있는 겁니까?

추신. 다른 사항을 위해 별도의 HTTP 구성을 유지해야 합니다.

답변1

좋아, 답을 찾았어. 작업 순서가 중요합니다. 에 잘 설명되어 있습니다.

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

그리고 해결책은 다음과 같습니다:

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

관련 정보