최근 몇 년간 웹 애플리케이션은 다양한 사용자에게 서비스를 제공하는 수단으로 폭넓은 인기를 얻고 있습니다. 웹 애플리케이션을 활용하면 사용자가 어떤 기기나 운영체제를 사용하든 상관없이 더 많은 사람에게 다가갈 수 있습니다.
웹 서버를 설치하고 구성할 줄 아는 능력은 웹 개발자와 소프트웨어 엔지니어 모두에게 매우 유용한 기술입니다. 웹 서버는 인터넷이나 네트워크를 통해 클라이언트에게 웹 콘텐츠를 전달하는 역할을 담당하는 프로그램입니다.
지금부터 Ubuntu에서 Nginx 웹 서버를 설치하고 구성하는 방법을 자세히 살펴보겠습니다.
Nginx를 사용해야 하는 이유
Nginx는 Windows와 Linux 환경 모두에서 실행할 수 있는 가볍고 고성능의 웹 서버입니다. 웹 서버로서의 역할뿐만 아니라 리버스 프록시(reverse proxy) 서버와 메일 프록시 서버로도 널리 활용됩니다. 참고로 Nginx는 "엔진엑스(engine x)"라고 발음합니다.
리버스 프록시 서버로 구성하면 Nginx는 지정된 포트로 들어오는 트래픽을 서버에서 실행 중인 애플리케이션으로 전달합니다. 이때 Nginx 리버스 프록시는 트래픽이 서버에 도달하기 전에 검사하고 필터링하기 때문에 추가적인 보안 계층 역할을 합니다.
Nginx는 서버에서 서비스(service) 또는 데몬(daemon) 형태로 실행되며, Linux에서는 systemctl 같은 서비스 관리자를 통해 손쉽게 관리할 수 있습니다. 마지막으로 Nginx는 공식 문서가 잘 정비되어 있고 커뮤니티 지원도 매우 활발하다는 장점이 있습니다.
Ubuntu에 Nginx 서버 설치하기
이 가이드에서는 Ubuntu가 설치된 Linux 머신에 Nginx 서버를 설치하는 과정을 단계별로 안내합니다.
1단계: 보안 필수 패키지 설치
보안이 중요한 서버에 Nginx를 설치한다면, 안전한 설치와 안정적인 버전 확보를 위해 먼저 필수 패키지들을 설치하는 것이 좋습니다.
먼저 시스템의 패키지 목록을 최신 상태로 업데이트합니다.
sudo apt update
다음으로, 프로그램을 다운로드할 때 보안 통신 채널을 확보할 수 있도록 gnupg2 등의 패키지를 설치합니다.
sudo apt install curl gnupg2 ca-certificates lsb-release ubuntu-keyring
그다음에는 Nginx 공식 서명 키를 가져와 패키지의 진위 여부를 검증할 수 있도록 합니다.
curl https://nginx.org/keys/nginx_signing.key | gpg --dearmor | sudo tee /usr/share/keyrings/nginx-archive-keyring.gpg >/dev/null
이제 가져온 파일에 올바른 키가 포함되어 있는지 아래 명령어로 확인합니다.
gpg --dry-run --quiet --import --import-options import-show /usr/share/keyrings/nginx-archive-keyring.gpg
출력 결과에 아래와 같은 지문(fingerprint)이 포함되어 있어야 합니다.
573BFD6B3D8FBC641079A6ABABF5BD827BD9BF62
마지막으로 시스템에 Nginx 저장소를 등록하여 안정적인(stable) 패키지를 받을 수 있도록 설정합니다. 프로덕션이나 보안 환경에서는 특히 중요한 단계입니다.
echo "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg] https://nginx.org/packages/ubuntu `lsb_release -cs` nginx" | sudo tee /etc/apt/sources.list.d/nginx.list
2단계: Nginx 설치
다음 단계는 Nginx 서버를 설치하는 것입니다. 새로운 패키지를 다운로드하기 전에 반드시 패키지 소스를 먼저 업데이트하세요.
sudo apt update
Nginx 서버 설치는 매우 간단합니다. 아래 명령어 하나만 실행하면 됩니다.
sudo apt install nginx
참고로 Ubuntu에서 APT와 dpkg의 차이점을 알아두면 패키지 관리에 큰 도움이 됩니다.
Nginx 동작 확인하기
Nginx가 제공하는 기본 페이지는 /usr/share/nginx/html 디렉터리에 저장되어 있습니다. 정적 웹 페이지를 이 위치나 원하는 다른 위치에 배치한 후 가상 호스트(virtual host)를 구성할 수 있습니다.
가상 호스트를 사용하면 동일한 서버 하드웨어나 인프라에서 여러 웹 페이지를 동시에 서비스할 수 있습니다.
아래 명령어로 Nginx 서버의 상태를 확인할 수 있습니다.
sudo systemctl status nginx
출력 결과에서 Nginx 데몬이 활성화(active)되어 실행 중임을 확인할 수 있습니다. 만약 실행 중이 아니라면 아래 명령어로 시작할 수 있습니다.
sudo systemctl start nginx
Nginx 설정을 변경한 후에는 systemctl 명령어로 서버를 재시작하면 됩니다.
sudo systemctl restart nginx
Nginx 기본 웹페이지를 확인하려면 웹 브라우저에서 https://localhost:80 주소를 열면 됩니다. 아래와 비슷한 화면이 나타날 것입니다.
웹 앱 개발 학습 시작하기
축하합니다! 성공적으로 Nginx를 설치하고 구성했습니다. 이번 가이드에서는 Ubuntu에 웹 서버를 설치하고 구성하는 방법을 살펴보았으며, systemctl을 활용해 Nginx 서버 데몬을 관리하는 방법도 함께 알아보았습니다.
현재 웹 개발자에 대한 수요는 그 어느 때보다 높으며, 당분간 꺾일 기미를 보이지 않고 있습니다. 오늘 바로 HTML 기초부터 배우면서 웹 개발 여정을 시작해 보세요.