본문 바로가기
미들웨어/Nginx

NGINX의 HTTP 메서드를 제한해보자

by leedonggeun 2023. 5. 14.

NGINX

0. 왜 메서드를 제한해야 할까?

우리는 기본적으로 GET / POST 메서드를 가장 많이 사용합니다.
최근 들어 RESTful 한 API를 개발하고자 PUT / DELETE / PATCH 등을 사용하기도 하죠.
하지만 일반적으로 웹사이트에서는 HEAD / OPTIONS / TRACE 메서드를 사용할 일이 없습니다.

이에, 우리는 웹 애플리케이션에서 사용 중인 메서드만 OPEN 해놓을 필요가 있습니다.
(KISA에서는 GET/POST만 열어두길 권고하고 있습니다. but. RESTful 한 API를 사용 중이라면 예외)

 

1. 메서드 제한 설정하기

각 server 블록에는 location 블록이 존재할 것입니다.
이 location 블록 안에 limit_except 디렉티브를 작성해 줄 것입니다.

server {
    ...
    ..
    .
    
    location / {
        limit_except GET {
            deny  all;
        }

        root /app/nginx;
        index index.html;
    }
}

이제 이 서버에 설정된 도메인으로 요청이 인입되었을 경우, GET 요청을 제외한 모든 요청은 거부될 것입니다.

 

2. 메서드 차단 확인하기

2-1. GET 요청하기

정상적으로 GET 요청에 대해 응답한 화면

2-2. POST 요청하기

POST 요청 시 403 에러를 응답받은 화면

 

3. 마치며...

이렇게 nginx의 HTTP 메서드를 제한하는 방법을 알아보았습니다.
여러분의 서비스에 적절한 허용/거부 정책을 넣어 보다 더 보안성 있는 서비스를 만들 수 있으면 좋겠습니다!

댓글