nginx 에서 useragent 로 접속 차단하기

회사에서 관리 중인 서버에 특별한 이유가 없는데 접속 속도가 어마어마 하게 느리고 CPU 사용률도 높아서 원인을 찾아보다 접속 로그에 요상한 bot이 계속해서 접속하는 것을 발견하고 useragent 를 이용해 차단하기로 했다. ip는 계속해서 변하기 때문에 어려움이 있다. /etc/nginx/ 디렉토리에 useragent.rules 파일을 생성하고 아래 내용을 추가한다. 다음으로 nginx.conf 파일에 아래와 같이 추가한다. 추가된 내용은 include /etc/nginx/useragent.rules; 이다. […]

Read More

[PHP] utf-8 문자열을 주어진 바이트로 자르기

php 에서 제공하는 substr 함수 등을 이용해 주어진 문자를 특정 바이트로 잘라야 하는 경우 영문이나 숫자는 문제가 되지 않지만 한글 등 utf-8 문자에서는 마지막 문자가 정상적으로 표시되지 않는 등의 문제가 발생한다. 이런 경우에 사용하고자 아래 함수를 만들었다. getSubstring 함수는 주어진 문자열을 주어진 길이(byte) 만큼 자른 후 리턴한다. 만약 주어진 길이만큼 자를 때 마지막 문자가 정상적인 […]

Read More

jenkins 에서 rsync 를 이용한 파일 배포

jenkins 에서 git, scp 를 이용한 파일 배포를 rsync 를 이용한 스크립트로 변경했다. 각 서버의 ip는 servers.dat 파일에 지정되어 있고 아래와 같은 형태이다. servers.dat 파일을 쉘 스크립트에서 읽어들인 후 각 서버로 rsync 를 이용해 배포하게 된다. rsync 를 이용하기 위해서는 각 서버에 jenkins 서버의 ssh 키가 미리 등록되어 있어야 한다. 동기화 때 제외될 디렉토리와 파일을 […]

Read More

jenkins 에서 git, scp 를 이용한 파일 배포

jenkins 를 이용해 github webhook 을 이용해 배포를 자동화하는 것을 지난 번에 테스트했다. 이번엔 배포 스크립트에 기능을 좀 더 추가하여 git 을 이용해 수정된 파일의 목록을 구하고 이 파일들만 서버에 배포하는 스크립트를 테스트해본다. 일반적으로 전체 파일을 scp나 rsync 를 이용해 배포하게 되는데 파일이 많을 경우 배포에 시간이 오래 걸릴 수 있기 때문에 수정된 파일만 목록을 […]

Read More