본문 바로가기

서버운영 (TA, ADMIN)/미들웨어

(29)
[Nginx] nginx 정적 페이지 POST 활성화 방법 Nginx error_page redirect 설정 이용 nginx는 기본적으로 정적 파일로 POST 요청 처리를 허용하지 않는데, nginx 설정을 수정하여 POST 처리를 우회할 수 있다. 해당 site/domain을 위한 설정을 확인해보면, location 블록이 존재할 것이다. location / { error_page 405 =200 $uri; ... =200은 오타가 아니며, = 뒤에 공백을 추가하면 동작하지 않을 것이다. 위 설정은 405 응답도 200(OK) 응답으로 내려가도록 설정한 것이다. 웹서버를 다시 시작하기전에 구성이 올바른지 확인하려면 아래 명령을 실행하여, 문법이 올바른지 미리 확인해볼 수 있다. /usr/sbin/nginx -t 문법에 이상이 없음을 확인하면, nginx 서버..
[tomcat] 톰캣 메모리릭 문제 https://knight76.tistory.com/947 톰캣 메모리릭 문제에 대해서 많이 좋아질것으로 예상된다. 스프링소스의 개발자이며, 톰캣 Committer인 Mark Thomas에 의해 Memory Leak Protection 기능이 새로 생기게 되었다. 원래는 톰캣7부터 적용하려고 했는데, 톰캣 6.0.24부터 적용되었다고 한다. 6.0.25버전에서는 Memory leak 체크 api도 지원한다. Mark는 OOME가 발생하는 원인을 톰캣이 아닌 Jvm, library라고 언급하였고, 그 예는 다음과 같다고 한다. (1) Application, Library code에 의해서 발생 A. JDBC driver B. Logging framework C. ThreadLocal의 object를 저장하..
[Servlet] 서블릿 컨테이너와 스프링 컨테이너 https://minwan1.github.io/2017/10/08/2017-10-08-Spring-Container,Servlet-Container/ https://minwan1.github.io/2018/11/21/2018-11-21-jsp-springboot-%EB%8F%99%EC%9E%91%EA%B3%BC%EC%A0%95/ 서블릿 컨테이너는 개발자가 웹서버와 통신하기 위하여 소켓을 생성하고, 특정 포트에 리스닝하고, 스트림을 생성하는 등의 복잡한 일들을 할 필요가 없게 해준다. 컨테이너는 servlet의 생성부터 소멸까지의 일련의 과정(Life Cycle)을 관리한다. 서블릿 컨테이너는 요청이 들어올때마다 새로운 자바 스레드를 만든다. 우리가 알고 잇는 대표적인 Servlet Container가 T..
[tomcat] 톰캣, 카탈리나, 재스퍼 https://ehdvudee.tistory.com/8 톰캣 아파치 소프트웨어 재단(ASF)의 오픈 소스 자바 서블릿 컨테이너이다. 톰캣은 서블릿, JSP, EL, JSTL, WebSocket 등 여러가지 JavaEE 기술을 구현하고, Java 코드를 실행하는 순수 Java HTTP 웹서버이다. (자바 웹 서버 - was) 톰캣 카탈리나 톰캣은 여러개의 컴포넌트로 구성된다. 톰캣의 코어 컴포넌트는 카탈리나이다. 카탈리나는 톰캣의 서블릿 스펙의 실질적인 구동을 제공한다. 톰캣 서버를 가동시킬 경우, 카탈리나를 구동시킨 것이라 생각하면 된다. 카탈리나 기본 동작은 톰캣의 6개 config 파일을 편집하여 구현/제어할 수 있다. 1) catalina.policy JavaEE 스펙에 정의된 표준 보안 정책 구문..
[톰캣] 세션 클러스터 휘발성 영역인 JVM 메모리 내에 세션 객체가 생성되어 있을때 Tomcat이 중지한다면, 메모리 내에 생성되어 있던 모든 세션은 제거된다. Tomcat 인스턴스를 다중화하더라도 특정 Tomcat 인스턴스가 중지한다면 그 Tomcat 내의 세션은 모두 사라지게 된다. 세션을 통해 구현한 범위에 따라 영향도가 달라지나, 흔히 로그인을 다시 해야한다는 등의 상황이 벌어진다. 이러한 문제를 해결하기 위해 세션 클러스터를 사용한다. 동일 업무를 처리하는 여러 인스턴스를 하나의 클러스터 그룹으로 묶으면 멤버들은 자신이 생성하고 변경한 세션 정보를 다른 인스턴스와 공유한다. 갑자기 장애가 발생하여 특정 멤버가 중지하더라도 여전히 다른 인스턴스에서 세션을 가지고 있기 때문에 사용자 세션은 유지된다. 단, 세션 클러스터..