[nginx] tomcat과 연동시에는 프로토콜 설정을 확인하자

namkun·2023년 1월 28일
0

서버개발

목록 보기
7/7

서비스가 올라가있는 서버를 보다가, 리버스 프록시 역할을 하는게 apache httpd, nginx 두 개가 다 있고,

nginx에 apache httpd 가 연결되어있어서, nginx-httpd-tomcat으로 되어있는 기이한 구조가 되어있는 것을 확인했다.

그래서 이 구조를 nginx-tomcat으로 바꾸려고 했고, 단순하게 nginx설치 하고 해당 포트로만 변경해주면 되겠지...라는 생각으로 진행했는데 바꾸고 난 뒤에 502 bad gateway 에러가 발생했다.

처음에는 뭔가 연동해주는 톰캣의 port를 잘못작성했다거나, 아니면 nginx의 설정을 잘못한 건지 확인부터 했다.

그러나 모두 정상적으로 되어있었고, 어떤게 문제인지 확인해보다가...

기존에 apache httpd-tomcat 세팅으로 되어있었어서, tomcat쪽의 protocol 설정이 ajp로 되어있는 것을 확인했다.

ajp는 apache httpd 전용 프로토콜이고, nginx는 http 프로토콜을 지원하기에(별도 모듈을 설치하지 않는 이상은..), 프로토콜 간의 차이가 있어 연결이 되지 않고 있던 것이었다.

아래와 같이 protocol 을 HTTP/1.1 로 설정한 뒤, tomcat을 재기동 하였다. (아래는 예시의 설정이다.)

<Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443"·
               proxyName="tomcat.test.com" proxyPort="80"·
               />

그리고 nginx를 reload 해주었더니, 정상적으로 잘 작동하는 것을 확인했다.

굳!

profile
개발하는 중국학과 사람

0개의 댓글