
‘연간’ 이수 시간이네…
nginx의 error.log 파일을 보면 다음 형식으로 되어 있다.
2025/10/30 07:54:31 [crit] 77854#77854: *24699 SSL_do_handshake() failed (SSL: error:0A00006C:SSL routines::bad key share) while SSL handshaking, client: 45.249.246.17, server: 0.0.0.0:443
검색해보면 너무 구형의 bot을 이용할 때 발생할 수 있는 오류라고 한다. 그냥 내버려 두어도 괜찮지만 이왕이면 차단해보기로 했다. 여러 단계로 나눈 후, 코파일럿의 도움으로 코드를 작성했다.
'$remote_addr - $host [$time_local] '
'"$request" $status $body_bytes_sent '
'"$http_referer" "$http_user_agent" "$gzip_ratio"';
nginx의 access 로그 파일의 기본 설정 중 두 번째 $에 붙은 것은 remote_user 이다. 이것을 $host로 바꾸어 주었다.
나중에 생각해 보니 $host를 추가하면 되는 것이었다. IP 주소로 접속해 오는 것과 도메인으로 접속해 오는 것을 구별하고 싶었다. 그래서 검색했더니 $host를 옵션이 이 기능을 했다.
로그 파일에서 많은 접속이 IP 주소로 온다는 것을 알게 되었다. 그래서 별도로 nginx 의 블록을 만들어 444 응답을 하도록 했다.
설정이 꼬였는지 goaccess 의 기본 옵션 파일인 /etc/goacess/goacess.conf 를 수정해도 반영이 안된다.
그래서 다른 방법을 선택했다.
nano ~/.goaccessrc
옵션은 다음과 같다.
log-format %h - %v [%d:%t %^] "%r" %s %b "%R" "%u" "%^"
date-format %d/%b/%Y
time-format %H:%M:%S