라즈베리파이4 설정(4) - NGINX에서 도메인으로 접속만 허용하기(IP주소 직접접속 차단)
이번 글은 특정 IP주소에서 내 서버로 접속하는 것을 차단한다는 의미가 아니다. 도메인 주소가 아닌, 내 서버의 IP 주소를 직접 브라우저 주소창에 입력할 경우 접속을 차단한다는 의미이다.
지난 글에서는 라즈베리파이에서 여러 도메인 홈페이지를 동시에 서비스하도록 설정하는 방법에 대해 언급 했었다.
라즈베리파이4 설정(3) - NGINX에서 다중 도메인 홈페이지 운영하기(Virtual Host)
웹 서버를 운영하다보면, 한 웹서버에 여러 홈페이지를 운영할 경우가 있다. aaa.domain.com, bbb.domain.com 와 같이 서브 도메인만 다른 경우가 있을 수도 있고, www.domain1.com, www.domain2.com 처럼 아예 다..
blog.codesarang.com
만일 인터넷 사용자가 내 라즈베리파이 서버의 IP 주소를 직접 입력할 경우 어떻게 될까? 지난번 설정했던 여러 홈페이지중 한개가 뜨게 된다.
사실 이런 상황은 서버(혹은 라즈베리파이)를 관리하는 입장에서 그리 달가운 결과는 아니다.
그럼 어떻게 이런 상황을 방지할 것인가? 여기서 간단한 방법을 설명하도록 하겠다.
1. Virtual Host 설정
지난번 nginx의 도메인별 홈페이지 설정 방법과 매우 유사하다. 우선 "/etc/nginx/sites-enabled/default" 파일을 아래처럼 만들어 준다.
server {
listen 80 default_server;
return 444;
}
이 설정은 누군가 설정된 도메인 주소가 아닌 IP로 직접 접속했을 경우, 웹 브라우저에 HTTP 상태코드 444를 보내주고 종료하라는 의미이다. 여기서 상태코드 444는 nginx의 "응답없음"을 의미한다.
다른 HTTP 상태코드가 궁금할 경우 아래 위키백과를 방문해 보는 것이 좋을 것이다.
https://ko.wikipedia.org/wiki/HTTP_%EC%83%81%ED%83%9C_%EC%BD%94%EB%93%9C
HTTP 상태 코드 - 위키백과, 우리 모두의 백과사전
위키백과, 우리 모두의 백과사전. 둘러보기로 가기 검색하러 가기 아래는 HTTP(하이퍼텍스트 전송 프로토콜) 응답 상태 코드의 목록이다. IANA가 현재 공식 HTTP 상태 코드 레지스트리를 관리하고 있다. 모든 HTTP 응답 코드는 5개의 클래스(분류)로 구분된다. 상태 코드의 첫 번째 숫자는 응답의 클래스를 정의한다. 마지막 두 자리는 클래스나 분류 역할을 하지 않는다. 첫자리에 대한 5가지 값들은 다음과 같다: 1xx (정보): 요청을 받았으며 프로
ko.wikipedia.org
2. 접속 테스트
아래 명령을 이용하여 NGINX 서버를 재시작 한다.
# /etc/init.d/nginx restart
이제 공인 IP주소를 이용하여 라즈베리파이 웹서버에 접속해 보도록 하자. 아래처럼 나온다면 성공적으로 설정된 것이다.
물론, 자신이 설정한 도메인 주소로는 정상적으로 접속되어야 한다.