Cloud Infra Architecture (AWS)/AWS Build

[Troble Shoting] (WEB 405 Error, WAS 500 Error) - 405 Method not allowed / Request method 'POST' not supported

seongduck 2024. 8. 11. 14:49

현재 상황

  • 웹페이지는 접속이 되나, 로그인이 안되는 현상
  • 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) 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 값을 확인해봐도 좋을 것 같다.