프로젝트 내에서 실시간 채팅을 웹 소켓을 이용해 구현했고, 개발 환경에서는 아무 문제 없이 동작했는데 배포 환경에서 websocket connection to failed가 발생했습니다. 해결 방법 /etc/nginx/sites-available/reverse-proxy.conf 파일 수정 proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; location / { proxy_pass http://127.0.0.1:8081; proxy_http_version 1.1; # 추가 proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; p..
서론 홈서버를 한대 운영중이고 nginx에 대해 공부중에 우분투 서버의 보안에 대한 포스트를 읽게 되었다. 이때 fail2ban을 알게 되었고 journalctl -f를 통해 외부에서 계속 홈서버에 접근시도하려는 것을 확인하였다. 이를 막기위해 fail2ban을 적용해보자. fail2ban이란? 공개 IP 주소를 갖는 컴퓨터에 ssh 서버를 열어 놓고 기다리면 전세계에서 접속 시도가 들어오는 것을 확인할 수 있다. 이를 막기 위해 사용하는 프로그램이 fail2ban이다. fail2ban은 서비스의 로그 파일을 읽어, 특정 IP에서 정해진 시간(findtime) 동안 정해진 횟수(maxretry)를 초과하여 접속에 실패했다면 정해진 시간(bantime) 동안 그 IP를 차단하는 간단한 서비스이다. 즉 ss..
서론 AWS EC2에 원격접속을 위해 ssh를 이용해 연결을 하는데 nginx를 적용할때마다 ssh접속이 끊기고 다시 접속할려고 시도할 때 timeout이 발생해서 접속하지 못하는 문제가 발생했다. 본론 EC2 인바운드 편집을 통해 80,22, 443포트에 대해 허용을 설정하고, EC2에 nginx를 설치한 뒤에 ufw를 통해 80, 443포트에 대한 방화벽을 열때 문제가 발생했다. 초반에는 nginx 자체적인 문제라고 생각했지만 여러번 인스턴스를 지우고 생성하고 nginx를 깔고 반복하다보니 ufw의 문제라는 것을 확인했다. ufw enable로 우분투 방화벽을 활성화시켰는데 80, 443만 허용하고 22번은 허용하지 않음으로 발생한 문제였다. 해결법 1. ufw를 건들지 않기 어차피 인바운드 편집에서..
Swap 메모리는 하드디스크 일부를 RAM처럼 사용하도록 만들어진 메모리입니다. 메모리를 초과하는 프로그램을 돌리는 경우 메모리의 부족으로 인해 메모리가 run out 되는 것을 막을 수 있습니다. 하지만 RAM이 아닌 하드디스크이기에 읽고 쓰는 속도가 느려지게 됩니다. 1. swap 파일 확인 먼저 swap 파일이 있는지 확인합니다. sudo free -m sudo swapon -s swqp 파일이 존재하면 작동을 중지합니다. sudo swapoff -a 2. swap 파일 생성 -l 뒤에 8G를 입력해서 8G의 추가적인 가상 메모리를 사용할 수 있습니다. sudo fallocate -l 8G /swapfile swapfile의 권한을 수정한 뒤, 해당 파일이 swap으로 동작하도록 만든다. sudo ..
실행환경 Ubuntu 22.04 Docker 설치방법 1. 우분투 시스템 패키지 업데이트 sudo apt update 2. 필요한 패키지 설치 sudo apt-get install apt-transport-https ca-certificates curl gnupg-agent software-properties-common 3. Docker의 공식 GPG키 추가 curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - 4. DOcker의 공식 apt 저장소를 추가 sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_rel..
로그 모니터링 운영하고 있는 서비스에 장애가 생기면, 로그를 분석함으로 발빠르게 대응을 할 수 있다. 실제로 운영중인 서비스는 짧은 시간의 장애에도 사용자에게 부정적인 영향을 주기에 발빠르게 대처해야한다. 이를 위해 사용하는것이 로그모니터링 시스템이다. ELK 스택이란? ElasticSearch 로그 저장 및 검색 Logstash 로그 수집 Kibana 로그 시각화 3개의 모듈을 따로 사용할 수 있지만 합쳤을때 호환이 좋아서 같이 구축하여 사용한다. 1. Logstach 시스템의 로그, 메트릭 등 다양한 소스에서 데이터를 수집 데이터 변환 데이터 출력 및 송신 2. Elasticsearch 데이터 저장 데이터 분석 데이터 관리 3. kibana 데이터의 시각화 Docker-Compose로 ELK 스택 활..