본문 바로가기

미들웨어7

NGINX 요청의 크기를 조절해보자. (client_max_body_size) 0. 이런 에러메시지를 만나보셨나요? 그렇다면 아래 글을 확인하여 이 에러를 헤쳐나가 봅시다. Failed to load resource: the server responded with a status of 413 (Request Entity Too Large) 1. 에러가 발생한 이유 NGINX에서 업로드하는 파일의 용량을 기본적(default)으로 1MB로 제한하기 때문입니다. 왜 제한하냐고요? 당연히 공격을 피하기 위해서입니다. 만약, 파일 용량에 제한을 두지 않는다면 공격자들은 해당 서버로 용량이 큰 파일을 지속적으로 업로드하려고 시도할 것입니다. 2. 그럼 어떻게 파일 용량을 조절할까? 기본적으로는 nginx.conf의 http 블록에서 설정할 수 있습니다. 바로 client_max_body_s.. 2023. 10. 1.
RPM을 이용해 Elasticsearch를 설치해보자. 개요 이번 게시글에서는 엘라스틱서치 8.x (stable) 버전을 RPM(dnf/yum)으로 설치하는 방법에 대해 기술합니다. 1. Elasticsearch GPG Key import 엘라스틱서치 서명키를 받습니다. rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch 2. Elasticsearch repository 추가하기 vi /etc/yum.repos.d/elasticsearch.repo [elasticsearch] name=Elasticsearch repository for 8.x packages baseurl=https://artifacts.elastic.co/packages/8.x/yum gpgcheck=1 gpgkey=https:.. 2023. 9. 22.
Elasticsearch에 대해 가볍게 알아보자. 1. Elasticsearch란? 아파치 루씬(Apache Lucene) 기반의 분산형 검색 엔진입니다. RDBMS처럼 열 데이터(Column)로 저장하는 것이 아닌, JSON 문서로 직렬화된 데이터를 저장합니다. 위에서 소개한 대로 분산형 검색 엔진으로 하나의 클러스터 내에 여러 노드가 있을 경우, 전체에 분산되어 저장되며 어떤 노드에서든 쉽고 빠르게 접근할 수 있습니다. 또한, 문서가 저장되고 실시간(약 1초 이내)으로 색인되어 검색이 가능합니다. 이를 위해 Elasticsearch는 역 색인(inverted index)이라는 데이터 구조를 사용합니다. 이 역 색인은 문서 내의 모든 단어를 나열하고, 그 단어에 문서를 Key-Value 형식으로 추가합니다. 즉, 아래와 같은 구조가 됩니다. 즉, My.. 2023. 8. 20.
NGINX의 HTTP 메서드를 제한해보자 0. 왜 메서드를 제한해야 할까? 우리는 기본적으로 GET / POST 메서드를 가장 많이 사용합니다. 최근 들어 RESTful 한 API를 개발하고자 PUT / DELETE / PATCH 등을 사용하기도 하죠. 하지만 일반적으로 웹사이트에서는 HEAD / OPTIONS / TRACE 메서드를 사용할 일이 없습니다. 이에, 우리는 웹 애플리케이션에서 사용 중인 메서드만 OPEN 해놓을 필요가 있습니다. (KISA에서는 GET/POST만 열어두길 권고하고 있습니다. but. RESTful 한 API를 사용 중이라면 예외) 1. 메서드 제한 설정하기 각 server 블록에는 location 블록이 존재할 것입니다. 이 location 블록 안에 limit_except 디렉티브를 작성해 줄 것입니다. ser.. 2023. 5. 14.
HTTP 응답에서 NGINX의 버전 정보를 숨겨보자 왜 NGINX 정보를 숨겨야 할까? 웹서버의 정보와 버전이 명시되어 있다면 당연히 그 버전에 맞는 취약점을 찾아 공격을 시도할 것입니다. 이에 우리는 최소한 웹서버의 버전 정보라도 숨겨야 합니다. 취약점을 최대한 감추기 위해서요! 1. NGINX 버전 정보 숨기기 가장 먼저 설치된 엔진엑스의 버전 정보를 숨기려 합니다. 엔진엑스뿐 아니라 대개의 웹서버는 설정값 하나를 넣어주면 되는 일이기 때문에 간단합니다. http 블록 안에 server_tokens 옵션(default ON)을 off 설정해 주면 끝입니다. vi /etc/nginx/nginx.conf ... http { server_tokensoff; ... .. } 2. 설정 확인하기 재기동 후 설정이 적용됐는지 확인합니다. systemctl res.. 2023. 5. 13.
NGINX의 설정에 대해 쉽게 알아보자. 지난 포스트에서는 NGINX를 설치해 보았습니다. 이제 우리는 이 웹서버를 적절히 사용하기 위해 설정에 대해 알아보고자 합니다. 0. 들어가기에 앞서서 Apache, NGINX 등 모든 웹서버는 아마 설정에 따라 성능이 천차만별일 것입니다. 이에 어느 설정이 있는지, 그 설정이 어떠한 역할을 하는지에 대해 아는 것이 중요합니다. 이에 이번 포스트는 NGINX가 제공하는 기본 설정에 대해 쉽게 알아보겠습니다. 1. nginx.conf NGINX의 기본 설정 파일입니다. [user@server /]# cat /etc/nginx/nginx.conf user nginx; worker_processes auto; error_log /var/log/nginx/error.log notice; pid /var/run/.. 2023. 5. 10.