서버 운영하다 보면 Nginx는 멀쩡하게 돌아가고 있고, 대부분 사용자는 아무 문제 없이 들어오는데, 유독 특정 IP에서만 접속이 안 되는 현상 다들 겪어보셨을거라 생각해요!
처음엔 서버 문제인지 네트워크 문제인지 헷갈리기 쉬운데, 대부분은 설정 충돌이나 접근 제어 정책에서 비롯되는 경우가 많아요. 실제로 자주 발생하는 원인과 해결 방법 아래에 정리해봤어요!
Nginx allow ,deny 설정 문제
가장 먼저 확인해야 할 부분입니다!
Nginx는 특정 IP를 허용하거나 차단하는 설정을 직접 선택할 수 있어요.
확인 방법
- sudo vi /etc/nginx/nginx.conf
또는 사이트 설정 파일로 확인!
- sudo vi /etc/nginx/sites-available/default
그리고 이런 코드 설정이 있는지 확인하셔야 됩니다!
- deny 123.123.123.123;
- allow 192.168.0.0/24;
특정 IP가 deny로 설정되어 있거나, allow 범위에 포함되지 않으면 접속이 차단된다는 점 알아주세요!
해결 방법
- 불필요한 deny 제거
- 필요한 IP를 allow에 추가
- 설정 변경 후 Nginx 재시작
- sudo systemctl restart nginx
방화벽 차단
서버 자체 방화벽에서 특정 IP를 차단하고 있을 가능성도 있어요.
특히 ufw나 iptables 쓰는 경우, 설정이 꼬이면 일부 IP만 차단되는 상황이 생겨요.
확인 방법
- sudo ufw status
- sudo iptables -L
해결 방법
- 차단된 IP 규칙 삭제
- 포트(80, 443)가 정상적으로 열려 있는지 확인
클라우드 보안 그룹(Security Group)
AWS, GCP, Azure 같은 클라우드 환경에서는 보안 그룹 설정이 문제일 수 있어요.
특정 IP만 허용되어 있거나 일부 국가의 IP가 차단되어 있을 수 있어용
확인할 것
- 인바운드 규칙 확인
- 0.0.0.0/0 허용 여부
- 특정 IP만 허용되어 있는지 확인
Fail2Ban 또는 보안 모듈 차단
서버 보안용으로 설치한 Fail2Ban, ModSecurity 같은 도구가 특정 IP를 자동 차단했을 수 있어요.
특히 로그인 시도 실패가 반복되면 해당 IP가 블랙리스트에 올라가는 건 다들 알고 계시죠?!
확인 방법
- sudo fail2ban-client status
해결 방법
- sudo fail2ban-client set sshd unbanip [IP주소]
CDN 또는 프록시 설정 문제
Cloudflare 같은 CDN을 쓰는 경우에는 실제 클라이언트 IP가 아닌 프록시 IP로 인식돼요.
이때 IP 필터링이 잘못 적용되면 특정 사용자만 접속 안 되는 문제가 생기는 경우가 많더라구요.
해결 방법
- real IP 설정 확인
- 프록시 헤더(X-Forwarded-For) 적용 여부 점검
Nginx rate limit 또는 access 제한
트래픽 제어용으로 설정한 rate limit이 특정 IP에만 적용될 수도 있어요.
요청 횟수가 일정 기준을 넘으면 해당 IP를 일시적으로 차단하는 방식이에요.
확인 방법
Nginx 설정에서 이런 코드가 있는 지 확인해보세요!
- limit_req_zone
- limit_req
마무리
Nginx에서 특정 IP만 접속 안 되는 문제는 단순 에러가 아니라, 접근 제어 설정이 조금 꼬여있어서 그런 경우가 많아요.
빠르게 해결하려면 아래 순서대로 점검하는 게 좋아요.
- Nginx allow / deny 설정
- 서버 방화벽
- 클라우드 보안 그룹
- 보안 모듈(Fail2Ban 등)
- CDN 및 프록시 설정
이 순서대로 확인하면 대부분의 문제는 빠르게 잡혀요.
서버를 운영하면서 가장 중요한 건 간단한 문제를 아무렇지 않게 여기는 것 보단, 꼼꼼하게 점검하는 거예요.
제가 위에서 설명드린 같은 문제 겪고 있는 분에게 빠른 해결에 도움이 됐으면 합니다!
긴 글 읽어주시고 방문해주셔서 감사드립니다!