본문 바로가기
리눅스 강의

리눅스 웹 서버 구축, Nginx 설치부터 마스터하기: 초보자를 위한 친절한 안내

by infolily 2024. 10. 10.

웹 서버 구축, 막막하게 느껴지시죠? 걱정 마세요! 오늘은 웹 서버의 핵심, Nginx(엔진엑스) 설치와 설정을 아주 쉽게 알려드릴게요. Nginx는 엄청난 성능과 유연성으로 요즘 가장 인기 있는 웹 서버 중 하나랍니다. 리눅스 환경에서 널리 사용되는 만큼, 이 글을 통해 CentOS와 Ubuntu에서 Nginx를 설치하고, 기본적인 설정부터 실제 운영 환경에 필요한 다양한 설정까지 꼼꼼하게 익혀보실 수 있을 거예요.

Nginx는 뭐하는 녀석일까요? 궁금증을 해소하고, 쉽고 빠르게 웹 서버 환경을 구축해보고 싶다면, 끝까지 함께해주세요!

Nginx 웹 서버: 왜 써야 할까요?

요즘 웹 서비스 운영하면서 Nginx를 안 쓰는 곳이 거의 없을 정도로 인기가 많아요. 그 이유는 바로 뛰어난 성능과 유연성 때문이에요. Nginx는 웹 서버, 리버스 프록시, 로드 밸런서 등 다양한 역할을 척척 해낼 수 있는 팔방미인 같은 존재랍니다. 특히, 엄청난 동시 접속자를 처리하는 데 탁월하고, 서버 자원을 적게 사용해서 운영 비용도 줄일 수 있다는 장점이 있죠.

Nginx의 매력적인 특징들

Nginx가 이렇게 사랑받는 데는 다 이유가 있어요. 핵심적인 특징들을 하나씩 살펴볼까요?

  • 엄청난 성능과 동시 접속 처리 능력: Nginx는 비동기 이벤트 기반 아키텍처를 사용해요. 쉽게 말해, 여러 작업을 동시에 처리하는 능력이 뛰어나다는 거죠. 마치 여러 명의 손님이 동시에 식당에 와도, 요리사가 능숙하게 주문을 처리하고 음식을 만들어내는 것과 비슷하다고 생각하면 돼요. 덕분에 동시에 많은 사용자가 접속해도 웹 서버가 버벅거리지 않고 안정적으로 서비스를 제공할 수 있어요.
  • 가벼운 자원 소모량: Nginx는 Apache 웹 서버보다 자원을 훨씬 적게 사용해요. 덕분에 저렴한 서버에서도 훌륭한 성능을 발휘할 수 있죠. 마치 경차가 연비가 좋고 주차하기 쉽듯이, Nginx는 가벼운 자원 소모로 효율성을 극대화해요.
  • 모듈 방식의 유연성: Nginx는 모듈 방식으로 개발되어 있어서, 필요한 기능만 골라서 사용할 수 있어요. 마치 레고 블록처럼 원하는 기능들을 조립하여 나만의 웹 서버를 만들 수 있죠. 덕분에 웹 서버 환경을 유연하게 구성하고, 필요에 따라 기능을 추가하거나 변경하기 용이해요.
  • 뛰어난 안정성: Nginx는 오랜 시간 동안 검증된 안정적인 웹 서버로, 장애 발생 가능성이 낮아요. 마치 튼튼한 건물처럼, Nginx는 안정적인 기반을 제공하여 웹 서비스가 끊김 없이 운영될 수 있도록 돕죠.
  • 다재다능한 웹 서버: Nginx는 단순한 웹 서버 기능뿐만 아니라 리버스 프록시, 로드 밸런싱, 캐싱 등 다양한 기능을 제공합니다. 마치 만능 재주꾼처럼, Nginx는 웹 서비스 운영에 필요한 다양한 요구 사항을 충족시켜요.

CentOS에서 Nginx 설치하기

CentOS에서 Nginx를 설치하는 과정은 생각보다 간단해요. 몇 가지 명령어만 입력하면 Nginx를 설치하고 바로 사용할 수 있답니다.

1단계: 외부 저장소 추가하기

CentOS에는 Nginx가 기본적으로 설치되어 있지 않아요. 그래서 Nginx를 설치하려면 외부 저장소를 추가해야 한답니다. 마치 새로운 레시피를 요리하려면 필요한 재료를 먼저 준비해야 하는 것과 같아요.

sudo vim /etc/yum.repos.d/nginx.repo 

위 명령어를 입력하면 nginx.repo라는 파일이 열려요. 여기에 아래 내용을 추가해 주세요.

[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/7/$basearch/ 
gpgcheck=0
enabled=1

여기서 baseurl은 Nginx 패키지를 다운로드받을 경로를 나타내요. http://nginx.org/packages/centos/7/$basearch/는 CentOS 7 버전의 Nginx 패키지를 제공하는 기본 경로에요. 만약 Nginx의 최신 버전을 사용하고 싶다면, baseurlhttp://nginx.org/packages/mainline/centos/7/$basearch/로 바꿔주면 돼요.

2단계: Nginx 설치하기

이제 저장소를 추가했으니, Nginx를 설치할 준비가 끝났어요. 아래 명령어를 입력하여 Nginx를 설치해 보세요.

sudo yum install -y nginx

-y 옵션은 설치 과정에서 확인 메시지 없이 자동으로 설치를 진행하도록 하는 옵션이에요. 설치가 완료되면, Nginx가 CentOS 시스템에 설치된 거예요.

3단계: Nginx 서비스 시작 및 확인

Nginx를 설치했으면, 이제 서비스를 시작하고, 제대로 작동하는지 확인해야겠죠? 아래 명령어를 통해 Nginx 서비스를 시작하고, 상태를 확인해 보세요.

sudo systemctl start nginx
sudo systemctl enable nginx
sudo systemctl status nginx 

첫 번째 명령어는 Nginx 서비스를 시작하는 명령어이고, 두 번째 명령어는 시스템 부팅 시 자동으로 Nginx 서비스가 시작되도록 설정하는 명령어에요. 마지막 명령어는 Nginx 서비스의 현재 상태를 확인하는 명령어랍니다.

Ubuntu에서 Nginx 설치하기

Ubuntu에서 Nginx를 설치하는 방법도 CentOS와 비슷해요. Ubuntu의 패키지 관리 시스템인 apt를 이용하면 쉽게 설치할 수 있답니다.

1단계: Nginx 저장소 추가하기

Ubuntu에서 Nginx를 설치하려면, 먼저 Nginx 저장소를 추가해야 해요. 다음 명령어를 통해 저장소를 추가해 보세요.

sudo touch /etc/apt/sources.list.d/nginx.list
echo "deb http://nginx.org/packages/ubuntu/ bionic nginx" | sudo tee -a /etc/apt/sources.list.d/nginx.list

2단계: 인증 키 등록 및 패키지 업데이트

저장소를 추가했으면, Nginx 저장소의 인증 키를 등록하고, 패키지 목록을 업데이트해야 해요. 다음 명령어를 차례대로 입력해 주세요.

wget http://nginx.org/keys/nginx_signing.key
sudo apt-key add nginx_signing.key
sudo apt-get update

3단계: Nginx 설치하기

이제 마지막 단계, Nginx를 설치해 볼까요? 아래 명령어를 입력하면 Nginx가 Ubuntu 시스템에 설치된답니다.

sudo apt-get install nginx

Nginx 기본 설정 살펴보기

Nginx가 설치되었으니, 이제 웹 서버를 원하는 대로 설정해 봐야겠죠? Nginx의 설정은 /etc/nginx/nginx.conf 파일에서 변경할 수 있어요.

sudo nano /etc/nginx/nginx.conf

Nginx 설정 파일 구조 이해하기

Nginx 설정 파일은 크게 HTTP 블록, Server 블록, Location 블록으로 구성되어 있어요.

HTTP 블록: 전체 HTTP 서버의 기본 설정을 담당하는 부분이에요. 전체 웹 서버의 동작 방식, 즉 어떤 포트를 사용할지, 에러 로그를 어디에 저장할지 등 전반적인 설정을 정의하는 곳이죠.

Server 블록: 가상 호스트 설정을 담당하는 부분이에요. 웹 서버에서 여러 도메인을 운영할 때, 각 도메인별로 설정을 따로 지정해주는 곳이죠. 마치 한 건물에 여러 개의 상점이 입점해 있는 것처럼, 각 도메인에 대한 설정을 별도로 관리할 수 있답니다.

Location 블록: 특정 경로에 대한 요청을 처리하는 방식을 설정하는 부분이에요. 어떤 URL에 접속했을 때 어떤 파일을 보여줄지, 어떤 작업을 수행할지 등을 지정하는 곳이죠. 마치 사용자가 특정 층의 특정 상점을 방문했을 때, 원하는 상품을 찾을 수 있도록 안내하는 것과 같아요.

자주 사용하는 설정 지시어:

지시어 설명
listen Nginx가 어떤 포트에서 요청을 받을지 설정 (기본값: 80)
server_name 도메인 이름 설정
root 웹 문서 루트 디렉토리 설정 (기본값: /usr/share/nginx/html)
index 기본 index 파일 설정 (기본값: index.html index.htm)
location 특정 경로에 대한 설정

가상 호스트 설정: 하나의 서버에서 여러 도메인 운영하기

만약 여러 개의 도메인을 운영하고 싶다면, 가상 호스트를 설정해야 해요. 가상 호스트는 하나의 서버에서 여러 개의 도메인을 호스팅할 수 있도록 해주는 기능이에요. 마치 한 건물에 여러 개의 상점이 입점해 있는 것처럼, 하나의 서버에서 여러 도메인을 운영할 수 있게 해주는 거죠.

가상 호스트 파일 생성:

/etc/nginx/sites-available 디렉토리에 새로운 가상 호스트 파일을 생성해요.

sudo nano /etc/nginx/sites-available/example.com

가상 호스트 설정 예시:

다음은 example.com 도메인에 대한 가상 호스트 설정 예시입니다.

server {
    listen 80;
    server_name example.com www.example.com;

    location / {
        root /var/www/example.com;
        index index.html index.htm;
    }
}

이 설정은 example.comwww.example.com에 대한 요청을 받아 /var/www/example.com 디렉토리의 파일을 제공하도록 설정하는 거예요.

가상 호스트 활성화:

/etc/nginx/sites-enabled 디렉토리에 심볼릭 링크를 생성하여 가상 호스트를 활성화해요.

sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/

방화벽 설정: Nginx에게 문을 열어주기

Nginx 서비스를 사용하려면, 방화벽 설정에서 80번 포트를 열어줘야 해요. 마치 집에 손님을 초대하려면 현관문을 열어줘야 하는 것과 같아요.

CentOS의 경우:

sudo firewall-cmd --permanent --zone=public --add-port=80/tcp
sudo firewall-cmd --reload

Ubuntu의 경우:

sudo ufw allow 80
sudo ufw reload 

Nginx 서비스 재시작: 설정 적용하기

설정을 변경한 후에는 Nginx 서비스를 재시작하여 변경 사항을 적용해야 해요. 마치 요리 레시피를 바꿨다면, 다시 요리를 시작해야 하는 것과 같아요.

sudo systemctl restart nginx 

Nginx 활용하기: 더욱 다양한 기능들

지금까지 Nginx의 기본적인 설치와 설정 방법을 살펴봤어요. 하지만 Nginx는 이 외에도 훨씬 다양한 기능들을 제공해요.

SSL/TLS 설정: 안전한 웹 서버 만들기

요즘 웹 사이트는 보안이 정말 중요해요. Nginx를 사용하여 SSL/TLS 인증서를 설정하면, 웹 사이트를 HTTPS로 안전하게 운영할 수 있답니다. Let's Encrypt와 같은 무료 인증서를 사용하면 더욱 쉽게 설정할 수 있어요.

캐싱 설정: 웹 서버 성능 향상시키기

Nginx는 정적 콘텐츠를 캐싱하는 기능을 제공해요. 자주 사용하는 이미지, CSS, JavaScript 파일 등을 캐싱해 놓으면, 웹 서버의 부하를 줄이고 웹 페이지 로딩 속도를 향상시킬 수 있답니다. 마치 자주 사용하는 물건을 서랍에 넣어두면 쉽게 찾을 수 있는 것과 같아요.

리버스 프록시 설정: 웹 서버 보호하기

리버스 프록시는 웹 서버 앞에 보호막을 씌우는 것과 같아요. 사용자의 요청을 받아 웹 서버로 전달하고, 웹 서버의 응답을 다시 사용자에게 전달하는 역할을 수행하죠. 이를 통해 웹 서버를 외부 공격으로부터 보호하고, 웹 서버의 성능을 향상시킬 수 있습니다.

로드 밸런싱 설정: 여러 서버에 부하 분산하기

여러 대의 웹 서버를 운영하는 경우, Nginx를 사용하여 로드 밸런싱을 설정할 수 있어요. 사용자의 요청을 여러 웹 서버에 분산하여 처리함으로써, 하나의 서버에 부하가 집중되는 것을 방지하고 웹 서버의 안정성을 높일 수 있답니다.

액세스 로그 설정: 웹 서버 사용 현황 분석하기

Nginx는 웹 서버에 대한 접근 로그를 기록하는 기능을 제공해요. 웹 사이트의 트래픽을 분석하고, 어떤 사용자가 어떤 콘텐츠에 접속했는지, 웹 사이트의 보안에 문제는 없는지 등을 확인할 수 있답니다. 마치 손님이 식당에 방문했을 때, 어떤 음식을 주문했는지 기록하는 것과 같아요.

에러 페이지 설정: 사용자 친화적인 에러 메시지 제공하기

웹 서버에서 에러가 발생하면, 사용자에게 친절한 에러 메시지를 보여주는 것이 좋겠죠? Nginx는 에러 발생 시 사용자에게 보여줄 커스텀 에러 페이지를 설정할 수 있는 기능을 제공해요. 사용자에게 좀 더 나은 경험을 제공하고, 에러 원인을 파악하는 데 도움을 줄 수 있답니다.

Gzip 압축 설정: 웹 콘텐츠 전송 속도 높이기

Nginx는 웹 콘텐츠를 압축하여 전송하는 기능을 제공해요. 웹 콘텐츠를 압축하면 전송 용량이 줄어들어 웹 페이지 로딩 속도를 높일 수 있답니다. 마치 짐을 압축해서 여행 가방에 넣으면 더 많은 짐을 넣을 수 있는 것과 같아요.

Nginx 설정 옵션 비교: CentOS vs Ubuntu

기능 CentOS Ubuntu
기본 저장소 Nginx 패키지 미포함 Nginx 패키지 포함
저장소 추가 nginx.repo 파일 생성 및 수정 sources.list.d/nginx.list 파일 생성 및 수정
설치 명령어 sudo yum install -y nginx sudo apt-get install nginx
서비스 관리 systemctl 명령어 사용 systemctl 명령어 사용
방화벽 firewall-cmd 명령어 사용 ufw 명령어 사용

궁금한 점이 있으신가요? 자주 묻는 질문 (FAQ)

Q1. Nginx와 Apache 웹 서버 중 어떤 것을 선택해야 할까요?

A1. Nginx와 Apache는 각각 장단점을 가지고 있어요. Nginx는 고성능과 동시 접속 처리 능력에 특화되어 있고, Apache는 다양한 모듈과 확장 기능을 제공하죠. 웹 서비스의 특성과 요구 사항에 따라 적절한 웹 서버를 선택하는 것이 중요해요. 예를 들어, 높은 트래픽을 처리해야 하는 웹 서비스라면 Nginx가 더 적합하고, 다양한 기능을 필요로 하는 웹 서비스라면 Apache가 더 나은 선택일 수 있답니다.

Q2. Nginx 설정 파일을 수정했는데, 변경 사항이 적용되지 않아요. 어떻게 해야 하나요?

A2. Nginx 설정 파일을 수정한 후에는 반드시 Nginx 서비스를 재시작해야 변경 사항이 적용돼요. 다음 명령어를 통해 Nginx 서비스를 재시작해보세요.

sudo systemctl restart nginx 

Q3. Nginx에서 SSL/TLS 인증서를 설정하는 방법은 무엇인가요?

A3. Nginx에서 SSL/TLS 인증서를 설정하면 웹 사이트를 HTTPS로 안전하게 운영할 수 있어요. Let's Encrypt와 같은 무료 인증서를 사용하면 쉽게 설정할 수 있답니다. 인증서를 발급받고, Nginx 설정 파일에서 인증서 경로를 설정해주면 돼요. 자세한 방법은 Nginx 공식 문서나 Let's Encrypt 웹사이트를 참고하면 더욱 쉽게 이해할 수 있을 거예요.

마무리: 이제 Nginx 전문가가 되어보세요!

자, 이제 Nginx의 설치부터 기본 설정, 그리고 다양한 기능까지 꼼꼼하게 살펴봤어요. Nginx는 웹 서버 운영에 필수적인 도구이기 때문에, 꾸준히 공부하고 익히면 웹 서비스를 더욱 안정적이고 효율적으로 운영할 수 있을 거예요.

이 글이 여러분의 웹 서버 구축 여정에 작게나마 도움이 되었으면 좋겠네요! 혹시 궁금한 점이나 더 자세한 내용이 필요하면 언제든지 댓글 남겨주세요!

nginx, 웹서버, 리눅스, centos, ubuntu, 설치, 설정, 가상호스트, 방화벽, https, ssl, tls, 캐싱, 리버스프록시, 로드밸런싱, 액세스로그, 에러페이지, gzip, 성능최적화, 웹개발, 서버관리, devops, 초보자, 가이드, 팁, 정보, 공유, IT, 기술블로그, 웹서비스, 인프라, 개발자, 운영자

 

관련 포스트 더 보기

2024.10.10 - [리눅스 강의] - 리눅스 MySQL 설치 완벽 가이드: 초보자도 쉽게!

 

리눅스 MySQL 설치 완벽 가이드: 초보자도 쉽게!

확인했음데이터베이스 관리 시스템(DBMS) 중에서도 MySQL은 널리 쓰이는 오픈 소스 솔루션 중 하나에요. 웹 개발이나 데이터 분석 등 다양한 분야에서 활용되고 있죠. 특히 리눅스 환경에서는 MySQL

infolily.tistory.com

2024.10.10 - [리눅스 강의] - 리눅스 Apache 웹서버 설치 완벽 가이드: 초보자도 쉽게!

 

리눅스 Apache 웹서버 설치 완벽 가이드: 초보자도 쉽게!

리눅스 서버를 운영하는데 웹 서버가 빠질 수 없죠? 웹 서버는 여러분의 웹사이트나 웹 애플리케이션을 인터넷을 통해 세상에 공개하는 중요한 역할을 합니다. 그리고 리눅스 환경에서 가장 널

infolily.tistory.com

2024.10.10 - [리눅스 강의] - 리눅스 SSH 설정 완벽 가이드: 안전한 원격 접속!

 

리눅스 SSH 설정 완벽 가이드: 안전한 원격 접속!

리눅스 서버에 안전하게 접근하고 싶은데 어떻게 해야 할지 막막하시죠? 혹시 SSH라는 단어를 들어보셨나요? SSH는 Secure Shell의 약자로, 리눅스 서버에 안전하게 원격 접속할 수 있는 아주 중요한

infolily.tistory.com

2024.10.10 - [리눅스 강의] - 리눅스 Apache 웹서버 설치 완벽 가이드: 초보자도 쉽게!

 

리눅스 Apache 웹서버 설치 완벽 가이드: 초보자도 쉽게!

리눅스 서버를 운영하는데 웹 서버가 빠질 수 없죠? 웹 서버는 여러분의 웹사이트나 웹 애플리케이션을 인터넷을 통해 세상에 공개하는 중요한 역할을 합니다. 그리고 리눅스 환경에서 가장 널

infolily.tistory.com

2024.10.10 - [리눅스 강의] - 리눅스 Apache 웹서버 설치 완벽 가이드: 초보자도 쉽게!

 

리눅스 Apache 웹서버 설치 완벽 가이드: 초보자도 쉽게!

리눅스 서버를 운영하는데 웹 서버가 빠질 수 없죠? 웹 서버는 여러분의 웹사이트나 웹 애플리케이션을 인터넷을 통해 세상에 공개하는 중요한 역할을 합니다. 그리고 리눅스 환경에서 가장 널

infolily.tistory.com