Search

μ›Ή μ„œλ²„

μ›Ή μ„œλ²„ (Web Server)

κ°œμš”

μ›Ή μ„œλ²„λž€ ν΄λΌμ΄μ–ΈνŠΈ(λΈŒλΌμš°μ €)의 HTTP μš”μ²­μ„ λ°›μ•„ μ›Ή νŽ˜μ΄μ§€, 이미지, API 응닡 등을 λŒλ €μ£ΌλŠ” μ†Œν”„νŠΈμ›¨μ–΄(λ˜λŠ” ν•˜λ“œμ›¨μ–΄)이닀.
μš°λ¦¬κ°€ λΈŒλΌμš°μ € μ£Όμ†Œμ°½μ— www.google.com을 μž…λ ₯ν•˜λ©΄, κ·Έ μš”μ²­μ€ μ–΄λ”˜κ°€μ— μžˆλŠ” μ»΄ν“¨ν„°λ‘œ λ‚ μ•„κ°€κ³ , κ·Έ 컴퓨터가 μš°λ¦¬μ—κ²Œ 화면을 보여쀄 HTML νŒŒμΌμ„ λ³΄λ‚΄μ€˜μš”. λ°”λ‘œ κ·Έ "μ–΄λ”˜κ°€μ— μžˆλŠ” μ»΄ν“¨ν„°μ—μ„œ λŒμ•„κ°€λŠ” ν”„λ‘œκ·Έλž¨"이 μ›Ή μ„œλ²„μž…λ‹ˆλ‹€.
μ‰½κ²Œ 말해, μ›Ή μ„œλ²„λŠ” "주문을 λ°›κ³  μŒμ‹μ„ λ‚΄μ–΄μ£ΌλŠ” 식당 직원" 같은 μ—­ν• μ΄μ—μš”. μ†λ‹˜(λΈŒλΌμš°μ €)이 "이 νŽ˜μ΄μ§€ μ£Όμ„Έμš”!" ν•˜λ©΄, μ›Ή μ„œλ²„κ°€ "λ„€, μ—¬κΈ° μžˆμŠ΅λ‹ˆλ‹€!" ν•˜κ³  λ‚΄μš©μ„ μ „λ‹¬ν•΄μ£ΌλŠ” κ±°μ£ .

μ›Ή μ„œλ²„μ˜ λ™μž‘ 흐름

sequenceDiagram
    participant μ‚¬μš©μž as πŸ‘€ μ‚¬μš©μž (λΈŒλΌμš°μ €)
    participant DNS as πŸ” DNS μ„œλ²„
    participant μ›Ήμ„œλ²„ as πŸ–₯️ μ›Ή μ„œλ²„
    participant 파일 as πŸ“ 파일 μ‹œμŠ€ν…œ

    μ‚¬μš©μž->>DNS: www.example.com 의 IPκ°€ 뭐야?
    DNS-->>μ‚¬μš©μž: 93.184.216.34 μ•Ό!
    μ‚¬μš©μž->>μ›Ήμ„œλ²„: GET /index.html μš”μ²­ (HTTP)
    μ›Ήμ„œλ²„->>파일: index.html 파일 μ°ΎκΈ°
    파일-->>μ›Ήμ„œλ²„: 파일 λ‚΄μš© 전달
    μ›Ήμ„œλ²„-->>μ‚¬μš©μž: HTTP 200 OK + HTML λ‚΄μš©
Mermaid
볡사
이 흐름을 μ’€ 더 μžμ„Ένžˆ μ„€λͺ…ν•˜λ©΄ μ΄λž˜μš”:
1.
μ‚¬μš©μžκ°€ URL을 μž…λ ₯ν•΄μš” β€” λΈŒλΌμš°μ € μ£Όμ†Œμ°½μ— www.example.com을 μΉ˜λŠ” μˆœκ°„μ΄μ—μš”.
2.
DNSκ°€ IP μ£Όμ†Œλ₯Ό μ•Œλ €μ€˜μš” β€” 도메인 이름을 μ‹€μ œ μ„œλ²„ μ£Όμ†Œ(IP)둜 λ³€ν™˜ν•΄μ£ΌλŠ” κ³Όμ •μ΄μ—μš”. 마치 μ „ν™”λ²ˆν˜ΈλΆ€μ—μ„œ μ΄λ¦„μœΌλ‘œ 번호λ₯Ό μ°ΎλŠ” 것과 κ°™μ•„μš”.
3.
λΈŒλΌμš°μ €κ°€ HTTP μš”μ²­μ„ λ³΄λ‚΄μš” β€” "이 νŽ˜μ΄μ§€ μ’€ μ£Όμ„Έμš”!" ν•˜κ³  μš”μ²­ λ©”μ‹œμ§€λ₯Ό μ„œλ²„μ— λ³΄λ‚΄λŠ” κ±°μ˜ˆμš”.
4.
μ›Ή μ„œλ²„κ°€ νŒŒμΌμ„ μ°Ύμ•„μš” β€” μ„œλ²„ μ»΄ν“¨ν„°μ˜ 파일 μ‹œμŠ€ν…œμ—μ„œ ν•΄λ‹Ή νŒŒμΌμ„ μ°Ύμ•„μš”.
5.
응닡을 λŒλ €μ€˜μš” β€” 찾은 νŒŒμΌμ„ HTTP 응닡에 λ‹΄μ•„ λΈŒλΌμš°μ €μ—κ²Œ λ³΄λ‚΄μ€˜μš”. λΈŒλΌμš°μ €κ°€ 이걸 λ°›μ•„μ„œ 화면에 κ·Έλ €μ£ΌλŠ” κ±°μ˜ˆμš”!

μ›Ή μ„œλ²„μ˜ 두 κ°€μ§€ 의미

μ›Ή μ„œλ²„λΌλŠ” 말은 사싀 두 κ°€μ§€ 의미둜 μ“°μ—¬μš”. ν—·κ°ˆλ¦¬κΈ° μ‰¬μš°λ‹ˆ ν‘œλ‘œ μ •λ¦¬ν•΄λ³Όκ²Œμš”!
ꡬ뢄
ν•˜λ“œμ›¨μ–΄ 관점
μ†Œν”„νŠΈμ›¨μ–΄ 관점
μ •μ˜
μ›Ή μ„œλ²„ μ†Œν”„νŠΈμ›¨μ–΄κ°€ μ„€μΉ˜λœ 물리적 컴퓨터
HTTP μš”μ²­μ„ μ²˜λ¦¬ν•˜λŠ” ν”„λ‘œκ·Έλž¨
μ˜ˆμ‹œ
λ°μ΄ν„°μ„Όν„°μ˜ μ„œλ²„ μž₯λΉ„, AWS EC2 μΈμŠ€ν„΄μŠ€
Nginx, Apache, IIS
μ—­ν• 
μ „κΈ°, λ„€νŠΈμ›Œν¬, μ €μž₯곡간 제곡
μš”μ²­ μˆ˜μ‹  β†’ 처리 β†’ 응닡 λ°˜ν™˜
λΉ„μœ 
식당 건물 자체
μ‹λ‹Ήμ—μ„œ μΌν•˜λŠ” 직원
보톡 κ°œλ°œμžλ“€μ΄ "μ›Ή μ„œλ²„"라고 말할 λ•ŒλŠ” μ†Œν”„νŠΈμ›¨μ–΄ μͺ½μ„ κ°€λ¦¬ν‚€λŠ” κ²½μš°κ°€ λ§Žμ•„μš”. "Nginx μ›Ή μ„œλ²„λ₯Ό μ„€μΉ˜ν–ˆλ‹€"κ³  ν•˜λ©΄, ν”„λ‘œκ·Έλž¨μ„ μ„€μΉ˜ν–ˆλ‹€λŠ” λœ»μ΄μ§€ 컴퓨터λ₯Ό μƒˆλ‘œ μ‚° 건 μ•„λ‹ˆκ±°λ“ μš”!

λŒ€ν‘œμ μΈ μ›Ή μ„œλ²„ μ†Œν”„νŠΈμ›¨μ–΄ 비ꡐ

ν•­λͺ©
Nginx
Apache
IIS
κ°œλ°œμ‚¬
Igor Sysoev (μ˜€ν”ˆμ†ŒμŠ€)
Apache Foundation
Microsoft
μ•„ν‚€ν…μ²˜
이벀트 기반 (비동기)
ν”„λ‘œμ„ΈμŠ€/μŠ€λ ˆλ“œ 기반
μŠ€λ ˆλ“œ 기반
μ„±λŠ₯
높은 λ™μ‹œ 처리
보톡
보톡
λ©”λͺ¨λ¦¬ μ‚¬μš©
적음
많음
보톡
OS 지원
Linux, macOS, Windows
Linux, macOS, Windows
Windows μ „μš©
μ„€μ • 방식
μ„€μ • 파일 (nginx.conf)
.htaccess + μ„€μ • 파일
GUI + μ„€μ • 파일
μ£Ό μš©λ„
λ¦¬λ²„μŠ€ ν”„λ‘μ‹œ, 정적 파일 μ„œλΉ™
λ²”μš© μ›Ή μ„œλ²„
Windows 기반 μ„œλΉ„μŠ€
μ‹œμž₯ 점유율
1μœ„ (μ•½ 34%)
2μœ„ (μ•½ 29%)
3μœ„ μ΄ν•˜
Nginxκ°€ μš”μ¦˜ κ°€μž₯ 인기 μžˆλŠ” μ΄μœ λŠ” 적은 λ©”λͺ¨λ¦¬λ‘œ μ—„μ²­λ‚œ λ™μ‹œ 접속을 μ²˜λ¦¬ν•  수 있기 λ•Œλ¬Έμ΄μ—μš”. Apacheκ°€ μ†λ‹˜ ν•œ λͺ…λ‹Ή 직원 ν•œ λͺ…을 λΆ™μ—¬μ£ΌλŠ” 방식이라면, NginxλŠ” ν•œ λͺ…μ˜ 슈퍼 직원이 μ—¬λŸ¬ μ†λ‹˜μ„ λ™μ‹œμ— μ‘λŒ€ν•˜λŠ” λ°©μ‹μ΄μ—μš”. κ·Έλž˜μ„œ νŠΈλž˜ν”½μ΄ λ§Žμ€ λŒ€κ·œλͺ¨ μ„œλΉ„μŠ€μ—μ„œ Nginxλ₯Ό μ„ ν˜Έν•˜λŠ” κ±°μ˜ˆμš”.

μ›Ή μ„œλ²„μ˜ μ£Όμš” κΈ°λŠ₯

mindmap
  root((μ›Ή μ„œλ²„<br/>μ£Όμš” κΈ°λŠ₯))
    정적 파일 제곡
      HTML
      CSS
      JavaScript
      이미지
    HTTP 처리
      μš”μ²­ νŒŒμ‹±
      응닡 생성
      μƒνƒœ μ½”λ“œ
    λ³΄μ•ˆ
      HTTPS/SSL
      μ ‘κ·Ό μ œμ–΄
      λ°©ν™”λ²½ 연동
    λ¦¬λ²„μŠ€ ν”„λ‘μ‹œ
      λ‘œλ“œ λ°ΈλŸ°μ‹±
      λ°±μ—”λ“œ μ„œλ²„ μ—°κ²°
      캐싱
    λ‘œκΉ…
      μ ‘κ·Ό 둜그
      μ—λŸ¬ 둜그
      λͺ¨λ‹ˆν„°λ§
Mermaid
볡사
κΈ°λŠ₯
μ„€λͺ…
μ˜ˆμ‹œ
정적 파일 제곡
HTML, CSS, JS, 이미지 등을 κ·ΈλŒ€λ‘œ 전달
index.html 파일 전솑
λ¦¬λ²„μŠ€ ν”„λ‘μ‹œ
ν΄λΌμ΄μ–ΈνŠΈ λŒ€μ‹  λ°±μ—”λ“œ μ„œλ²„μ— μš”μ²­ 전달
Nginx β†’ Spring Boot
λ‘œλ“œ λ°ΈλŸ°μ‹±
μ—¬λŸ¬ μ„œλ²„μ— μš”μ²­μ„ λΆ„μ‚°
μ„œλ²„ 3λŒ€μ— νŠΈλž˜ν”½ λ‚˜λˆ„κΈ°
HTTPS 처리
SSL/TLS μ•”ν˜Έν™” 톡신 지원
Let's Encrypt μΈμ¦μ„œ 적용
캐싱
자주 μš”μ²­λ˜λŠ” μ½˜ν…μΈ λ₯Ό μ €μž₯해두고 λΉ λ₯΄κ²Œ 응닡
이미지 캐싱
λ‘œκΉ…
μ ‘κ·Ό 기둝, μ—λŸ¬ 기둝 μ €μž₯
access.log, error.log

HTTP μƒνƒœ μ½”λ“œ 정리

μ›Ή μ„œλ²„κ°€ 응닡할 λ•Œ 항상 μƒνƒœ μ½”λ“œλ₯Ό ν•¨κ»˜ λ³΄λ‚΄μš”. 이게 "κ²°κ³Όκ°€ μ–΄λ• λŠ”μ§€"λ₯Ό 숫자둜 μ•Œλ €μ£ΌλŠ” κ±°μ˜ˆμš”.
μ½”λ“œ λ²”μœ„
의미
λŒ€ν‘œ μ½”λ“œ
μ„€λͺ…
1xx
정보
100 Continue
계속 진행해도 λΌμš”
2xx
성곡
200 OK
μš”μ²­ 성곡!
201 Created
μƒˆλ‘œ μƒμ„±λμ–΄μš”
3xx
λ¦¬λ‹€μ΄λ ‰μ…˜
301 Moved Permanently
영ꡬ 이동
304 Not Modified
λ³€κ²½ μ—†μŒ (μΊμ‹œ μ‚¬μš©)
4xx
ν΄λΌμ΄μ–ΈνŠΈ μ—λŸ¬
400 Bad Request
잘λͺ»λœ μš”μ²­
403 Forbidden
μ ‘κ·Ό κΈˆμ§€
404 Not Found
νŽ˜μ΄μ§€ μ—†μŒ
5xx
μ„œλ²„ μ—λŸ¬
500 Internal Server Error
μ„œλ²„ λ‚΄λΆ€ 였λ₯˜
502 Bad Gateway
κ²Œμ΄νŠΈμ›¨μ΄ 였λ₯˜
503 Service Unavailable
μ„œλΉ„μŠ€ 이용 λΆˆκ°€

핡심 정리

μ›Ή μ„œλ²„ = ν΄λΌμ΄μ–ΈνŠΈμ˜ HTTP μš”μ²­μ„ μ²˜λ¦¬ν•˜κ³  응닡을 λ°˜ν™˜ν•˜λŠ” μ†Œν”„νŠΈμ›¨μ–΄
λŒ€ν‘œ μ†Œν”„νŠΈμ›¨μ–΄
β€’
Nginx(이벀트 기반, κ³ μ„±λŠ₯)
β€’
Apache(ν”„λ‘œμ„ΈμŠ€ 기반, λ²”μš©)
β€’
IIS(Windows μ „μš©)
핡심 κΈ°λŠ₯
β€’
정적 파일 제곡
β€’
λ¦¬λ²„μŠ€ ν”„λ‘μ‹œ
β€’
λ‘œλ“œ λ°ΈλŸ°μ‹±
β€’
HTTPS, 캐싱
β€’
둜κΉ