분류 전체보기
-
개요대용량 트래픽 테스트 중 Nginx 캐싱을 적용한 후, 추가적인 시스템 레벨 병목 현상을 발견하게 되었다. 캐시 설정만으로는 해결되지 않는 파일 디스크립터 부족과 워커 커넥션 한계 문제를 해결한 과정을 기록해보았다.1. Too many open files 에러 해결해결 방법/etc/nginx/nginx.conf다음 내용 추가:worker_rlimit_nofile 65535;시스템 서비스 설정sudo systemctl edit nginx다음 내용 추가:[Service]LimitNOFILE=65536설정 후 재시작:sudo systemctl daemon-reloadsudo systemctl restart nginxworker_rlimit_nofile를 최대값(65535)으로 설정해도 되는 이유Nginx ..
Nginx - Too many open files 에러 / 1024 worker_connections are not enough 에러개요대용량 트래픽 테스트 중 Nginx 캐싱을 적용한 후, 추가적인 시스템 레벨 병목 현상을 발견하게 되었다. 캐시 설정만으로는 해결되지 않는 파일 디스크립터 부족과 워커 커넥션 한계 문제를 해결한 과정을 기록해보았다.1. Too many open files 에러 해결해결 방법/etc/nginx/nginx.conf다음 내용 추가:worker_rlimit_nofile 65535;시스템 서비스 설정sudo systemctl edit nginx다음 내용 추가:[Service]LimitNOFILE=65536설정 후 재시작:sudo systemctl daemon-reloadsudo systemctl restart nginxworker_rlimit_nofile를 최대값(65535)으로 설정해도 되는 이유Nginx ..
2025.11.02 -
개요laravel 서버의 대용량 트래픽 처리에 대해 테스트하다 PHP FPM 프로세스의 부족으로 인해 병목 현상이 발생함을 발견하게 되었고 서버 스펙을 무리하게 올리기 보다는 다른 방식으로 해결을 하는 것이 바람직하다 판단되어 Nginx 캐싱에 대해 찾아보게 되었다./etc/nginx/sites-available/default# server 블록 상단에 추가fastcgi_cache_path /dev/shm/nginx_cachelevels=1:2keys_zone=PHPCACHE:100mmax_size=500minactive=60muse_temp_path=offfastcgi_cache_use_stale error timeout updating invalid_header http_500;fastcgi_cach..
PHP - Nginx 캐싱 설정개요laravel 서버의 대용량 트래픽 처리에 대해 테스트하다 PHP FPM 프로세스의 부족으로 인해 병목 현상이 발생함을 발견하게 되었고 서버 스펙을 무리하게 올리기 보다는 다른 방식으로 해결을 하는 것이 바람직하다 판단되어 Nginx 캐싱에 대해 찾아보게 되었다./etc/nginx/sites-available/default# server 블록 상단에 추가fastcgi_cache_path /dev/shm/nginx_cachelevels=1:2keys_zone=PHPCACHE:100mmax_size=500minactive=60muse_temp_path=offfastcgi_cache_use_stale error timeout updating invalid_header http_500;fastcgi_cach..
2025.11.02 -
개요Nginx에서 www 서브도메인을 메인 도메인으로 리다이렉트 설정 시, 검색엔진이 어떤 도메인을 색인하는지에 대한 내용을 정리해보았다.검색엔진의 리다이렉트 처리질문의 배경Nginx에서 www.example.com을 example.com으로 301 리다이렉트 설정 시, 검색엔진(구글, 네이버)이 www 도메인을 노출할지에 대한 의문이 발생하였다.검색엔진의 동작 방식크롤러의 리다이렉트 추적크롤러 접근: www.example.com ↓Nginx 응답: 301 → example.com ↓크롤러 인식: "example.com이 정규 URL" ↓검색 결과: example.com으로 색인핵심 사실:검색엔진은 301 리다이렉트를 따라가며 최종 도착 URL을 정규 버전으로 인식리다이렉..
Nginx - www, non-www redirect 시 도메인 검색엔진의 색인 방식개요Nginx에서 www 서브도메인을 메인 도메인으로 리다이렉트 설정 시, 검색엔진이 어떤 도메인을 색인하는지에 대한 내용을 정리해보았다.검색엔진의 리다이렉트 처리질문의 배경Nginx에서 www.example.com을 example.com으로 301 리다이렉트 설정 시, 검색엔진(구글, 네이버)이 www 도메인을 노출할지에 대한 의문이 발생하였다.검색엔진의 동작 방식크롤러의 리다이렉트 추적크롤러 접근: www.example.com ↓Nginx 응답: 301 → example.com ↓크롤러 인식: "example.com이 정규 URL" ↓검색 결과: example.com으로 색인핵심 사실:검색엔진은 301 리다이렉트를 따라가며 최종 도착 URL을 정규 버전으로 인식리다이렉..
2025.10.30 -
개요DomPDF로 PDF를 생성할 때 한글이 깨지는 문제가 발생하여 폰트 등록부터 인코딩 문제까지, 여러 시행착오를 겪어가며 해결하였다.하지만 DomPDF로 PDF를 생성하는 방법은 font 관련 css를 넣었을때 또 깨지는 문제가 발생하고 일부 css가 먹질 않아서 폐기하게 되었다.그리하여 결국에는 이 방식을 사용하지 않게 되었지만 그냥 갖다버리기는 아까워서 글로라도 남기려한다...DomPDF 한글 깨짐 문제문제의 원인DomPDF는 기본 폰트(DejaVu Sans)에 한글 글리프가 없다. 한글을 표시하려면 한글을 지원하는 폰트를 명시적으로 등록해야 한다.증상별 원인? (물음표): 인코딩 문제 또는 폰트 미등록□ (네모): 폰트에 해당 글리프 없음깨진 문자: UTF-8 인코딩 미지정해결 과정1단계: 인코..
PHP -dom pdf로 html -> pdf 변환개요DomPDF로 PDF를 생성할 때 한글이 깨지는 문제가 발생하여 폰트 등록부터 인코딩 문제까지, 여러 시행착오를 겪어가며 해결하였다.하지만 DomPDF로 PDF를 생성하는 방법은 font 관련 css를 넣었을때 또 깨지는 문제가 발생하고 일부 css가 먹질 않아서 폐기하게 되었다.그리하여 결국에는 이 방식을 사용하지 않게 되었지만 그냥 갖다버리기는 아까워서 글로라도 남기려한다...DomPDF 한글 깨짐 문제문제의 원인DomPDF는 기본 폰트(DejaVu Sans)에 한글 글리프가 없다. 한글을 표시하려면 한글을 지원하는 폰트를 명시적으로 등록해야 한다.증상별 원인? (물음표): 인코딩 문제 또는 폰트 미등록□ (네모): 폰트에 해당 글리프 없음깨진 문자: UTF-8 인코딩 미지정해결 과정1단계: 인코..
2025.10.29 -
스펙 정리 표aws t3 서버 스펙 공식문서인스턴스 타입RAMvCPU동시 접속용도t3.nano0.5GB22~5명개발/테스트 전용t3.micro1GB25~15명매우 가벼운 사이트, 사내 도구t3.small2GB220~50명소규모 비즈니스 사이트t3.medium4GB250~150명중소 규모 서비스t3.large8GB2150~300명중간 규모 서비스t3.xlarge16GB4300~600명대규모 서비스t3.2xlarge32GB8600~1,200명엔터프라이즈급네트워크 성능 - 최대 5Gbps동시 접속 가능량 계산t3.micro (1GB RAM) 예시OS + 기본 서비스: ~300MBMariaDB: 200 ~ 300MBNginx: ~50MB남은 여유: 350 ~ 450MBPHP-FPM 프로세스 수: 7 ~ 15개 ..
PHP - aws t3 서버 사용 시 관련 스펙 정리스펙 정리 표aws t3 서버 스펙 공식문서인스턴스 타입RAMvCPU동시 접속용도t3.nano0.5GB22~5명개발/테스트 전용t3.micro1GB25~15명매우 가벼운 사이트, 사내 도구t3.small2GB220~50명소규모 비즈니스 사이트t3.medium4GB250~150명중소 규모 서비스t3.large8GB2150~300명중간 규모 서비스t3.xlarge16GB4300~600명대규모 서비스t3.2xlarge32GB8600~1,200명엔터프라이즈급네트워크 성능 - 최대 5Gbps동시 접속 가능량 계산t3.micro (1GB RAM) 예시OS + 기본 서비스: ~300MBMariaDB: 200 ~ 300MBNginx: ~50MB남은 여유: 350 ~ 450MBPHP-FPM 프로세스 수: 7 ~ 15개 ..
2025.10.29 -
개요분명 이전에 공부했던 개념인 리버스 프록시에 대해 스스로 질문을 던졌더니 제대로 답변을 하지 못했다. 지금의 나보다 더 멍청할 미래의 나를 위해 정리해주도록 하자.리버스 프록시란?식당 비유로 이해하기리버스 프록시는 식당에서 주문을 받는 직원과 같다.일반적인 상황 (프록시 없음)손님(사용자) → 직접 주방장(서버)에게 주문리버스 프록시 사용손님(사용자) → 직원(Nginx) → 주방장(서버)에게 전달리버스 프록시의 주요 기능로드 밸런싱: 트래픽이 많을 때 여러 서버로 요청 분산보안: 실제 서버의 위치와 구조를 클라이언트로부터 숨김캐싱: 자주 요청되는 콘텐츠를 미리 저장하여 빠른 응답 제공실제 구조사용자 브라우저 → Nginx → 서버(애플리케이션 레벨)Nginx가 클라이언트의 요청을 받아 서버에 전달하..
Nginx - 리버스 프록시란?개요분명 이전에 공부했던 개념인 리버스 프록시에 대해 스스로 질문을 던졌더니 제대로 답변을 하지 못했다. 지금의 나보다 더 멍청할 미래의 나를 위해 정리해주도록 하자.리버스 프록시란?식당 비유로 이해하기리버스 프록시는 식당에서 주문을 받는 직원과 같다.일반적인 상황 (프록시 없음)손님(사용자) → 직접 주방장(서버)에게 주문리버스 프록시 사용손님(사용자) → 직원(Nginx) → 주방장(서버)에게 전달리버스 프록시의 주요 기능로드 밸런싱: 트래픽이 많을 때 여러 서버로 요청 분산보안: 실제 서버의 위치와 구조를 클라이언트로부터 숨김캐싱: 자주 요청되는 콘텐츠를 미리 저장하여 빠른 응답 제공실제 구조사용자 브라우저 → Nginx → 서버(애플리케이션 레벨)Nginx가 클라이언트의 요청을 받아 서버에 전달하..
2025.10.28 -
개요현재 단일 도메인으로 서비스를 운영하고 있는데, www.도메인으로 접속했을 때 기존 도메인으로 리다이렉트 시키고 싶었다. SEO 측면에서도 단일 도메인으로 통일하는 것이 좋고, 사용자 경험 측면에서도 일관된 URL을 제공하는 것이 중요하다고 판단했다.설정 방법1. DNS 레코드 추가먼저 호스팅 사이트의 DNS 설정에서 www 서브도메인에 대한 CNAME 레코드를 추가했다.- 레코드 타입: CNAME- 호스트: www- 값: 도메인. (호스팅 사이트에 따라 끝에 .을 붙이는 경우도 있다.)- TTL: 600 (10분)TTL을 낮게 설정한 이유는 새로운 레코드를 추가하는 것이기 때문에 문제 발생 시 빠르게 수정할 수 있도록 하기 위함이다. 안정화된 후에는 3600(1시간) 이상으로 올려도 ..
Nginx - www 서브도메인을 non-www로 리다이렉트하기개요현재 단일 도메인으로 서비스를 운영하고 있는데, www.도메인으로 접속했을 때 기존 도메인으로 리다이렉트 시키고 싶었다. SEO 측면에서도 단일 도메인으로 통일하는 것이 좋고, 사용자 경험 측면에서도 일관된 URL을 제공하는 것이 중요하다고 판단했다.설정 방법1. DNS 레코드 추가먼저 호스팅 사이트의 DNS 설정에서 www 서브도메인에 대한 CNAME 레코드를 추가했다.- 레코드 타입: CNAME- 호스트: www- 값: 도메인. (호스팅 사이트에 따라 끝에 .을 붙이는 경우도 있다.)- TTL: 600 (10분)TTL을 낮게 설정한 이유는 새로운 레코드를 추가하는 것이기 때문에 문제 발생 시 빠르게 수정할 수 있도록 하기 위함이다. 안정화된 후에는 3600(1시간) 이상으로 올려도 ..
2025.10.24 -
개요laravel 프로젝트를 도커에 얹기 위해 sail로 컨테이너를 빌드하는데 apt-get update && apt-get upgrade ... 명령어에서 억겁의 시간이 걸리는 상황이 발생했다.원인sail로 컨테이너를 빌드할때 패키지 파일을 ports.ubuntu.com에서 받아오는데 이 서버가 영국에 있기 때문에 한국과 물리적으로 거리가 멀어 지연이 발생하는 것으로 확인되었다.해결방법권장되는 방법은 아닐 것 같지만(애초에 vendor 내의 파일을 수정하려고 하면 PhpStorm에서 안내 메시지가 나온다.) vendor 디렉토리 내에 있는 기본 Dockerfile에서 저장소 서버의 url을 한국에 위치한 비공식 미러서버 url로 바꿔주는 명령어를 추가해 해결하였다.이 방법에서 사용한 미러서버는 KAIS..
laravel - sail 컨테이너 apt-get update 지연 해결 방법개요laravel 프로젝트를 도커에 얹기 위해 sail로 컨테이너를 빌드하는데 apt-get update && apt-get upgrade ... 명령어에서 억겁의 시간이 걸리는 상황이 발생했다.원인sail로 컨테이너를 빌드할때 패키지 파일을 ports.ubuntu.com에서 받아오는데 이 서버가 영국에 있기 때문에 한국과 물리적으로 거리가 멀어 지연이 발생하는 것으로 확인되었다.해결방법권장되는 방법은 아닐 것 같지만(애초에 vendor 내의 파일을 수정하려고 하면 PhpStorm에서 안내 메시지가 나온다.) vendor 디렉토리 내에 있는 기본 Dockerfile에서 저장소 서버의 url을 한국에 위치한 비공식 미러서버 url로 바꿔주는 명령어를 추가해 해결하였다.이 방법에서 사용한 미러서버는 KAIS..
2025.08.30