티스토리 뷰

413 Request Entity Too Large 오류 해결 방법

관리하고 있는 서비스 중 외부에 사용되는 API를 POST호출할 때, 413 Request Entity Too Large 오류가 발생한다는 보고가 들어와서 해결방법을 찾아봤습니다.

우선 제가 관리하고 있는 서비스는 SpringBoot 2.x로 개발되어있고, 서버는 CentOS, 그리고 Apache 2.4Embedded Tomcat을 연동하여 서비스를 하고 있습니다.

오류의 원인은 TomcatApache의 파라미터 허용 길이가 8190byte로 제한되어 있어서 발생했습니다.

이를 해결하기 위해 파라미터의 길이를 늘려주는 설정을 추가하였습니다. 설정은 아래와 같이 추가했습니다.

1. httpd.conf 파일 수정


CentOS 기준 /etc/httpd/conf 경로에 httpd.conf이 있는데요, 이 파일을 열어서 아래와 같이 추가해주세요.

LimitRequestLine 65536 
LimitRequestBody 0
LimitRequestFieldSize 65536 
LimitRequestFields 10000  

1. workers.properties 파일 수정


ApacheTomcat을 연동되어있다면, workers.properties 파일도 생성되어 있으실 겁니다. 이 파일을 열어서 아래와 같이 추가해주세요.

저는 worker.listtomcat 이름으로 지정되있기 때문에 아래와 같이 작성되있습니다.

만약 다른 이름을 사용하고 계신다면 수정해서 입력해주세요.

worker.tomcat.max_packet_size=65536

3. Embedded Tomcat 설정 추가


SpringbootEmbedded TomcatApache를 연동하면 아래의 설정 코드를 추가하셨을텐데요,

@Configuration
public class ContainerConfig {

    @Value("${ajp.port}")
    int ajpPort;

    @Bean
    public ServletWebServerFactory servletContainer() {
        TomcatServletWebServerFactory tomcat = new TomcatServletWebServerFactory();
        tomcat.addAdditionalTomcatConnectors(createAjpConnector());
        return tomcat;
    }

    private Connector createAjpConnector() {
        Connector ajpConnector = new Connector("AJP/1.3");
        ajpConnector.setPort(ajpPort);
        ajpConnector.setSecure(false);
        ajpConnector.setAllowTrace(false);
        ajpConnector.setScheme("http");
        ajpConnector.setEnableLookups(false);
        ajpConnector.setProperty("tomcatAuthentication", "false");
        return ajpConnector;
    }

}

위의 createAjpConnector() 메소드에 아래의 코드를 추가해주시기 바랍니다.

ajpConnector.setProperty("PacketSize", "65535");
ajpConnector.setProperty("maxHttpHeaderSize", "30000");

만약 SpringbootEmbedded Tomcat이 아닌 외장 톰캣을 사용하신다면,

server.xml을 열어서 <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" /> 이 안에 아래의 설정을 추가하시면 됩니다.

packetSize="65536"
maxHttpHeaderSize="30000"

저는 개발 서버, 운영 서버에 위와 같이 적용하였을 때, 413 오류가 해결되었습니다.

혹시 위와 같이 설정했는데도 오류가 계속 발생하거나, 다른 방법이 있다면 댓글로 달아주세요.

참고

'Programming > server' 카테고리의 다른 글

[Linux] 로그 실시간으로 보는 명령어 - tail  (0) 2020.03.11
IIS + Tomcat 연동  (4) 2019.07.19
Apache와 SpringBoot(Embedded Tomcat) 연동  (1) 2019.07.15
Apache, Tomcat 연동  (0) 2019.07.14
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
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
글 보관함