nginx try_files 및 여러 위치 블록

nginx try_files 및 여러 위치 블록

각각 자체 문서 루트가 있는 2개의 도메인이 있습니다. 한 도메인의 루트에는 다른 도메인을 통해 액세스할 수 있는 사진 및 문서 폴더가 포함되어 있습니다. 따라서 domain1.com/pics/house.jpg와 domain2.com/pics/house.jpg는 동일한 이미지를 표시합니다.

다음은 domain2의 구성 파일에서 발췌한 것입니다. 작동하지 않습니다. domain2의 domain1 루트에 있는 이미지에 액세스할 때 항상 404가 표시됩니다. 이 문제를 해결하기 위해 다시 작성하는 방법에 대한 제안을 환영합니다. 감사합니다

root /home/admin/domain2.com/html;

index index.php index.html;

location /pics/ {
       root /home/admin/domain1.com;
}

location /docs/ {
       root /home/admin/domain1.com;
}

location / {
        try_files $uri $uri/ =404;
}

location ~ \.php$ {
       include snippets/fastcgi-php.conf;
       fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
}

답변1

알고 보니 /pics/에 추가 폴더가 포함된 경우에는 내 코드가 작동하지 않았습니다. 다음을 사용하면 효과가 있었습니다.

location ^~ /pics/ {
       root /home/admin/domain1.com;
       # Queries beginning with /pics/ and then stops searching.
}

관련 정보