Nginx가 어떤 역할을 하는지 알았다면, 이제는 실제로 사용해볼 차례입니다.

 

1. 운영 체체별 설치 방법

2. nginx.conf 파일 확인

1. 운영 체제 별 설치 방법

 

1. Ubuntu

sudo apt install nginx

 

2. CentOS

sudo yum install nginx

  

3.  MAC(homebrew 설치 필요)

brew install nginx

 

4. Docker

docker pull nginx
docker run -d -p 80:80 --name nginx-container nginx

 

 

 

2.  Nginx.conf 파일 확인

 

default.conf 전문

server {
    listen       80;
    listen  [::]:80;
    server_name  localhost;

    #access_log  /var/log/nginx/host.access.log  main;

    location / {
        root   /usr/share/nginx/html;
        index  index.html index.htm;
    }

    #error_page  404              /404.html;

    # redirect server error pages to the static page /50x.html
    #
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }

    # proxy the PHP scripts to Apache listening on 127.0.0.1:80
    #
    #location ~ \.php$ {
    #    proxy_pass   http://127.0.0.1;
    #}

    # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
    #
    #location ~ \.php$ {
    #    root           html;
    #    fastcgi_pass   127.0.0.1:9000;
    #    fastcgi_index  index.php;
    #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
    #    include        fastcgi_params;
    #}

    # deny access to .htaccess files, if Apache's document root
    # concurs with nginx's one
    #
    #location ~ /\.ht {
    #    deny  all;
    #}
}

 

 

 

 

 

1. 기본 서버 설정

server {
    listen       80; // Nginx가 HTTP 요청을 처리할 기본 포트(80번) 
    listen  [::]:80; // IPv6 기반의 요청을 처리하도록 설정
    server_name  localhost; // 요청된 도메인 이름에 따라 이 서버 블럭을 사용할지 결정
    						// localhost는 본인 로컬(127.0.0.1)을 의미
}

 

 

2. 정적 파일 제공

location / { // 루트경로(/)로 들어오는 요청을 처리
    root   /usr/share/nginx/html; // 정적 파일의 루트 디렉토리
    index  index.html index.htm; // 기본으로 로드할 파일 목록
}

 

 

3. 에러 페이지 설정

error_page   500 502 503 504  /50x.html; // 5xx에러 발생 시 50x 에러 페이지 등장
location = /50x.html {
    root   /usr/share/nginx/html; // '/50x.html' 경로에 대한 요청을 처리
}

 

 

4. PHP 관련 설정

#location ~ \.php$ {
#    proxy_pass   http://127.0.0.1;
#}

 

 

5.  보안 설정

#location ~ /\.ht { // .ht로 시작하는 파일 이름에 대해 동작
#    deny  all; // 모든 클라이언트의 요청을 차단 (allow all 은 모든 요청 허용)
#}

 

.ht 파일 차단하는 이유
.htaccess는 Apache 웹 서버에서 사용되는 설정 파일이며 디렉토리 수준에서 설정을 오버라이딩 가능
그래서 Nginx도 보안 위험등의 이유로 차단한다.

 

'Nginx' 카테고리의 다른 글

왜 Nginx인가? 웹 서버와 애플리케이션 서버의 차이  (1) 2025.01.24
  1. Nginx 가 뭐지?
  2. Nginx 등장 이유
  3. 장점
  4. 단점

 

1. Nginx 가 뭐지

취업을 위해서 일단 웹서버라고 듣고 요새 이걸 써야한다고만 들었다. 
취업하고 사용하다보니 사용법은 아는데 왜 사용하지 그리고 사용하는 설정들에 대해서만 알지 좀 더 깊이 알고싶어 찾아보게 되었다.

 

먼저 두가지만 기억하자

  1. 웹서버(WS)
    1. 요청을 받아 정적 리소스(HTML)를 제공하거나 동적 처리가 필요한 요청을 웹 애플리케이션 서버로 전달
    2. 정적인건 본인이 처리 동적인건 넘겨주는 역할
  2. 웹 애플리케이션 서버(WAS)
    1. 전달받은 요청을 기반으로 비즈니스 로직을 처리하고 데이터를 생성 및 반환한다.
    2. 요청을 최종적으로 처리 및 반환 역할

간단히 웹서버가 전달자 느낌이면 웹 애플리케이션 서버가 처리자 역할이라 생각한다.

 

그래서 Nginx란?

Nginx는 웹서버이다.
정적 파일을 제공하고, 요청을 전달하고(프록시), 트래픽을 분산한다(로드 밸런싱)

어렵다면 레스토랑 웨이터 느낌이라 생각하자!
웨이터(Nginx)는 메뉴판 전달과 같은 간단한건 처리하지만 요리와 같은 복잡한건 요리사(웹 애플리케이션 서버)에게 넘긴다.

 

2. Nginx 등장 이유

Nginx는 동시 접속 처리, 성능, 로드 밸런싱, 리버스 프록시의 효율성을 높이기 위해 등장한 고성능 웹 서버

 

 

기존에는 톰켓을 썻다.

 

톰캣과 Nginx의 차이는 뭘까

 

  1. 비동기 방식
    1. Nginx는 요청을 비동기/이벤트 기반으로 처리하다보니 여러 요청이와도 한번에 처리가 되서 효율적으로 처리한다.
    2. 톰캣은 스레드 기반으로 처리하다보니 하나의 톰캣서버에서 요청이 너무 몰리게되면 스레드가 고갈되어 성능이 저하된다.
  2. 가벼움
    1. Nginx는 정적 파일등을 제공하는데에 있어 최적화 되어있다.
    2. 톰켓은 DB, 서비스 처리등 복잡한 요청 처리에 최적화 되어 있다.
  3. 설계 목적 차이
    1. Nginx는 빠른 정적파일 제공, 트래픽 분산(로드 밸런싱)에 최적화 되어있다.
    2. 톰캣은 서비스 처리 등 동적 요청(java 애플리케이션)에 초점이 맞춰져 있다.

 

트래픽이 증가함에 따라 톰캣의 처리방식에서 성능 문제가 발견되었고 그로인해 비동기 처리 방식인 Ngixn가 채택되었다.

 

• 톰캣은 손님마다 요리를 만들어주는 요리사 → 많은 손님이 오면 요리가 느려진다.
•Nginx는 간단한 음식을 바로 제공하는 패스트푸드점 직원  → 빠르고 효율적이다.

 

 

3. Nignx 장점

  1. 고성능
    • 비동기 이벤트 기반으로 동시 접속 처리 능력이 뛰어나서 대량의 요청도 효율적으로 처리한다.
  2. 가벼움
    • 정적 콘텐츠(HTML, CSS, 이미지 등)을 가볍고 빠르게 제공한다.
  3. 로드 밸런싱
    • 여러 서버로 트래픽을 분산해 서버 과부하를 방지할 수 있다.
  4. 리버스 프록시
    • 요청을 애플리케이션 서버(WAS)로 전달하면서 보안과 성능을 향상시킨다.
  5. 높은 안정성
    • 과부하 상황에서도 성능 저하가 적고, 서버 크래시 가능성이 적다

 

4. Nginx 단점

  1. 동적 처리 컨텐츠 한계
    • 애플리케이션 로직을 실행할 수 없어, 동적 요청은 웹 애플리케이션 서버에 의존해야 한다.
  2. 설정 복잡성
    • 초기 설정이 어렵다!

 

결국엔 현재 개발에 있어서 굳이 이걸 사용 안할 이유가 없는 강력한 도구라 생각합니다!
많은 곳에서 기본 옵션처럼 사용하는 걸 보면 결국 자세히 알고 더 잘 사용할 수 있으면 좋지않을까..

'Nginx' 카테고리의 다른 글

Nginx 설치 및 설정 파일 확인  (0) 2025.01.25

+ Recent posts