리눅스·서버 학습
서버를 다룰 때 자주 만나는 주제를 명령어 예제와 함께 정리했어요.
- 서브넷 마스크와 CIDR, 예제로 이해하기: /24가 왜 254개인지, 서브넷을 어떻게 나누는지 숫자 계산 예제로 정리했습니다.
- RAID 0, 1, 5, 6, 10 차이와 선택 기준: RAID 레벨별 용량, 장애 허용, 성능을 비교하고 용도별 선택 기준을 정리했습니다.
- crontab 사용법과 실행이 안 될 때 확인할 것: cron 표현식 읽는 법과 "터미널에서는 되는데 cron에서는 안 되는" 문제의 원인을 정리했습니다.
- chmod 755, 644 의미와 안전한 권한 설정: 리눅스 권한 숫자를 읽는 법, 디렉터리 권한의 의미, 777을 쓰면 안 되는 이유를 정리했습니다.
- nginx 리버스 프록시와 HTTPS 설정 따라하기: 백엔드 앱 앞에 nginx를 두고 Let's Encrypt 인증서를 적용하는 과정을 정리했습니다.
- 리눅스 디스크가 꽉 찼을 때 원인 찾고 해결하기: df, du로 범인을 찾는 순서와 파일을 지워도 용량이 안 줄어드는 경우를 정리했습니다.
- systemd로 내 프로그램을 서비스로 등록하기: 서비스 파일 작성, 자동 시작, 재시작 정책, 로그 확인까지 한 번에 정리했습니다.
- SSH 키 로그인 설정과 서버 기본 보안: 비밀번호 로그인을 끄고 키 인증으로 바꾸는 순서와 잠기지 않기 위한 주의사항을 정리했습니다.
- grep, awk로 서버 로그 빠르게 분석하기: nginx 접속 로그에서 많이 호출한 IP, 오류 비율, 느린 요청을 찾는 명령을 모았습니다.
- JWT 구조와 안전하게 쓰는 방법: JWT가 어떻게 생겼는지, 어디에 저장하고 무엇을 넣으면 안 되는지 정리했습니다.
- React 사이트가 검색에 안 나올 때: 빈 HTML 문제 해결기: 모든 페이지가 같은 제목의 빈 화면으로 수집되던 문제를 찾고 빌드 단계에서 해결한 기록입니다.
- 내 게시판에서 찾은 저장형 XSS와 수정 과정: 에디터 HTML 정화가 꺼져 있던 문제를 직접 공격 문자열로 확인하고 고친 기록입니다.
- nginx로 로그인 무차별 대입 줄이기: limit_req 시험 기록: 로그인과 가입 요청만 제한하는 설정과 실제로 429가 나오는지 시험한 결과를 정리했습니다.
- Jenkins로 nginx 설정까지 안전하게 자동 배포하기: 설정 오류가 나면 이전 상태로 자동 복구하는 배포 단계를 구성한 방법입니다.