아래 사이트에서 nginx + ajp 를 사용하여 서비스하는 서버에서
https://github.com/yaoweibin/nginx_ajp_module#ajp_header_packet_buffer_size
header 길이가 특정 크기 만큼 증가하는 경우
405 에러가 발생하였다.
405는 메서드 에러로
지원하지 않는 메서드를 호출할 경우에 발생하는데
이미 쓰고있는 post 에서 에러가 발생였다
<html> <head><title>405 Not Allowed</title></head> <body bgcolor="white"> <center><h1>405 Not Allowed</h1></center> <hr><center>nginx</center> </body> |
nginx 에러로그를 보면 다음과 같은 에러가 찍혀 있어서, 메소드 문제는 아니라고 판단하였다.
ajp_marshal_into_msgb: Error appending the header value |
따라서, 헤더 크기와 관련해서 찾아보 던 중
보통은 아래 값으로 헤더 사이즈를 조정하라고 하는데, 이미 32k 로 적용 중이었으나
large_client_header_buffers
AJP 를 사용하는 환경에서는, 다음과 같이 별도 옵션이 필요하였다.
ajp_header_packet_buffer_size 32k; |
하지만, 위 설정만으로는 아래와 같은 에러가 발생하게 된다
curl: (18) transfer closed with outstanding read data remaining |
그래서 다음과 같이 tomcat 에도 추가로 설정이 필요하다.
<Connector ..... protocol="AJP/1.3" ..... packetSize="32786" /> |
기본 값으로 ajp 및 tomcat 에서 8k 까지만 가능하고, 양쪽 모두 값을 늘려줘야 정상적으로 호출이 가능하다.