이 질문은 다음과 유사합니다.단일 URL에만 client_max_body_size 적용하지만 재작성으로 인해 다릅니다.
끝점에서는 더 큰 몸체 크기를 허용하고 싶지만 lg
다른 부분에서는 허용하지 않습니다. 내 기존 구성은 다음과 같습니다.
location /xyz/ {
rewrite ^/xyz/(.*) /$1 break;
proxy_pass http://{{proxy_host}}:{{proxy_port}}/;
}
아래와 같은 작업을 수행하고 싶지만 계속 오류가 발생하거나 단순히 작동하지 않습니다.
location /xyz/ {
rewrite ^/xyz/(.*) /$1 break;
...
location /xyz/lg {
client_max_body_size 2m;
}
}
중첩된 URL에 대해 정규식을 사용해 보았지만 다음과 같은 결과만 얻었습니다.
nginx: [emerg] "proxy_pass" cannot have URI part in location given by regular expression, or inside named location,
답변1
후행을 사용하면 동일한 작업을 수행하므로 필요하지 않으므로 원본 블록 rewrite...break
을 다음과 같이 단순화할 수 있습니다.proxy_pass
/
location
location /xyz/ {
proxy_pass http://{{proxy_host}}:{{proxy_port}}/;
}
명령문은 블록 client_max_body_size
내에 배치되어야 하며 해당 지시문은 상속되지 않으므로 location
해당 블록에도 명령문이 필요합니다 .proxy_pass
예를 들어:
location /xyz/ {
proxy_pass http://{{proxy_host}}:{{proxy_port}}/;
}
location /xyz/lg {
client_max_body_size 2m;
proxy_pass http://{{proxy_host}}:{{proxy_port}}/lg;
}
블록 을 중첩할 수도 있지만 location
상속할 항목이 없으므로 의미가 없습니다.
lg
URI의 일부가 새 문과 location
새 proxy_pass
문 모두에 추가됩니다.
이 예에서는 client_max_body_size
다음과 같은 모든 URI에 대해다음으로 시작 /xyz/lg
, 예를 들어 /xyz/lg
, /xyz/lgfoo
및 /xyz/lg/bar
.