YGH

[홈서버 만들기] 6. 웹서버

2020년 11월 17일

개요

홈서버의 제일 중요한 서비스라고 봐도 무방하다.

웹서버는 PC, 스마트폰 등으로 홈서버의 웹페이지로 접속할 수 있게 해주는 역할을 한다.

대표적인 리눅스 웹서버의 종류로는 Apache와 Nginx가 있는데 구글링을 통하여 각각의 장단점을 고려해서 자신에게 맞는 웹서버를 설치하면 된다.

여기서는 Nginx를 설치해볼 것이다.

포트 포워딩

앞 전 SSH접속 때 22번 포트를 개방해주었는데 그 방법 그대로 HTTP(80번)와 HTTPS(443번)의 포트를 개방해주도록 하자.

방화벽 설정

추가

# iptables -A INPUT -p tcp --dport 80 -j ACCEPT
# iptables -A INPUT -p tcp --dport 443 -j ACCEPT

확인

# iptables -L INPUT

만약 제일 뒤에 INPUT 항목을 입력하지 않아서 fail2ban의 차단 리스트가 오래 동안 뜰 경우 Ctrl + C 키를 입력해 명령어를 종료할 수 있다.

저장

# netfilter-persistent save
# netfilter-persistent reload

Nginx 설치

$ sudo apt update
$ sudo apt install nginx

설치가 끝나면 웹 브라우저에 도메인 주소를 입력해서 접속해보자.

스마트폰의 모바일 데이터 환경에서 접속해보면 확실한 외부접속 테스트가 가능하니 이점도 참고하길 바란다.

서버 블록 생성

필자의 도메인은 ygh.kr이기 때문에 ygh.kr이 보이면 자신의 홈서버 도메인으로 바꿔서 진행해야 한다.

Nginx 서버 블록 파일이 있는 sites-available 폴더에 도메인을 파일명으로 하는 서버 블록을 vim으로 만들어주고 아래 내용을 넣어주자.

server {
        listen 80 default_server;
        server_name ygh.kr;

        root /var/www/html;
        index index.html index.nginx-debian.html;

        location / {
                try_files $uri $uri/ =404;
        }
}

아래 명령어를 통해 다음과 같은 작업을 하자.

  1. 내 도메인의 서버 블록을 작동시킨다.
  2. 기존에 작동되고 있던 기본 서버 블록(defualt)은 심볼릭 링크 파일을 삭제함으로써 작동을 멈추게 한다.
$ cd /etc/nginx/sites-enabled
$ sudo ln -s /etc/nginx/sites-available/ygh.kr .
$ ls -l
$ sudo rm default
$ ls -l

Nginx 설정 적용

서버 블록 설정이 반영되도록 웹서버를 재시작 해주면 되는데 그 전에 틀린 부분이 없는지 문법 검사를 해보는 것이 좋다.

$ sudo nginx -t

이제 Nginx 서비스를 재시작 하자.

오류 문구가 안 뜨면 정상적으로 재시작 된 것이다.

$ sudo service nginx restart

접속 테스트

Nginx를 처음 설치했을 때와 같이 웹페이지에서 서버 주소를 입력 후 접속해서 확인하면 된다.

아직 보안 설정을 하지 않았기에 80번 포트를 사용하는 http프로토콜로 웹서버와 통신하고 있다.

다음 시간에 인증서라는 것을 발급받은 뒤 443번 포트를 쓰는 https프로토콜을 사용하여 안전한 웹페이지를 만들어 보자.