컨텐츠로 건너뛰기

TestPilot Web

  • 예제 페이지
  • 캐시 시험 메인 고침182237
  • shellsim v19 rocket test (임시)
  • wpinst 조각판 (임시)
  • wpinst 주조판 (임시)
  • hPanel 주조판 (임시)
  • TestPilot Web

[월:] 2025년 08월

Apache&Nginx에 Varnish Cache 설치 및 설정

2025년 08월 11일 작성자: testpilotweb
Varnish Cache 로고

기존 Apache와 Nginx 조합의 서버에 Varnish Cache를 추가로 설치하고 적용 해 보도록 하겠습니다. Nginx에 Varnish Cache를 추가로 설정하는 작업이기 때문에 기존의 서버에 적용된 사항을 체크 해 보겠습니다.

카테고리 Linux 댓글 남기기

서버 인프라 콘텐츠 지도

⌨️CLI8lsblk 명령어: 디스크·파티션 구조와 UUID 확인lsblk 명령어는 서버에 연결된 디스크와 파티션, 마운트 위치를 트리 구조로 출력하며, 디스크 크기와 파일 시스템 종류, UUID까지 한 번에 확인할 수 있습니다. AlmaLinux 9 서버에서 lsblk를 실행한 결과 snap 패키지가 만든 loop 장치가 디스크보다 먼저 출력되어 -e 7로 걸러 냈습니다. 이어서 -f로 루트 파티션의 xfs 파일 시스템과 UUID를 확인했습니다.→tracepath 명령어: traceroute 대신 홉과 경로 MTU 확인리눅스 서버에서 목적지까지 패킷이 거쳐 가는 경로(홉)와 경로 MTU는 tracepath 명령어로 root 권한 없이 확인할 수 있습니다. traceroute가 설치되어 있지 않은 AlmaLinux 9 서버에서 홉 수를 10으로 제한해 example.com까지 경로를 확인한 결과, 넷째 홉까지 응답 시간과 경로 MTU 1500을 읽었고 그 뒤 여섯 홉에서는 응답이 오지 않았습니다.→pgrep 명령어: 이름으로 PID 찾기와 -f 옵션, pidof & pkill 차이실행 중인 프로세스의 번호(PID)를 이름이나 계정, 명령 줄로 찾을 때는 pgrep 명령어를 사용합니다. AlmaLinux 9 서버에서 sleep 프로그램을 다른 이름으로 복사해 세 개를 띄우고 옵션마다 찾은 프로세스를 비교했습니다. 이름으로 찾을 때는 그 세 프로세스만 나왔고, -f로 명령 줄 전체에서 찾자 그 프로세스를 실행한 timeout까지 함께 나왔습니다.→man 명령어: 사용법과 옵션, 섹션 번호와 man -k 검색리눅스 서버에서 명령이나 설정 파일의 사용법을 확인할 때는 man 명령어로 매뉴얼 페이지를 열고, 이름을 모를 때는 man -k로 짧은 설명을 검색합니다. AlmaLinux 9와 Debian 12 서버에서 passwd 페이지를 찾아본 결과, Debian 12에는 1번 명령 섹션과 5번 파일 형식 섹션 페이지가 함께 있었지만 AlmaLinux 9에는 5번 섹션 페이지가 없었습니다.→id 명령어: UID와 그룹 확인, whoami, groups와 보조 그룹리눅스 서버에서 지금 계정의 UID와 그룹을 확인할 때는 id 명령어를 사용하며, 계정 이름만 필요하면 whoami를, 그룹 이름만 필요하면 groups를 사용합니다. AlmaLinux 9와 Debian 12 서버에서 세 명령을 차례로 실행해 출력을 비교한 결과, id -un과 whoami는 같은 계정 이름을 출력했고 groups는 id의 그룹 목록을 이름만 남겨 출력했습니다.→diff 명령어: 파일 비교와 diff -u 패치 형식, 옵션 정리diff 명령어는 두 파일을 줄 단위로 비교해 서로 다른 줄만 출력하는 리눅스 명령어입니다. 웹 서버 설정을 흉내 낸 이전 파일과 새 파일을 diff로 비교해 바뀐 세 곳을 2,3c2,3, 5d4, 6a6 세 줄로 확인했고, -u 옵션으로 저장한 패치 파일에는 같은 변경이 빼기와 더하기 기호로 정리되었습니다.→alias 명령어: 별칭 만들기와 unalias 삭제, ~/.bashrc 영구 설정alias 명령어는 자주 입력하는 명령에 짧은 이름을 붙여, 그 이름만 입력해도 원래 명령이 실행되게 하는 bash 내장 명령입니다. AlmaLinux 9 서버에서 별칭을 만들고 지워 본 결과, 별칭은 만든 셸 안에서만 유지되었고 ~/.bashrc에 한 줄을 더하자 새로 연 셸에서도 그대로 남았습니다.→mount 명령어: 디스크와 이미지 파일 마운트, umount 해제와 target is busy 해결mount 명령어는 디스크 파티션이나 이미지 파일의 파일 시스템을 디렉터리에 연결하는 리눅스 명령어이고, 연결을 해제할 때는 umount를 사용합니다. AlmaLinux 9 시험 서버에서 연습용 이미지의 파티션을 마운트해 읽기 전용 전환과 해제까지 진행했고, 해제할 때 나온 target is busy 오류는 fuser로 사용 중인 프로세스를 찾아 해결했습니다.→
🐧Linux8/tmp 디렉토리 보안 설정 [CentOS 7]리눅스 웹 서버를 운영할 때, /tmp 디렉토리는 시스템과 여러 애플리케이션이 임시 파일을 저장하는 공간으로 자주 사용됩니다.→Apache&Nginx에 Varnish Cache 설치 및 설정기존 Apache와 Nginx 조합의 서버에 Varnish Cache를 추가로 설치하고 적용 해 보도록 하겠습니다. Nginx에 Varnish Cache를 추가로 설정하는 작업이기 때문에 기존의 서버에 적용된 사항을 체크 해 보겠습니다.→리눅스 tmp 디렉토리: /tmp와 /var/tmp 차이리눅스 tmp 디렉토리는 임시 파일을 저장하기 위해 주로 /tmp와 /var/tmp 디렉토리를 사용합니다.→Claude MCP Linux 서버 연결: SSH 설정 방법Claude MCP Linux 서버 연결로 클로드에게 서버 명령을 맡겨도 SSH 키 파일은 내 PC 밖으로 나가지 않습니다. 오가는 것과 오가지 않는 것, ssh-mcp-server 등록부터 Node.js 오류 점검까지 실제 화면으로 짚었습니다.→nginx njs: 모듈 설치와 js_set 설정, reload 적용으로 자바스크립트 변수 만들기nginx njs는 nginx 설정 안에서 자바스크립트 함수로 요청을 처리하거나 변수 값을 만드는 nginx 공식 모듈입니다. Nginx + Apache 구성 서버에서 nginx 설정만으로는 바꿀 수 없는 요청 주소의 대소문자를 맞추기 위해 njs 모듈을 설치된 nginx와 같은 버전으로 설치하고, js_set으로 만든 변수를 캐시 파일 경로에 넣어 재시작 없이 reload로 적용했습니다.→Node.js 설치: 브라우저 없이 서버에서 버튼 작동 체크서버에서 자바스크립트를 실행하려면 먼저 Node.js 설치가 필요합니다. Nginx와 Apache 구성의 워드프레스 서버에 Node.js 24.21.0을 설치하고, jsdom 30.1.3으로 브라우저 없이 웹 페이지의 버튼 스크립트를 검사했습니다.→우분투 서버 초기 설정: 신규 설치 후 Ubuntu 서버에서 시작할 9단계새 서버를 받으면 서비스를 올리기 전에 우분투 서버 초기 설정을 한 번 거칩니다. 디지털오션에서 만든 Ubuntu 24.04 서버에 root로 접속해 패키지 업데이트부터 sudo 사용자, 키 로그인, 방화벽, 시간대, 자동 보안 업데이트, 스왑까지 차례로 설정하고, 재부팅한 뒤에도 설정이 그대로 남는 것까지 확인했습니다.→PM2 + Nginx 리버스 프록시: Node.js 앱을 80번 포트에 연결Ubuntu 24.04 서버에 Node.js PM2 Nginx 리버스 프록시 구성을 올려, 앱 실행은 PM2가 담당하고 80번 포트로 들어온 요청은 Nginx가 앱으로 넘기게 설정했습니다. 앱 프로세스를 강제로 종료하거나 서버를 재부팅해도 PM2가 앱을 다시 실행하는 것까지 확인했습니다.→
🗄️DB8MariaDB root 패스워드 분실 : mariadb or MySQL 패스워드 초기화MariaDB root 패스워드 분실(또는 MySQL)로 인해 로그인이 불가능한 경우mariadb&MySQL 패스워드 초기화가 필요합니다. 데몬에 대한 정지 및 시작 등의 구동 권한이 있다면 패스워드 초기화를 진행해서 재 설정이 가능합니다.→MariaDB: Slow Query Log 설정MariaDB에서 Slow Query Log 설정을 할 경우 Mariadb 10.2 버전부터 etc/my.cnf.d/ 폴더안에 mysql-clients.cnf 및 server.cnf 파일로 나뉘게 되었습니다. mysql 이라도 폴더를 확인한 후에 설정 내역에 따라 확인하면 되겠습니다.→SSMS(SQL Server Management Studio)란SSMS는Microsoft SQL Server 내의 모든 구성 요소의 구성과 관리하는데 사용되는 Microsoft에서 개발한 소프트웨어 응용 프로그램입니다. SQL Server 2005에서 처음 출시되었으며, SQL 2000 이전 버전의 Enterprise Manager 의 후속 제품입니다.→[DBMS] MariaDB cnf 파일 설정DBMS인 MariaDB를 설치하면 MariaDB cnf 파일 설정을 하게 되는데 MySQL MariaDB 환경설정 파일 mycnf는 /etc/my.cnf 경로에 있으며, /etc/my.cnf.d/ 디렉토리를 포함하는 설정이 기본으로 잡혀 있습니다. 11.3 버전 설치 시 화면입니다.→phpMyAdmin 설치 및 취약점리눅스 서버에 MySQL 또는 MariaDB, PostgreSQL 설치 후 좀 더 편리한 DB 관리를 위해 phpMyAdmin 설치 후 사용하는 경우가 많습니다. 기본적인 phpMyAdmin 설치와 취약점에 대해서 알아 보도록 하겠습니다.→MariaDB 서버 접속 오류: Can't Connect to Server onDB 잡업을 위해 서버에 접속하려고 할 때 Can't Connect to Server on이란 메시지를 확인되는 경우가 발생할 수 있습니다. MySQL/MariaDB 서버 접속 오류의 원인과 해결 방법은 다음과 같습니다.→[DBMS] MariaDB 테이블 손상 원인 및 복구MySQL 또는 MariaDB를 설치한 서버에서 테이블이 깨지는 경우가 있습니다. MariaDB 테이블 손상의 원인은 크게 다음과 같습니다.→mariadb-check 명령어: 테이블 자동 복구mariadb-check 명령어는 여러 테이블을 검사, 복구, 분석 및 최적화 할 수 있는 유지 관리 도구입니다. mariadb-check은 myisamchk 및 aria_chk과 다르게 서버에서 MariaDB가 실행 중이어야 합니다.→
☁️클라우드 · 가상화8[AWS] LightSail Swap Memory 설정워드프레스 블로그를 운영하면서 직접 AWS LightSail로 이전해서 직접 관리하면서 업 중에 메모리 부족 현상을 볼 수 있는 단계가 멀지 않아 Swap Memory 설정의 필요성을 생각하게 되었습니다. LightSail Swap Memory 설정 용량은 4G로 결정했는데 이유는 SSD를 사용하는 서버이기 때문에 HDD에 비해 스왑 메모리에 대한 접근 속도가 빠르기 때문에 성능 저하가 상대적으로 적기 때문입니다.(HDD를 사용하는 서버가 현재까지 있지는 않겠지만..)→AWS 패스키 생성아마존 웹 서비스를 이용할 때 강력한 보안을 위해 다중 인증(MFA) 설정을 필수 사항으로 강제하고 있습니다. 하드웨어 TOTP 토큰, 인증 앱, 패스키 또는 보안 키 설정 중에 하나를 선택해야 합니다. 이 중 AWS 패스키를 생성해서 사용하는 방법으로 진행하기로 했습니다.→Ubuntu Server Rsync 작업_SSH 방식(LightSail)새로 만든 Ubuntu 서버에서 Rsync를 활용해 현재 운영 중인 Alma Linux 서버의 데이터를 동기화하는 작업을 진행해 보겠습니다.→LightSail 윈도우 서버 2022 인스턴스 시작 | 원격 데스크톱 연결AWS에서 LightSail은 생성할 수 있는 서버 스펙에 한해 EC2보다 서버를 만드는데 5분 정도의 짧은 시간이면 원하는 서버를 만들 수 있습니다. LightSail 윈도우 서버 생성 후 원격 데스크톱 연결까지 진행 해 보겠습니다.→Alma Linux 업데이트: 9.4 → 9.8 in LightSail기존에 사용하던 아마존 라이트세일의 Alma Linux 업데이트를 합니다. 9.4에서 9.8로 진행하며, 2026년 9월 기준 라이트세일에서 새로 만들면 9.7까지 제공됩니다. 직접 올리면 신규 인스턴스보다 한 단계 앞선 버전으로 운영하게 됩니다.→디지털오션: 가입부터 Droplet 생성 및 삭제디지털오션(DigitalOcean)은 Droplet이라는 이름의 가상 서버(VPS)를 쓴 시간만큼 요금을 매겨 빌려 주는 클라우드 서비스입니다. 처음 VPS를 만드는 사람 기준으로 가입과 결제 수단 등록을 마치고, Ubuntu 24.04 LTS와 월 6달러 요금제로 Droplet을 만들어 접속 주소를 받는 데까지 2026년 11월 5일 제어판 화면 그대로 따라갔습니다.→디지털오션 Droplet: 생성 옵션, 상세 화면, 삭제 후 요금 확인디지털오션 Droplet(디지털오션의 가상 서버)을 만들 때 지역이나 CPU 옵션을 바꾸면 월 요금이 $32.00에서 $6.00까지 달라지고, 요금은 만든 순간부터 지운 순간까지 초 단위로 쌓입니다. 지운 뒤 사용 금액은 하루 한 번 갱신되는 Billing 화면에서 확인합니다.→벌쳐 서버(Vultr): 콘솔 대시보드 사용법과 가격, 인스턴스 만들기벌쳐(Vultr) 콘솔에서 만드는 벌쳐 서버는 인스턴스로 관리되며, 요금제 표에 월 요금과 시간 요금이 함께 적혀 있습니다. 처음 서버를 만드는 사람 기준으로 콘솔 첫 화면과 메뉴 구성을 살펴보고, 월 $5.00 요금제로 인스턴스를 만드는 단계까지 2026년 11월 7일 콘솔 화면 그대로 따라갔습니다.→
🛠️TroubleShooting8HTTP 503 에러(Service Unavailable) 원인과 해결웹사이트에 접속했을 때 발생하는 HTTP 503 에러(Service Unavailable)의 원인은 서버 측에서 발생하는 에러입니다. 서버 과부하, 서버 구성 오류 등 다양한 원인이 있습니다.→HTTP 403 에러(403 Forbidden)HTTP 403 에러는 지정된 클라이언트가 요청한 리소스에 접근할 권한이 없는 경우 403 Forbidden 에러가 발생합니다.→OpenSSH 취약점 CVE-2024-6387: 임시 차단과 패치 적용OpenSSH 취약점 CVE-2024-6387은 접속한 쪽이 120초 안에 로그인을 끝내지 않을 때 울리는 알람 신호를 파고듭니다. 알람을 처리하는 도중 메모리가 어긋나면 공격자가 심어 둔 코드가 root 권한으로 실행됩니다. 알람을 꺼서 급한 자리를 막고, 업데이트로 코드를 고친 뒤 되돌리는 순서로 정리했습니다.→php-fpm max_children 경고: 워커 증설 전에 로그로 원인 판별php-fpm max_children 경고는 PHP 워커 프로세스가 전부 요청을 처리하는 중이라 새 요청이 대기열에 들어갔다는 신호입니다. 이 경고가 몇 주째 누적된 Nginx와 Apache, php-fpm 구성의 워드프레스 서버에서 로그로 워커를 채운 요청을 가려낸 결과, 설정값을 올리는 대신 nginx 속도 제한으로 해결하게 되었습니다.→gclid 캐시: 광고 클릭 쿼리와 페이지 캐시 키, 첫 바이트 실측gclid 캐시 처리는 광고 클릭 주소 끝에 붙는 gclid 쿼리를 무시하고 쿼리 없는 주소의 캐시 파일로 응답하는 동작입니다. Nginx + Apache 구성의 워드프레스 서버에서 쿼리와 캐시 유무별 첫 바이트를 측정한 결과, gclid가 더한 시간은 0.014~0.015초였고 몇 초 단위의 지연은 캐시를 사용하지 못한 경우에만 발생했습니다.→리눅스 커널 취약점 CVE-2026-98432: 임시 차단과 커널 패치 적용CVE-2026-98432는 IPv4 TCP 연결을 받는 커널 코드에서 해제된 메모리를 다시 읽는 리눅스 커널 취약점으로, 리눅스 커널 CVE 팀이 Critical 등급으로 평가했습니다. 원격에서 인증 없이 공격할 수 있는 결함이라 Nginx와 Apache 구성의 AlmaLinux 9.8 라이트세일 서버에서 고친 커널 패키지로 업데이트하고 재부팅한 뒤, 실행 중인 커널 버전으로 패치를 확인하게 되었습니다.→meta charset utf-8: 애드센스 크롤러가 한글 이미지 주소를 깨뜨린 404와 php-fpm 꽉 참 문제HTML 앞부분에서 meta charset utf-8 선언을 찾지 못하고 응답 머리에도 charset이 없으면, 읽는 쪽은 문서의 문자 인코딩을 짐작하거나 기본값으로 읽게 됩니다. Nginx와 Apache 구성의 워드프레스 서버에서 애드센스 크롤러가 깨진 한글 이미지 주소로 요청을 몰아 보내 404 처리에 PHP 워커가 모두 찬 일을 로그로 추적한 결과, 캐시본 응답 머리에 charset을 붙이고 없는 정적 파일은 nginx가 바로 404로 처리하게 해 같은 요청이 다시 워커를 채우지 않게 했습니다.→Permission denied: /dev/null 포함 10가지 사례Permission denied는 리눅스에서 지금 계정에 그 파일이나 폴더, 명령을 쓸 권한이 없을 때 나오는 오류입니다. 오류 줄 앞의 명령 이름과 경로로 어떤 경우인지 고른 뒤 ls -l로 권한과 소유자를 확인하고, 그 경우에 맞는 권한이나 계정으로 다시 실행하면 해결됩니다.→

최신 글

  • mount 명령어: 디스크와 이미지 파일 마운트, umount 해제와 target is busy 해결
  • alias 명령어: 별칭 만들기와 unalias 삭제, ~/.bashrc 영구 설정
  • diff 명령어: 파일 비교와 diff -u 패치 형식, 옵션 정리
  • id 명령어: UID와 그룹 확인, whoami, groups와 보조 그룹
  • man 명령어: 사용법과 옵션, 섹션 번호와 man -k 검색

최신 댓글

보여줄 댓글이 없습니다.

보관함

  • 2026년 11월
  • 2026년 10월
  • 2026년 9월
  • 2025년 9월
  • 2025년 8월
  • 2025년 7월
  • 2025년 6월
  • 2025년 5월
  • 2024년 8월
  • 2024년 7월
  • 2024년 6월
  • 2024년 3월
  • 2024년 2월

카테고리

  • CLI
  • DB
  • Linux
  • TroubleShooting
  • 미분류
  • 클라우드 · 가상화
© 2026 TestPilot Web