TIL - 20251214

juni·2025년 12월 14일

TIL

목록 보기
207/316

1214 웹 마스터 입문 (3/5): 웹 서버 소프트웨어와 HTTPS/SSL


✅ 1. 웹 서버 소프트웨어

  • 웹 서버 소프트웨어는 하드웨어 컴퓨터(서버)에 설치되어, 클라이언트(웹 브라우저)로부터 HTTP 요청을 받아 정적 콘텐츠(HTML, CSS, 이미지 등)를 제공하거나, 동적 요청을 WAS로 전달하는 핵심 프로그램입니다.

➕ 대표적인 웹 서버: Apache vs Nginx

  • 현재 전 세계 웹 서버 시장은 ApacheNginx가 양분하고 있습니다. 둘의 동작 방식과 특징을 이해하는 것은 서버 환경을 선택하고 최적화하는 데 중요합니다.
구분Apache HTTP ServerNginx (엔진엑스)
개발 시기1995년 (오래됨, 안정적)2004년 (현대적, 고성능)
동작 방식프로세스/스레드 기반
요청마다 새로운 프로세스 또는 스레드를 생성하여 처리.
이벤트 기반 (Event-Driven)
하나 또는 적은 수의 프로세스로 여러 연결을 비동기적으로 처리.
성능• 동시 접속자 수가 많아지면 메모리 사용량 급증, 성능 저하.
• 다양한 모듈로 기능 확장이 매우 유연함.
동시 접속 처리에 매우 강력함 (C10K 문제 해결).
• 적은 메모리로 높은 성능을 냄.
주요 용도• 전통적인 웹 호스팅 환경.
• 다양한 기능이 필요한 복잡한 웹 애플리케이션.
리버스 프록시(Reverse Proxy), 로드 밸런서.
• 대규모 트래픽을 처리하는 현대적인 웹 서비스.
  • 리버스 프록시 (Reverse Proxy): Nginx의 가장 중요한 역할 중 하나. 클라이언트의 요청을 Nginx가 먼저 받은 후, 내부망에 있는 여러 대의 WAS(Web Application Server) 중 하나에게 요청을 전달하고 그 응답을 받아 다시 클라이언트에게 전달하는 방식. 이를 통해 로드 밸런싱, SSL 암호화 처리, 캐싱 등의 기능을 수행하여 WAS의 부담을 줄여줍니다.

✅ 2. 웹 서버 기본 설정 파일

  • 웹 서버의 동작은 설정 파일을 통해 제어됩니다. 웹 마스터는 이 설정 파일의 구조와 주요 지시어(Directive)를 이해하고 수정할 수 있어야 합니다.

  • Apache: httpd.conf

  • Nginx: nginx.conf

➕ Nginx 설정 파일의 기본 구조 (nginx.conf)

// 전역 설정
user  nginx;
worker_processes  auto; // CPU 코어 수에 맞게 자동으로 프로세스 수 조절

events {
    worker_connections  1024; // 프로세스당 처리할 수 있는 동시 연결 수
}

http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;

    // ... 로그, 캐시 등 공통 설정 ...

    // 가상 호스트(서버 블록) 설정
    server {
        listen       80; // 80번 포트에서 요청을 기다림
        server_name  example.com www.example.com; // 이 도메인으로 들어온 요청을 처리

        location / {
            root   /usr/share/nginx/html; // 웹 문서의 최상위 디렉토리
            index  index.html index.htm;   // 기본으로 보여줄 파일
        }

        // /api/ 경로로 들어온 요청은 8080 포트의 WAS로 전달 (리버스 프록시)
        location /api/ {
            proxy_pass http://localhost:8080;
        }
    }
}
  • server 블록: 하나의 웹사이트(가상 호스트)에 대한 설정을 정의합니다.
  • location 블록: 특정 URL 경로에 대한 처리 방식을 정의합니다.

✅ 3. HTTPS와 SSL/TLS 인증서

  • HTTP (HyperText Transfer Protocol)는 웹에서 데이터를 주고받는 기본 프로토콜이지만, 모든 데이터를 평문(Plain Text)으로 전송하여 중간에 누군가 엿보거나(도청), 데이터를 변조할 위험이 있습니다.

  • HTTPS (HTTP Secure):

    • HTTP의 보안 문제를 해결하기 위해 등장했습니다.
    • HTTP 통신 전체를 SSL(Secure Sockets Layer) 또는 TLS(Transport Layer Security)라는 프로토콜을 통해 암호화하는 방식입니다.
    • 목표:
      1. 암호화 (Encryption): 제3자가 통신 내용을 엿볼 수 없도록 합니다.
      2. 무결성 (Integrity): 데이터가 중간에 변조되지 않았음을 보장합니다.
      3. 인증 (Authentication): 내가 접속한 서버가 진짜 내가 접속하려던 서버가 맞는지 신원을 확인합니다.

➕ SSL/TLS 인증서 (Certificate)

  • 역할: HTTPS의 "인증" 기능을 수행하는 "디지털 신분증"입니다.

  • 발급: 인증 기관(Certificate Authority, CA)이라는 신뢰할 수 있는 제3자 기관(e.g., Let's Encrypt, GoDaddy)이 해당 도메인의 소유권을 확인한 후 발급해줍니다.

  • 동작 원리 (간략화):

    1. [브라우저 → 서버]: "안녕, example.com? 너의 신분증(인증서) 좀 보여줘."
    2. [서버 → 브라우저]: 서버가 자신의 인증서를 브라우저에게 전달합니다.
    3. [브라우저]: 브라우저는 내장된 신뢰할 수 있는 CA 목록을 통해, 이 인증서가 위조되지 않았고, 유효하며, 접속하려는 도메인과 일치하는지 검증합니다.
    4. [암호화 통신 시작]: 검증이 완료되면, 브라우저와 서버는 안전한 암호화 통신 채널을 수립하고 데이터를 주고받기 시작합니다.
  • 웹 마스터의 역할: 웹사이트에 HTTPS를 적용하기 위해, 도메인에 대한 SSL 인증서를 발급받고, 이를 웹 서버(Nginx, Apache)나 로드 밸런서(AWS ALB)에 설치하여 443 포트(HTTPS 기본 포트)를 활성화하는 작업을 수행해야 합니다.


📌 요약

  • 현대 웹 환경에서는 Nginx이벤트 기반의 뛰어난 동시 접속 처리 성능 덕분에 웹 서버리버스 프록시로 널리 사용됩니다.
  • 웹 마스터는 nginx.conf와 같은 설정 파일을 통해 가상 호스트, 문서 루트, 리버스 프록시 등을 설정할 수 있어야 합니다.
  • HTTPS는 HTTP 통신을 SSL/TLS 프로토콜로 암호화하여 보안을 강화하는 방식입니다.
  • HTTPS를 적용하려면, 신뢰할 수 있는 인증 기관(CA)으로부터 SSL 인증서를 발급받아 웹 서버에 설치해야 합니다. 이는 현대 웹사이트의 필수적인 보안 요구사항입니다.

0개의 댓글