Notice
Recent Posts
Recent Comments
Link
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
Archives
Today
Total
관리 메뉴

ENN

Web Server 알아보기: Nginx와 Apache 본문

백엔드

Web Server 알아보기: Nginx와 Apache

ParkIsComing 2023. 1. 2. 22:59

Web Server란?

client-web server-WAS-database
이때 Nginx가 web server에 해당

web server : 단순히 정적 파일을 응답
WAS : 클라이언트 요청에 대해 동적인 처리가 이뤄진 후 응답

웹서버를 별도로 운영하는 이유?

WAS의 부담을 줄여주기 위해

Nginx의 장점

  • 빠르다
  • reverse proxy로 사용 가능
    • load balancing 기능
    • caching server 기능
    • 보안 효과
  • SSL 지원 (https://)
  • 웹페이지 접근 인증
  • 압축
  • 비동기 처리

Nginx 사용하기

기본 설정 및 커맨드

$ sudo apt-get update
$ sudo apt-get upgrade -y

$ sudo apt-get install nginx

$ sudo service nginx start                 #nginx 실행

$ cd /etc/nginx/sites-enabled
$ sudo rm default
$ sudo vi default

nginx 관련 추가 커맨드

$ sudo service nginx status             #nginx 상태 확인

$ sudo service nginx stop                #중지
$ sudo service nginx restart             #중지 후 재실행
$ sudo service nginx reload             #수정된 파일 적용하여 연결을 끊지 않고 재실행

#기본적으로 nginx는 서버가 부팅될 때 자동으로 시작한다.
$ sudo service disable nginx
$ sudo service enable nginx
server {
    listen 80;
    server_name idu-market.shop:

    #access_log /var/log/nginx/reverse-access.log;
    #error_log /var/log/nginx/reverse-error.log;

       if($host = idu-market.shop){
        return 301 https://$host$request_uri;
    }

reverse proxy

reverse proxy의 장점

reverse proxy를 사용하여 얻을 수 있는 효과는 다음과 같습니다.

  1. load balanicng
  2. caching
    : 미리 렌더링된 페이지를 caching함으로써 페이지 로드 시간을 단축한다. 매번 동일한 콘텐츠를 프록시 서버에 연결하지 않아도 된다.
  3. 보안
    : DDoS 공격 완화. 수신 요청과 단일 ip주소당 연결 수를 일반 사용자에게 일반적인 값으로 제한함으로써 가능.

reverse proxy 사용법

프록시 서버 URL은 proxy_pass 지시어를 사용하여 설정된다. 프로토콜, 도메인 이름, 또는 ip주소로 HTTP 또는 HTTPS를 사용할 수 있으며 선택적 포트와 URI를 주소로 사용할 수 있다.

아래 코드는 /app으로 접속할 경우 http://127.0.0.1:8080가 프록시 서버 역할을 하도록 한다. 프록시 서버 주소에 URI을 포함하면 프록시 서버로 들어오는 요청 URI가 지정된 URI로 바뀌며, URI를 포함하지 않으면 요청으로 들어온 URI가 프록시 서버에 전달된다.

아래 코드를 예로 들어보자.

  1. 방문자가 http://example.com/app/my-post로 접속한다.
  2. Nginx는 이 요청을 http://example.com/list/my-post로 대리한다.
server {
    listen 80;
    server_name www.example.com example.com;

    location /app {
       proxy_pass http://127.0.0.1:8080/list/;
    }
}

ubuntu 환경에서는 서버 블록 파일이 /etc/nginx/site-available 디렉토리에 저장된다.

SSL로 https 페이지 만들기

https 페이지를 만들려면 certbot을 이용해 SSL 인증서를 발급 받아 적용해야 한다. certbot 라이브러리는 letsencrypt 형태로 SSL/TLS 인증서를 무료로 제공한다.