현재 상황
- 웹페이지는 접속이 되나, 로그인이 안되는 현상
- 405 Method not allowed에러는 기본적으로 POST 형식이 잘못되어 나타나는 에러
- 필자는 POST 문제가 아니다. (GET, POST Method 모두 허용)
- 1) WEB Server 에러 상황
- HTTP/1.1 405 Error
- 405 Method not allowed
- 2) WAS Server 에러 상황
- Request method 'POST' not supported
- 500 Internal Server Error
- 1) WEB Server 에러 상황
에러 확인
1) Apache / Tomcat 서버에 접속해서 장애가 발생한 시점의 로그를 확인
1-1) Apache Server (WEB) 로그 확인
WEB (Apache) Log 경로로 이동
cd /accesslog
less 해당파일.log
접속 후 /2024:08:55 #에러발생시점 시간
해당 기기가 접속했던 로그와 405 에러 발견
405 Error란?
- 405 에러는 WAS에 통신을 보내고 받지 못하여 사용자에게 405 에러를 보여줌
"POST /main/login/v1/login HTTP/1.1" 405 #에러 로그
1-2) 동시간대 Tomcat Server (WAS) 로그 확인
1) tomcat server 로그 확인
less +G catalina.오늘날짜.log
WAS (log) 위치로 이동
less +G 서버ip.~~~log # tomcatlog에 쌓이는 로그
/08:55 #해당시간 검색
500에러를 WAS에게 반환해주고 있다. (WEB에서는 405에러를 밷는다.)
org.springframework.web.HttpRequestMthodNotSupportedException : Request method 'POST' not supported
1) org.springframework.jmx.export.UnableToRegisterMBeanException: Unable to register MBean [org.springframework.cloud.context.environment.EnvironmentManager@312cebb1] with key 'environmentManager'; nested exception is javax.management.InstanceAlreadyExistsException: org.springframework.cloud.context.environment:name=environmentManager,type=EnvironmentManager
2) org.springframework.web.client.HttpServerErrorException$InternalServerError: 500 Internal Server Error
at org.springframework.web.client.HttpServerErrorException.create(HttpServerErrorException.java:79)
조금더 에러를 살펴보면 2개의 에러가 더 보인다.
- Unable to register ~~ 에러
- Http server ~~ 500 에러
WHY?
Tomcat은 정상적으로 켜졌으나 framework(개발 툴)이 올라가지 못하는 현상 발생
해결안
- WAS에서는 로그인을 받을 때, 특정 HTTP 헤더 값만 받도록 되어 있었다.
- WAF에서는 보안 및 추적을 위해 HTTP에 추가로 헤더 값을 추가한다.
이 부분 때문에 해당과 같은 에러가 발생했다.
결국, WAF에서 헤더 값에 추가되는 부분을 예외처리를 진행했다.
이 부분을 해결하는 방법은 다양하나, 필자처럼 혹시 보안툴이 설치되어 있거나 WAF툴이 존재한다면 HTTP 값을 확인해봐도 좋을 것 같다.