nginx 요청 url인 긴경우 에러 해결하기

# nginx 웹서버 요청시 아래와 같이 아주 긴 문자열을 포함시켜 요청을 하게 되면
# 요청이 제대로 전달되지 않는 문제가 발생하는 경우가 생긴다.
http://server.ysoftman.com/test?param1=aaaaa ... zzzzz (1000자 이상)

# nginx 에서 set 으로 사용자 변수(로그필터링을 위해 변수를 사용하는등)를
# 사용하는 경우 다음과 같은 에러가 발생하기도 한다.
unsing uninitialized 'myvar1' ... variable while logging request....

# 참고 http://nginx.org/en/docs/debugging_log.html
# nginx 빌드시 다음과 같이 디버그 사용 옵션을 준다.
./configure --with-debug

# 설정에서 로그 레벨을 debug 로 명시하면
# nginx 에서 발생하는 구체적인 에러를 볼 수 있다.
error_log /path/to/log debug;

# debug 로깅으로 다음과 같은 에러 메시지가 찍힌다.
client exceeded http2_max_field_size limit while processing HTTP/2 connection

# 참고 http://nginx.org/en/docs/http/ngx_http_v2_module.html#directives
# http2 헤더 와 필드 값을 늘려 줘야 한다.
http2_max_field_size 16k;  # default 4k
http2_max_header_size 32k;  # default 16k

# 그리고 다음과 같이 URI 이 너무 길다는 에러 응답을 받는다면
414 Request-URI Too Large
# 참고 http://nginx.org/en/docs/http/ngx_http_core_module.html#large_client_header_buffers
# 다음과 같이 클라이언트 헤더 버퍼를 늘려주자.
large_client_header_buffers 4 8k;

# 414 에러가 apache httpd 에서 발생한다면 LimitRequestLine 설정을 늘려 주자.
LimitRequestLine 16000 # default 8190

comments:

댓글 쓰기