반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- ServletContextListener
- Spring Boot
- MVC
- 점사라짐
- @PathVariable
- #jsp
- 웹 어플리케이션 감시
- tomcat
- #sendRedirect()
- 한글 처리
- #페이지이동
- 서블릿 초기화 파라미터
- servletContext
- ServletConfig
- jsp
- Servelt
- oauth
- 확장자 사라짐
- 데이터 공유
- 서블릿
- spring security
- #java
- 디자인패턴
- Spring
- spring5
- servlet
- Container
Archives
- Today
- Total
Choi의 고유결계
[Nginx][Spring] net::err_http2_protocol_error 오류 해결 본문
반응형
상황
회사에 인트라넷 웹서비스가 있는데 간혈적으로 net::err_http2_protocol_error 오류가 발생 했다.
원래도 잘되는 페이지였기 때문에 감을 잡을수 없었다..
처음에는 응답 데이터량이 많아서 발생하는 http2 오류 인줄 알았지만 그것도 아니였다.
로컬 혹은 개발 서버에서 구동 시 전혀 문제가 없었는데, 운영 서버에서만 유독 그랬다...
운영 서비스 앞단에는 Nginx가 프록시 서버로 동작하고있는데 이것을 힌트 삼아 열심히 구글링!
아래 내용을 찾을 수 있었다..!
원인
대충 응답에 content-length 헤더가 없으면 해당 에러가 발생할 수 있다는 내용으로 이해..?
https://github.com/FireBurn/haproxy/commit/bbe4f7c0042ebfa9e24060111fef2e570751765f
확인해보니 오류가 안나는 로컬/개발 서버에서의 정상 응답과 운영의 비정상 응답을 확인해보니
content-length유무의 차이가 있었다. ㅠ
해결
운영과 개발 Nginx가 따로 있고 설정도 조금씩 다른데,, 아마 여기서 문제가 발생하거나 버전이 달라서 그런것 같다.
운영 프록시 서버 설정을 바꾸기에는 부담이 커서 인트라넷 서비스에 아래 필터를 추가하여 해결하였다.
@Component
public class ContentLengthFilter implements Filter {
@Override
public void init(FilterConfig filterConfig) throws ServletException {
}
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws ServletException, IOException {
ContentCachingResponseWrapper responseWrapper = new ContentCachingResponseWrapper((HttpServletResponse) response);
chain.doFilter(request, responseWrapper);
responseWrapper.copyBodyToResponse();
}
@Override
public void destroy() {
}
}
반응형
Comments