개발
백엔드
Nginx 서버 로그 기록 설정 및 커스터마이징
207 views as of October 10, 2024.
Nginx 서버를 운용하다보면 참 여러가지 서버 트래픽이 발생한다.
제일 무난한 관리방법은 역시 모든 엑세스에 대해서 철저하게 로깅해놓고 지속적으로 모니터링하면서 필요한 타이밍에 제어를 하는것이다.
경험이 많으신 서버 관리자는 더 효율적인 방법과 자료로 질이 나쁜 트래픽이나 엑세스 요청을 유효하게 거르시겠지만 나같은 경우에는 이미 실서비스를 운용하면서 맨땅에 헤딩하는식으로 이런 자료과 경험을 쌓아가야해서 자연적으로 로깅을 잘하고 모니터링할 수 있는 환경을 구축하는것이 중요했다.
뭐 거두절미하고 관련 설정을 여기에 기록해보자한다.
http {
...
# log_format 설정
log_format main '[$time_local] $remote_addr "$host" '
'"$request" $status $body_bytes_sent "$http_referer" '
'"$http_user_agent"';
access_log /var/log/nginx/access.log main;
# 특정 확장자에 대한 로그 비활성화 설정
map $request_uri $loggable {
"~*^.+\.(jpg|jpeg|png|gif|css|js|map|svg|ico|woff|woff2|ttf|eot)(\?.*)?$" 0; # 해당 파일 확장자일 때 0 (로그 비활성화)
default 1; # 그 외 요청일 때는 1 (로그 활성화)
}
# 로그 비활성화 조건을 모든 서버에 적용
access_log /var/log/nginx/access.log main if=$loggable;
...
Copy
참 여러번 수정한
nginx.conf
로그 설정이다.우선 로그라는것은 보기 좋아야하므로 로그를 아래와 같은 순서로 나오게 조율했다.
1.[타임스탬프]
2.접속자IP
3.요청Domain
4.요청내용(Method, URI, Protocol)
5.HTTP응답코드
6.응답바이트
7.이전URL
8.유저에이전트
[09/Oct/2024:20:59:56 +0000] 0.0.0.0 "domain.or.kr" "GET / HTTP/1.1" 200 158303 "https://www.google.com/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/129.0.0.0 Safari/537.36"
[09/Oct/2024:20:59:57 +0000] 0.0.0.0 "domain.com" "GET /spb3/sboard3/write.php?db=regist&page=3&mode=write&time=1549556661 HTTP/1.1" 301 169 "-" "Mozilla/5.0 (compatible; BLEXBot/1.0; +http://webmeup-crawler.com/)"
Copy
실제로 찍히는
access.log
데이터는 위와 같다. (아이피정보랑 도메인명은 바꿨습니다)이 내용을 이제 적절히 파싱해서 쓰면 적절한 모니터링을 할 수 있는 정보가 생성되는 것이다.
나같은 경우는 이 로그정보를 하루에 한번씩 주기적으로 1000개 정도를 짤라내서 ERP 내부에서 조회할 수 있게 파싱한다음에 아래와같이 표로 출력해서 모니터링 한다.
주로 이상한 URI로 요청하는 엑세스나 유저 에이전트 검사를 통해 과도하게 크롤링을 하는 봇들을 추려서 아이피 차단을 걸곤한다.
AWS IP 차단 방법 (서버 아이피 차단) - eruLabo
기존에 웹 서버 단계에서 아이피를 차단하는 방법을 기록한 적이 있다. 이 방법의 단점은 일일히 서버 설정을 열어서 차단해야된다는 문제가 있고, 서버 단에서 엑세스 거부를 날리기 때문에 웹서버 자체가 일단 접...
https://erulabo.com/184
지금 상상으로는 이런 서버 엑세스로그에 AI를 접목시켜서 알아서 이상건을 추려내는 그런 시스템을 떠올리기는하는데 최소한의 자원으로 이런 내용을 어떻게 구현할지 참 고민이 많긴하다.
어찌되었든 터미널화면에서 모니터링을 이제 안해도된다라는거는 나에겐 행복한일인건 분명하다.
#Nginx
0
개의 댓글
백엔드 콜렉션의 다른 글
개발 카테고리의 다른 글
10/10/2024
라라벨 AWS SDK를 설치했을때 나오는 PHP 버전 에러 우회 방법
라라벨 프로젝트에 AWS SDK를 설치하니 기존에 S3 Storage를 쓰던곳에서 아래와 같은 에러 메시지가 나왔다. 뭐 쉽게말하면 AWS-...
10/10/2024
AWS IP 차단 방법 (서버 아이피 차단)
기존에 웹 서버 단계에서 아이피를 차단하는 방법을 기록한 적이 있다. 이 방법의 단점은 일일히 서버 설정을 열어서 차단해야된...
10/10/2024
라라벨 에러 페이지 수정 및 커스터마이징
네이티브하게 웹을 구현한다면 기본적으로 Nginx 에러메시지가 뜨겟지만, 프레임워크를 사용하면 에러페이지도 프레임워크용 에...