AWS에서 ELB와 Apache와 연결을 하면, 간혹 access log에 408이나, 50x 에러가 찍힌다.
Log는 408과 같은 에러 코드와 ELB의 IP(또는 그를 거친 IP)를 제외하고는 uri라던가 다른 정보가 없다.
이 경우, ELB와 Apache의 Timeout 차이에 의한 Error이다.
Apache의 mod_reqtimeout 모듈이 있는데, 이 Module이 포함되면 408과 같은 에러가 log에 찍힐 수 있다.
이 모듈은 20~40초(default)의 Timeout을 지정하고, 이 시간이 지나면 공격으로 판단하고 408이나 50x 와 같은 에러를 발생시키고 끊는다.
ELB는 보통 60초의 timeout을 가지기에 ELB가 mod_reqtimeout보다 길어서 에러가 찍히는 것이다.
이 에러 log를 보기 싫다면, 다음의 세가지 방법 중에서 한가지를 수행하면 된다.
- mod_reqtimeout을 설정에서 제외하거나 시간을 조정한다.
- ELB의 Timeout을 줄인다.
- 아무것도 하지 않는다.