나만의 웹 서버를 구축했다!
그런데 잠깐, 아무도 접속 할 수 없다면 이게 무슨 소용이 있을까?
열심히 구축을 해놓긴 해놓았는데, 접속할 수 없다면 의미가 없다.

이 글에서는 리눅스 웹 서버에 누구나 접속할 수 있도록 방화벽을 설정하고,
다른 컴퓨터, 외부에서도 접속이 가능하도록 하는 방법을 다룬다.

방화벽 허용하기

방화벽이란?

방화벽은 외부의 침입이나 해킹으로부터 네트워크를 보호하는 역할을 한다.
기본적으로 모든 접속을 차단하고, 허용된 접근만 가능하도록 설정되어 있다.
마치 우리집 현관문의 도어락과 같이,
문을 열 때 내가 비밀번호를 입력하거나 카드를 이용해 집 안에 들어가듯이
방화벽도 허가된 사용자만 접속할 수 있도록 문을 잠가 두는 역할을 한다.

UFW로 방화벽 설정하기

리눅스에서 방화벽을 관리하는 방법은 여러 가지가 있다.
기본적으로 ubuntu에서 제공되는 UFW(Uncomplicated Firewall)는 접근성이 좋고,
사용하기 쉬워 초보자도 쉽게 사용할 수 있는 방화벽 도구이다.

UFW 방화벽 상태 확인하기

먼저 방화벽이 활성화되어 있는지 확인해보자.
이는 방화벽에서 정상적으로 웹 서버를 접속할 수 있게 설정 되었는지 확인하기 위한 첫 단계이다.

sudo ufw status
ShellScript

만약 비활성화(Inactive)라면 활성화 상태로 변경하자.
아래의 명령어를 입력하면 UFW 방화벽이 활성화 된다.

sudo ufw enable
ShellScript

HTTP, HTTPS 포트 허용하기

웹 서버에 접속하려면 HTTP와 HTTPS 포트를 열어야 한다.
다음 명령어를 입력하여 각각의 포트를 허용해주자.

sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
ShellScript

설정 확인하기

다음 명령어를 입력하여 방화벽의 설정이 제대로 적용되었는지 확인해보자.
아래와 같이 출력된다면 정상적으로 설정된 것이다.

  • 80, 443 부분 확인!
sudo ufw status

# ---------------------- 실행 결과 -------------------------------
To                         Action      From
--                         ------      ----
22                         ALLOW       Anywhere
443                        ALLOW       Anywhere
80                         ALLOW       Anywhere
22 (v6)                    ALLOW       Anywhere (v6)
443 (v6)                   ALLOW       Anywhere (v6)
80 (v6)                    ALLOW       Anywhere (v6)
ShellScript

웹 서버 구동 확인하기 (Nginx, 엔진엑스)

방화벽을 허용해주었어도 웹 서버가 작동이 되지 않으면 의미가 없다.
나는 엔진엑스를 사용하고 있으므로 엔진엑스가 정상적으로 돌아가는지 확인봐야 한다.
아파치를 웹 서버로 사용하고 있다면 apache2 혹은 httpd를 이용하여 상태를 점검해보자.

만약 웹 서버를 구축하지 않았다면 아래의 글을 참고하여 구축하고 다음을 진행하자.
> 리눅스에서 Nginx 설치 및 웹 서버 구축하기

# nginx 상태 확인
sudo systemctl status nginx

# apache 상태 확인
sudo systemctl status apache2   # Ubuntu/Debian 계열
sudo systemctl status httpd     # RHEL/CentOS 계열
ShellScript

‘Active’ 부분에 초록색 글씨로 ‘active (running)’ 이라고 써져 있으면
웹 서버가 정상적으로 돌아가고 있다는 것이다

nginx의 상태가 정상적으로 활성화되어 있음을 나타내는 예시 이미지

웹 서버의 상태를 확인했으면 Ctrl + C (컨트롤+C)를 눌러 문서 읽기를 종료하자.

로컬 웹 서버 작동 확인하기

웹 서버의 구동도 확인하였으니 로컬 호스트의 웹 서버가 이제 보일 것이다.
확인해보자.

만약 웹 애플리케이션을 따로 운영중인 상태가 아니라면 당연히 보이지 않는다.
그럴 경우 웹 애플리케이션부터 구축하자.
이 글은 PHP 기반의 워드프레스를 구성하기 위해 작성되었다.
> 리눅스에서 PHP 설치 및 PHP 서버 구축하기

curl http://localhost
ShellScript

HTML 문서 형식의 내용이 출력되면 웹 서버는 정상적으로 돌아가고 있음을 의미한다.
따로 설정해둔 것은 없기 때문에 기본적으로 웹 서버의 index 페이지를 보여준다. (Welcome to nginx!)
이로써 웹 서버의 기본 구성이 모두 완료되었다.

curl 명령어를 이용하여 로컬 호스트의 웹 서버가 정상적으로 운영중인 것을 확인해보는 예시 이미지

외부 접속을 위한 공인 IP 서버 접속 확인

로컬 웹 서버는 말 그대로 내 컴퓨터에서만 접속이 가능한 서버이다.
이를 외부에서 접속을 하려면 외부 공인 IP를 이용하여 접속하여야 한다.
외부 공인 IP를 확인하는 방법은 여러 가지 존재한다.

외부 공인 IP 주소 확인하기 (자체 서버일 경우)

만약 자체 서버를 가지고 있는 경우라면,
네이버에서 ‘내 아이피 확인’을 검색하면 외부 공인 IP를 확인할 수 있다.

외부 공인 IP 주소 확인하기 (오라클 클라우드 서버일 경우)

이 글에서는 오라클 클라우드의 인스턴스 VM을 이용하므로,
오라클 인스턴스의 퍼블릭 IP 주소를 확인하는 방법을 설명하겠다.

오라클 클라우드 홈페이지에 접속하여 로그인한다.
메뉴를 차례로, ‘메뉴 – 컴퓨트 – 인스턴스’을 누른다.
인스턴스 목록에서 자신의 퍼블릭 IP 주소를 확인할 수 있다.

오라클 클라우드 인스턴스의 퍼블릭 IP를 확인하는 예시 이미지

외부 접속 해보기

리눅스 터미널이든, 윈도우 명령 프롬프트(CMD)든 어디에서든지 외부 접속 테스트를 해볼 수 있다.
아래의 명령어를 실행해보자.

curl 퍼블릭IP
ShellScript

위의 로컬 웹 서버 확인때와 동일한 결과가 나왔다면 외부에서도 접속이 가능하다는 의미를 가진다.
그럼 실제로 다른 컴퓨터에서 해당 아이피로 접속해보자.

다른 컴퓨터로 외부 공인 IP를 입력하여 웹 페이지에 접속한 예시 이미지

이상없이 잘 접속된다. 이제 외부에서도 내 웹 사이트를 볼 수 있도록 된 것이다.
내가 설정한 사이트의 화면(예를 들어 워드프레스)이 나오지 않는 이유는
우리가 진행한 웹 서버 설정에서 연결한 도메인으로 접속하지 않았기 때문이다.

만약 외부 접속이 되지 않는다면?

만약 방화벽이 80, 443 포트를 허용하고 있고,
Nginx가 정상적으로 실행된 상태임에도 불구하고
외부 IP로의 접속이 되지 않는다면 컴퓨터(혹은 인스턴스)를 재부팅 해보자.
나도 공인 IP로 접속이 계속 안되다가 재부팅하니까 갑자기 됐다.
‘putty’에서 접속 중이라면, reboot 를 입력하면 연결이 끊기고 인스턴스가 재부팅 된다.
조금 기다린 뒤 다시 ‘putty’로 접속하면 된다.
그럼 다시 웹 브라우저에서 공인 IP로 접속을 진행해보자. 접속 될 것이다.

Similar Posts

댓글 남기기