/admin
내 웹 사이트에 카탈로그 가 있으며 관리자가 웹 양식을 통해 큰 파일을 업로드하도록 허용하고 싶습니다. 내 nginx.com의 모습은 다음과 같습니다.
http {
# ...
client_max_body_size 16M;
# ...
server {
server_name example.com;
root /var/www/example.com;
index index.php;
location /admin {
client_max_body_size 256M;
}
# ...
}
}
작동하지 않습니다. /admin/index.php
스크립트가 16Mb보다 큰 파일을 업로드 할 수 없음 : 413 요청 엔티티가 너무 큼
그러나 차단 client_max_body_size
하기 위해 이동 하면 server
모든 것이 잘 작동합니다. 그러나 나는 admin
카탈로그에 대해서만이 변경을하고 싶지 않습니다 .
에 따라 문서 , client_max_body_size
내부에 배치 될 수있다 location
만 원하는 경로 설정을 무시할 블록.
무엇이 잘못 될 수 있습니까?
답변
제대로 작동합니다. 문제는 위치가 어떻게 작동하는지 오해 한 것입니다. Nginx는 하나의 위치 블록 만 적용하며, 하나 이상의 위치 블록을 적용하지 않습니다. 두 곳에서
location ~ \.php$
과 location /admin
와 URI는 /admin/index.php
첫 번째 위치를 적용하지만, 두 번째는하지 않습니다 다음. 위치 내에서 다시 쓰기를 사용하더라도 nginx는 지시문을 버리고 새 위치에 대해 지시문을 다시 분석합니다.
이것이 또한 실제로 전체 구성을 게시하여 실제로 잘못된 것을 숨기지 않는 이유이기도합니다.