Nginx 구성

Nginx 구성

내 웹 애플리케이션에 nginx 웹 서버를 설정하려고 합니다.
아래는 내가 원하는 URL입니다

www.example.com           -----> /var/www/html
www.example.com/backend/  -----> /var/www/app/backend/www
www.example.com/frontend/ -----> /var/www/app/frontend/www

example.com에 대한 적절한 PHP 파일을 서버에 제공하기 위해 /var/www/html을 얻을 수 있지만 다른 두 파일은 작동시킬 수 없습니다.

내 애플리케이션은 yii를 기반으로 구축되었으며 이를 기반으로 사용했습니다.https://github.com/clevertech/YiiBackboneBoilerplate

URL에서 index.php를 제거하기 위해 다시 작성되었습니다.

www.example.com/backend로 이동하면 index.php로 이동하지만 www.example.com/backend/site/login과 같은 링크를 만드는 URL을 다시 작성했습니다.

오류 로그에 다음과 같이 표시됩니다.

"/var/www/app/backend/www/site/login/index.php" is not found (2: No such file or directory), client: 114.143.183.171, server: example.com, request: "GET /backend/site/login/ HTTP/1.1", host: "example.com"

아래는 내 conf의 일부입니다.

set $yii_bootstrap "index.php";
location / {
           root /var/www/html/;
           index $yii_bootstrap;
}
location /backend {
         alias /var/www/app/backend/www;
         index $yii_bootstrap;
}
location ~ \.php {
        fastcgi_split_path_info  ^(.+\.php)(.*)$;
        set $fsn /$yii_bootstrap;
        if (-f $document_root$fastcgi_script_name){
                set $fsn $fastcgi_script_name;
        }
        # connect to a unix domain-socket:
        fastcgi_pass   unix:/var/run/php-fpm.sock;
        fastcgi_param  SCRIPT_FILENAME  $document_root$fsn;
        fastcgi_param  PATH_INFO        $fastcgi_path_info;
        fastcgi_param  PATH_TRANSLATED  $document_root$fsn;
        fastcgi_buffer_size 128k;
        fastcgi_buffers 256 16k;
        fastcgi_busy_buffers_size 256k;
        fastcgi_temp_file_write_size 256k;
        # This file is present on Debian systems..
       include fastcgi_params;
    }

이 문제를 해결하도록 도와주세요. 나는 이해하려고 노력했지만 내가 틀린 부분을 찾을 수 없습니다.

답변1

요청 1개 = 위치 1개

보유한 접두사 위치별로 하나를 찾을 수 있도록 정규식 위치를 복제해야 합니다. 그것이 가장 효율적인 방법입니다.

복사-붙여넣기를 두려워하지 마세요! 구성에 몇 개의 추가 바이트가 있으면 nginx 구성이 더 읽기 쉽고 확장 가능하며 더 효율적으로 실행될 수 있습니다.

location / {
    root /var/www/html;
    location ~* \.php$ {
        [...]
    }
}

location /backend/ {
    alias /var/www/html/backend/www/;
    location ~* \.php$ {
        [...]
    }
}

location /frontend/ {
    alias /var/www/html/frontend/www/;
    location ~* \.php$ {
        [...]
    }
}

관련 정보