์›น ์„œ๋ฒ„

์›น ์„œ๋ฒ„๋ž€?

์›น ์„œ๋ฒ„๋Š” ์›น ์„œ๋ฒ„ ์†Œํ”„ํŠธ์›จ์–ด์™€ ์›นํŽ˜์ด์ง€ ์ œ๊ณต์— ํŠนํ™”๋œ ์žฅ๋น„ ๋ชจ๋‘๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” ๋ง์ด๋ฉฐ, ๊ณตํ†ต์ ์œผ๋กœ ๋ฆฌ์†Œ์Šค์— ๋Œ€ํ•œ HTTP ์š”์ฒญ์„ ๋ฐ›์•„์„œ ์ฝ˜ํ…์ธ ๋ฅผ ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ๋Œ๋ ค์ฃผ๋Š” ๊ธฐ๋Šฅ์„ ํ•œ๋‹ค. ์›น ์„œ๋ฒ„๋Š” HTTP๋ฅผ ๋น„๋กฏํ•˜์—ฌ ๊ด€๋ จ๋œ TCP ์ฒ˜๋ฆฌ๋ฅผ ๊ตฌํ˜„ํ•œ ๊ฒƒ์ด๊ธฐ๋„ ํ•˜๋‹ค. ์ด๋ ‡๊ฒŒ

  • HTTP ํ”„๋กœํ† ์ฝœ์˜ ๊ตฌํ˜„
  • ์›น ๋ฆฌ์†Œ์Šค ๊ด€๋ฆฌ
  • ์›น ์„œ๋ฒ„ ๊ด€๋ฆฌ ๊ธฐ๋Šฅ ๋“ฑ์„ ์ œ๊ณตํ•˜๋Š” ์›น ์„œ๋ฒ„๋Š” TCP ์ปค๋„ฅ์…˜ ๊ด€๋ฆฌ์— ๋Œ€ํ•œ ์ฑ…์ž„์„ ์šด์˜์ฒด์ œ์™€ ๋‚˜๋ˆ„์–ด ๊ฐ–๋Š”๋‹ค.

์ด๋Ÿฌํ•œ ์›น ์„œ๋ฒ„์˜ ํ˜•ํƒœ์—๋Š” ์—ฌ๋Ÿฌ๊ฐ€์ง€๊ฐ€ ์žˆ๋Š”๋ฐ, ํฌ๊ฒŒ ๋‚˜๋ˆ„์–ด

  • ๋‹ค๋ชฉ์  ์†Œํ”„ํŠธ์›จ์–ด ์›น ์„œ๋ฒ„
  • ์ž„๋ฒ ๋””๋“œ ์›น ์„œ๋ฒ„ ์˜ ํ˜•ํƒœ๋กœ ๋‚˜๋‰˜๋‹ค. 

๋‹ค๋ชฉ์  ์†Œํ”„ํŠธ์›จ์–ด ์›น ์„œ๋ฒ„

๋„คํŠธ์›Œํฌ์— ์—ฐ๊ฒฐ๋œ ํ‘œ์ค€ ์ปดํ“จํ„ฐ ์‹œ์Šคํ…œ์—์„œ ๋™์ž‘ํ•˜๋Š” ์›น ์„œ๋ฒ„์ด๋‹ค. ํ”ํžˆ Apache, Nginx, Caddy, IIS, LiteSpeed ๋“ฑ ์šฐ๋ฆฌ๊ฐ€ ์•„๋Š” ์›น ์„œ๋ฒ„๋ฅผ ์˜๋ฏธํ•œ๋‹ค. ๋‹จ์ˆœํžˆ ์ •์ ์ธ ์›น ํŽ˜์ด์ง€๋ฅผ ์ œ๊ณตํ•˜๋Š” ๊ฒƒ ์ด์ƒ์œผ๋กœ, ๋™์  ์ฝ˜ํ…์ธ  ์ฒ˜๋ฆฌ, API ์„œ๋ฒ„ ์—ญํ• , ๋ฆฌ๋ฒ„์Šค ํ”„๋ก์‹œ, ๋กœ๋“œ ๋ฐธ๋Ÿฐ์‹ฑ, ๋ณด์•ˆ ๊ธฐ๋Šฅ ๋“ฑ ๋‹ค์–‘ํ•œ ์—ญํ• ์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ์›น ์„œ๋ฒ„๋ฅผ ์˜๋ฏธํ•œ๋‹ค.

์ฐธ๊ณ ๋กœ ํ˜„์žฌ ์›น ์„œ๋ฒ„ 1๋“ฑ์„ ๋‹ฌ๋ฆฌ๊ณ  ์žˆ๋Š” ๊ฒƒ์€ nginx์ด๋‹ค

์ž„๋ฒ ๋””๋“œ ์›น ์„œ๋ฒ„

์ผ๋ฐ˜ ์†Œ๋น„์ž์šฉ ์ œํ’ˆ์— ๋‚ด์žฅ๋  ๋ชฉ์ ์œผ๋กœ ๋งŒ๋“ค์–ด์ง„ ์ž‘์€ ์›น ์„œ๋ฒ„์ด๋‹ค. ์ž„๋ฒ ๋””๋“œ ์›น ์„œ๋ฒ„์˜ ์ž‘๋™ ๋ฐฉ์‹์€ ํ•˜๋“œ์›จ์–ด์— ๋‚ด์žฅ๋œ ์†Œํ”„ํŠธ์›จ์–ด๋กœ ๋™์ž‘ํ•˜๋Š” ์›น ์„œ๋ฒ„์ด๊ธฐ ๋•Œ๋ฌธ์— ๊ฒฝ๋Ÿ‰ํ™”๊ฐ€ ์ค‘์š”ํ•˜๋ฉฐ, ์ตœ์†Œํ•œ์˜ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•œ๋‹ค. ์ž‘๋™ ๋ฐฉ์‹์€ ์œ„ ์‚ฌ์ง„์„ ๋ณด๋ฉด ์‰ฝ๊ฒŒ ์ดํ•ด๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค. ์›น ๋ธŒ๋ผ์šฐ์ €(ํด๋ผ์ด์–ธํŠธ)๊ฐ€ HTTP ์š”์ฒญ์„ ๋ณด๋‚ด๋ฉด, ์ž„๋ฒ ๋””๋“œ ์žฅ์น˜์˜ ์›น ์„œ๋ฒ„๋Š” ํด๋ผ์ด์–ธํŠธ์˜ HTTP ์š”์ฒญ์„ ์ˆ˜์‹ ๋ฐ›๊ณ , ์š”์ฒญ์„ ๋ถ„์„ํ•˜๊ณ  ์ ์ ˆํ•œ ์‘๋‹ต์„ ์ƒ์„ฑ ํ•œ ๋’ค, ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ HTTP ์‘๋‹ต์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค. ์ด ๊ณผ์ •์—์„œ ๋‚ด์žฅ๋œ ํ•˜๋“œ์›จ์–ด์˜ ์ƒํƒœ ์กฐํšŒ๋‚˜ ์„ค์ • ๋ณ€๊ฒฝ, ํŠน์ • ๋ช…๋ น์„ API๋ฅผ ํ†ตํ•ด ๋ณด๋‚ด๊ณ  ์กฐ์ž‘ํ•  ์ˆ˜ ์žˆ๋‹ค.

๋Œ€ํ‘œ์ ์ธ ์ž„๋ฒ ๋””๋“œ ์›น ์„œ๋ฒ„๋กœ GoAhead, CivetWeb, Mongoose, NanoHTTPD, Lighttpd ๋“ฑ์ด ์žˆ๋‹ค.

์›น ์„œ๋ฒ„๊ฐ€ ํ•˜๋Š” ์ผ์— ๋Œ€ํ•œ ๊ณ ์ฐฐ

์›น ์„œ๋ฒ„๋Š” ์œ„์™€ ๊ฐ™์ด HTTP ํ”„๋กœํ† ์ฝœ์˜ ๊ตฌํ˜„, ์›น ๋ฆฌ์†Œ์Šค ๊ด€๋ฆฌ, ์›น ์„œ๋ฒ„ ๊ด€๋ฆฌ ๋“ฑ๋“ฑ์„ ํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ ๋Š” ํ•˜์ง€๋งŒ ์ •์ž‘ ์–ด๋–ป๊ฒŒ ๋™์ž‘ํ•˜๋Š”์ง€ ์ดํ•ดํ•˜์ง€ ๋ชปํ•œ๋‹ค๋ฉด ๊ทธ๋Œ€๋กœ ์•”๊ธฐ๊ณผ๋ชฉ์ด ๋  ํ™•๋ฅ ์ด ๋†’์œผ๋ฏ€๋กœ ์›น ์„œ๋ฒ„๊ฐ€ ์–ด๋А ๊ณผ์ •์—์„œ ์–ด๋–ป๊ฒŒ ๋™์ž‘ํ•˜๋Š”์ง€๋ฅผ ์•Œ์•„์•ผ ํ•œ๋‹ค.

์œ„ ์‚ฌ์ง„์„ ๋ณด๋ฉด ํ๋ฆ„์„ ์ดํ•ดํ•˜๊ธฐ ์‰ฝ๋‹ค ์›น ์„œ๋ฒ„๋Š” HTTP ์š”์ฒญ์„ ๋ณด๋‚ด๊ณ  ๋ฐ›๊ธฐ๊นŒ์ง€

  1. ์ปค๋„ฅ์…˜ ๋งบ๊ธฐ : ํด๋ผ์ด์–ธํŠธ ์ ‘์†์„ ๋ฐ›๊ฑฐ๋‚˜ ๋‹ซ๊ธฐ
  2. ์š”์ฒญ ๋ฐ›๊ธฐ : HTTP ์š”์ฒญ ๋ฉ”์„ธ์ง€๋ฅผ ๋„คํŠธ์›Œํฌ๋กœ๋ถ€ํ„ฐ ์ฝ์–ด๋“ค์ด๊ธฐ
  3. ์š”์ฒญ์„ ์ฒ˜๋ฆฌ : ์š”์ฒญ ๋ฉ”์‹œ์ง€๋ฅผ ํ•ด์„ํ•˜๊ณ  ํ–‰๋™ ์ทจํ•˜๊ธฐ
  4. ๋ฆฌ์†Œ์Šค์— ์ ‘๊ทผํ•˜๊ธฐ : ๋ฉ”์‹œ์ง€์—์„œ ์ง€์ •ํ•œ ๋ฆฌ์†Œ์Šค์— ์ ‘๊ทผ
    • ์—ฌ๊ธฐ์„œ ๋™์ ์œผ๋กœ ์ฒ˜๋ฆฌํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ, ์„œ๋ฒ„์™€ ์—ฐ๋™ํ•˜์—ฌ ๊ฐ’์„ ๋™๊ธฐํ™” ์‹œํ‚ค์ง€๋งŒ, ์ •์ ์ธ ํŒŒ์ผ์€ ๊ทธ๋Œ€๋กœ ๊ฐ€์ ธ๋‹ค ์ค€๋‹ค.
  5. ์‘๋‹ต ๋งŒ๋“ค๊ธฐ : ์˜ฌ๋ฐ”๋ฅธ ํ—ค๋”๋ฅผ ํฌํ•จํ•œ HTTP ์‘๋‹ต ๋ฉ”์‹œ์ง€ ์ƒ์„ฑ
  6. ์‘๋‹ต ๋ณด๋‚ด๊ธฐ : ์‘๋‹ต์„ ํด๋ผ์ด์–ธํŠธ์— ๋Œ๋ ค์ฃผ๊ธฐ
  7. ํŠธ๋žœ์žญ์…˜ ๋กœ๊น… : ๋กœ๊ทธ ํŒŒ์ผ์— ํŠธ๋žœ์žญ์…˜ ๋กœ๊น…ํ•˜๊ธฐ ์˜ ๊ณผ์ •์„ ๊ฑฐ์นœ๋‹ค.

์—ฌ๊ธฐ์„œ ํฌ๊ฒŒ ๋‚˜๋ˆˆ ๊ฐ ๊ณผ์ •์„ ๊นŠ๊ฒŒ ์•Œ์•„๋ณด์ž.

์ปค๋„ฅ์…˜ ๋งบ๊ธฐ

ํด๋ผ์ด์–ธํŠธ๋Š” ์„œ๋ฒ„์— ๋Œ€ํ•ด ์ง€์†์ ์ธ ์ปค๋„ฅ์…˜์„ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค๋ฉด ์š”์ฒญ์„ ๋ณด๋‚ผ ๋•Œ ํ•ด๋‹น ์ปค๋„ฅ์…˜์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ์—†์œผ๋ฉด ์ƒˆ ์ปค๋„ฅ์…˜์„ ์—ด์–ด์•ผ ํ•œ๋‹ค. ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์›น ์„œ๋ฒ„์— TCP ์ปค๋„ฅ์…˜์„ ์š”์ฒญํ•˜๋ฉด, ์›น ์„œ๋ฒ„๋Š” ์ปค๋„ฅ์…˜์„ ๋งบ๊ณ  TCP ์ปค๋„ฅ์…˜์—์„œ IP ์ฃผ์†Œ๋ฅผ ์ถ”์ถœํ•˜์—ฌ ์ปค๋„ฅ์…˜ ๋งž์€ํŽธ์— ์–ด๋–ค ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์žˆ๋Š”์ง€ ํ™•์ธํ•œ๋‹ค. ์ปค๋„ฅ์…˜ ์ดํ›„์—๋Š” ์„œ๋ฒ„๊ฐ€ ์ปค๋„ฅ์…˜ ๋ชฉ๋ก์— ์ถ”๊ฐ€ํ•˜๊ณ  ๊ณ„์†ํ•ด์„œ ์ง€์ผœ๋ณผ ์ˆ˜ ์žˆ๋„๋ก ํ•œ๋‹ค. ์—ญ๋ฐฉํ–ฅ DNS๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ์—๋Š” ํด๋ผ์ด์–ธํŠธ์˜ IP ์ฃผ์†Œ๋ฅผ ํ˜ธ์ŠคํŠธ ๋ช…์œผ๋กœ ๋ณ€ํ™˜ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ, ํŠธ๋žœ์žญ์…˜์„ ๋А๋ ค์ง€๊ฒŒ ํ•  ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ์œผ๋ฏ€๋กœ ๊บผ๋‘๊ฑฐ๋‚˜ ํŠน์ • ์ฝ˜ํ…์ธ ์— ๋Œ€ํ•ด์„œ๋งŒ ์ผœ๋†“๋Š”๋‹ค.

์ถ”๊ฐ€์ ์œผ๋กœ ์–ด๋–ค ์›น ์„œ๋ฒ„๋Š” ident, ์ฆ‰ ํด๋ผ์ด์–ธํŠธ ์‚ฌ์šฉ์ž๋ฅผ ์‹๋ณ„ํ•˜๋Š” IETF ident ํ”„๋กœํ† ์ฝœ์„ ์ง€์›ํ•œ๋‹ค.

IETF(Internet Engineering Task Force) : ์ธํ„ฐ๋„ท ๊ธฐ์ˆ ์˜ ํ‘œ์ค€(protocols, architecture, etc.)์„ ๊ฐœ๋ฐœํ•˜๊ณ  ์œ ์ง€ยท๋ณด์ˆ˜ํ•˜๋Š” ๊ตญ์ œ์ ์ธ ์กฐ์ง

์–ด๋–ค ์‚ฌ์šฉ์ž ์ด๋ฆ„์ด HTTP ์ปค๋„ฅ์…˜์„ ์ดˆ๊ธฐํ™”ํ–ˆ๋Š”์ง€์™€ ๊ฐ™์€ ๋ถ€๊ฐ€์ •๋ณด๋„ ์ฐพ์•„๋‚ผ ์ˆ˜ ์žˆ๋„๋ก ํ•œ๋‹ค. ์ด ๋•Œ, ๋‹จ์ˆœํžˆ HTTP ์ปค๋„ฅ์…˜์„ ๊ทธ๋Œ€๋กœ ์ด์šฉํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋‹ค. ์„œ๋ฒ„๋Š” ํด๋ผ์ด์–ธํŠธ์˜ ident ์„œ๋ฒ„ ํฌํŠธ์ธ 113๋ฒˆ์„ ํ–ฅํ•ด ์š”์ฒญ์„ ๋ณด๋‚ด๊ณ ,ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์š”์ฒญ์— ๋Œ€ํ•œ ์‘๋‹ต์„ ๋ฐ˜ํ™˜ํ•˜๋ฉด ์„œ๋ฒ„๊ฐ€ ๋ฐ›์€ ์ •๋ณด๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์‚ฌ์šฉ์ž ID๋ฅผ ํ™•์ธ ํ›„ ์ธ์ฆํ•˜๋Š” ๋ฐฉ์‹์ด๋‹ค.

ํ•˜์ง€๋งŒ ์ด ๋˜ํ•œ ์˜ค๋ฒ„ํ—ค๋“œ๊ฐ€ ์กด์žฌํ•˜๊ณ , ํ”„๋ผ์ด๋ฒ„์‹œ ์นจํ•ด์˜ ๋ฌธ์ œ ๋“ฑ ํ”„๋กœํ† ์ฝœ ์ž์ฒด๊ฐ€ ์•ˆ์ „ํ•˜์ง€ ์•Š๊ณ  ์กฐ์ž‘๋˜๊ธฐ ์‰ฌ์šด ๋งŒํผ ์‚ฌ์šฉ์„ ๋งŽ์ด ํ•˜์ง€ ์•Š๋Š”๋‹ค. ๋˜ ์š”์ฆ˜์€ ๋„คํŠธ์›Œํฌ์—์„œ ๋ฐฉํ™”๋ฒฝ์ด 113 ํฌํŠธ๋ฅผ ์ฐจ๋‹จํ•˜๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋ฒ”์šฉ์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๊ธฐ๋„ ์‰ฝ์ง€ ์•Š๋‹ค.

์š”์ฒญ ๋ฉ”์‹œ์ง€ ์ˆ˜์‹ ํ•˜๊ธฐ

์ปค๋„ฅ์…˜์— ๋ฐ์ดํ„ฐ๊ฐ€ ๋„์ฐฉํ•˜๋ฉด ์›น ์„œ๋ฒ„๋Š” ๋„คํŠธ์›Œํฌ ์ปค๋„ฅ์…˜์—์„œ ๊ทธ ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ์–ด๋“ค์ด๊ณ  ํŒŒ์‹ฑํ•˜์—ฌ ์š”์ฒญ ๋ฉ”์‹œ์ง€๋ฅผ ๊ตฌ์„ฑํ•œ๋‹ค. ์ด๋Ÿฌํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ๋„คํŠธ์›Œํฌ๋กœ๋ถ€ํ„ฐ ์ฝ์–ด๋“ค์ด๊ณ , ํŒŒ์‹ฑํ•˜๋ฉด์„œ URI, ๋ฒ„์ „ ๋ฒˆํ˜ธ ๋“ฑ์„ ์ฐพ๋Š”๋‹ค. ๊ฐ ๊ฐ’์€ ์ŠคํŽ˜์ด์Šค๋กœ ๋ถ„๋ฆฌ๋˜์–ด ์žˆ๊ณ  ์š”์ฒญ ์ค„์€ ์บ๋ฆฌ์ง€ ๋ฆฌํ„ด(CRLF) ๋ฌธ์ž์—ด๋กœ ๋๋‚œ๋‹ค. ์ด๋ ‡๊ฒŒ ๋ฉ”์‹œ์ง€์˜ ํ—ค๋”์™€ ๋ณธ๋ฌธ์ด ์žˆ์œผ๋ฉด ์ฝ์–ด๋“ค์ด๋Š” ๊ณผ์ •์„ ๊ฑฐ์นœ๋‹ค.

์ด ๊ณผ์ •์—์„œ ์›น ์„œ๋ฒ„๋Š” ์ž…๋ ฅ ๋ฐ์ดํ„ฐ๋ฅผ ๋„คํŠธ์›Œํฌ๋กœ๋ถ€ํ„ฐ ๋ถˆ๊ทœ์น™์ ์œผ๋กœ ๋ฐ›๊ณ  ๋„คํŠธ์›Œํฌ ์ปค๋„ฅ์…˜์€ ์–ธ์ œ๋ผ๋„ ๋ฌดํšจํ™”๋  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์›น ์„œ๋ฒ„๋Š” ์ด๋ฅผ ํŒŒ์‹ฑํ•˜๊ณ  ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š” ์ •๋„๊นŒ์ง€ ๋„คํŠธ์›Œํฌ๋กœ๋ถ€ํ„ฐ ์ฝ์–ด์•ผ ํ•˜๋Š” ๋งŒํผ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ˜„์žฌ๊นŒ์ง€ ๋ฐ›์•„๋“ค์ธ ๋ฉ”์‹œ์ง€๋ฅผ ์ €์žฅํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•œ๋‹ค.

์ด๋Ÿฐ ์‹์œผ๋กœ ํ—ค๋” ๋ถ€๋ถ„์—์„œ ๋ฃฉ์—… ํ…Œ์ด๋ธ”์„ ๋‘๊ณ  ํ•ด๋‹นํ•˜๋Š” ํ•„๋“œ์— ๋„ฃ์Œ์œผ๋กœ์จ ์š”์ฒญ ๋ฉ”์‹œ์ง€๋ฅผ ์‰ฝ๊ฒŒ ๋‹ค๋ฃจ๋Š” ๊ฒฝ์šฐ๋„ ์žˆ๋‹ค.

์•„๋ฌดํŠผ ์›น ์„œ๋ฒ„๋Š” ์ด๋ ‡๊ฒŒ ์š”์ฒญ์ด ์˜ค๋ฉด ๋ฉ”์‹œ์ง€๋ฅผ ๊ณ„์† ๋ฐ›๊ณ  ์ด๋ฅผ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ์ปค๋„ฅ์…˜์„ ๋งค๋ฌด ๋งŽ์ด ๋งŒ๋“ค ์ˆ˜ ์žˆ๋„๋ก ์ง€์›ํ•ด์•ผ ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค์ด ๋™์‹œ์— ์š”์ฒญํ•˜๋”๋ผ๋„ ์ด๋ฅผ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค. ๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— ์›น ์„œ๋ฒ„๋“ค์€ ํ•ญ์ƒ ์ƒˆ ์š”์ฒญ์ด ์–ธ์ œ๋ผ๋„ ์˜ฌ ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ์–ด ๊ณ„์† ์ฃผ์‹œํ•˜๊ณ  ์žˆ๋Š” ์ƒํƒœ์ด๋‹ค. ์ด๋ ‡๊ฒŒ ์ƒˆ ์š”์ฒญ์„ ์ฃผ์‹œํ•˜๊ณ  ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐฉ์‹์€ ์›น ์„œ๋ฒ„ ์•„ํ‚คํ…์ฒ˜์— ๋”ฐ๋ผ ์กฐ๊ธˆ์”ฉ ๋‹ค๋ฅด๋‹ค.

  • ๋‹จ์ผ ์Šค๋ ˆ๋“œ ์›น ์„œ๋ฒ„
    • ํ•œ ๋ฒˆ์— ํ•˜๋‚˜์”ฉ ์š”์ฒญ์„ ์ฒ˜๋ฆฌ
    • ํ•˜๋‚˜์˜ ์š”์ฒญ ์ฒ˜๋ฆฌ๋™์•ˆ ๋‹ค๋ฅธ ์ปค๋„ฅ์…˜์ด ๋ฌด์‹œ๋˜์–ด ์„ฑ๋Šฅ ์•ˆ์ข‹์Œ
  • ๋ฉ€ํ‹ฐํ”„๋กœ์„ธ์Šค์™€ ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋“œ ์›น ์„œ๋ฒ„
    • ์—ฌ๋Ÿฌ ์š”์ฒญ์„ ๋™์‹œ์— ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด ์—ฌ๋Ÿฌ ๊ฐœ์˜ ํ”„๋กœ์„ธ์Šค ํ˜น์€ ๊ณ ํšจ์œจ ์Šค๋ ˆ๋“œ๋ฅผ ํ• ๋‹น
  • ๋‹ค์ค‘ I/O ์„œ๋ฒ„
    • ๋ชจ๋“  ์ปค๋„ฅ์…˜์€ ๋™์‹œ์— ๊ทธ ํ™œ๋™์„ ๊ฐ์‹œ
    • ์ปค๋„ฅ์…˜์˜ ์ƒํƒœ๊ฐ€ ๋ฐ”๋€Œ๋ฉด, ๊ทธ ์ปค๋„ฅ์…˜์— ๋Œ€ํ•ด ์ž‘์€ ์–‘์˜ ์ฒ˜๋ฆฌ๊ฐ€ ์ˆ˜ํ–‰
    • ์ฒ˜๋ฆฌ๊ฐ€ ์™„๋ฃŒ๋˜๋ฉด, ์ปค๋„ฅ์…˜์€ ๋‹ค์Œ๋ฒˆ ์ƒํƒœ ๋ณ€๊ฒฝ์„ ์œ„ํ•ด ์—ด๋ฆฐ ์ปค๋„ฅ์…˜ ๋ชฉ๋ก์œผ๋กœ ๋Œ์•„๊ฐ
  • ๋‹ค์ค‘ ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋“œ ์›น ์„œ๋ฒ„
    • ์ปดํ“จํ„ฐ ํ”Œ๋žซํผ์— ์˜ฌ๋ผ์™€ ์žˆ๋Š” CPU ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์ด์ ์„ ์‚ด๋ฆฌ๊ธฐ ์œ„ํ•ด ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋”ฉ๊ณผย ๋‹ค์ค‘ํ™”(Multiplexing)๋ฅผ ๊ฒฐํ•ฉ
    • ์—ด๋ ค ์žˆ๋Š” ์ปค๋„ฅ์…˜์„ ๊ฐ์‹œํ•˜๊ณ  ๊ฐ ์ปค๋„ฅ์…˜์— ๋Œ€ํ•ด ์กฐ๊ธˆ์”ฉ ์ž‘์—…

์š”์ฒญ ์ฒ˜๋ฆฌ

์›น ์„œ๋ฒ„๊ฐ€ ์š”์ฒญ์„ ๋ฐ›์œผ๋ฉด ๋ฉ”์„œ๋“œ, ๋ฆฌ์†Œ์Šค, ํ—ค๋”, ๋ณธ๋ฌธ ๋“ฑ์˜ ์ •๋ณด๋ฅผ ์–ป์–ด๋‚ด์–ด ์ฒ˜๋ฆฌํ•œ๋‹ค. ๋ณธ๋ฌธ์€ ์žˆ์„ ์ˆ˜๋„ ์žˆ๊ณ  ์—†์„ ์ˆ˜๋„ ์žˆ๋‹ค. ๋˜๋„๋ก ๋ณธ๋ฌธ์ด ์—†์–ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ๋„ ์žˆ๋‹ค.

HTTP/1.1์˜ ๋ช…์„ธ์— ๋”ฐ๋ฅด๋ฉด GET ๋ฉ”์„œ๋“œ๋Š” Request Body๋ฅผ ํฌํ•จํ•ด์„œ๋Š” ํ˜ธ์ถœํ•˜๋ฉด ์•ˆ ๋œ๋‹ค. ์ด๋Š” GET ๋ฉ”์„œ๋“œ๊ฐ€ ์„ค๊ณ„ ์˜๋„์— ๋”ฐ๋ผ ๋‹จ์ˆœํ•œ ๋ฐ์ดํ„ฐ ์กฐํšŒ๋ฅผ ๋ชฉ์ ์œผ๋กœ ํ•˜๊ณ  ์žˆ์œผ๋ฉฐ, ์ด์— ๋”ฐ๋ผ Request Body๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋„๋ก ๊ทœ์ •๋˜์–ด ์žˆ๋‹ค.

๋ฆฌ์†Œ์Šค ๋งคํ•‘๊ณผ ์ ‘๊ทผ

์›น ์„œ๋ฒ„๊ฐ€ ํด๋ผ์ด์–ธํŠธ์— ์ฝ˜ํ…์ธ ๋ฅผ ์ „๋‹ฌํ•˜๋ ค๋ฉด ์š”์ฒญ ๋ฉ”์‹œ์ง€์˜ URI์— ๋Œ€์‘ํ•˜๋Š” ์•Œ๋งž์€ ์ฝ˜ํ…์ธ ๋‚˜ ์ฝ˜ํ…์ธ  ์ƒ์„ฑ๊ธฐ๋ฅผ ์›น ์„œ๋ฒ„์—์„œ ์ฐพ์•„์„œ ๊ทธ ์ฝ˜ํ…์ธ ์˜ ์›์ฒœ์„ ์‹๋ณ„ํ•ด์•ผ ํ•œ๋‹ค.

์ด ์‹๋ณ„ ๊ณผ์ •์—์„œ ์—ฌ๋Ÿฌ ๋ฐฉ์‹์˜ ๋ฆฌ์†Œ์Šค ๋งคํ•‘์ด ์žˆ์ง€๋งŒ ๊ฐ€์žฅ ๋‹จ์ˆœํ•œ ํ˜•ํƒœ๋Š” URI๋ฅผ ํŒŒ์ผ ์‹œ์Šคํ…œ์˜ ํŒŒ์ผ ์ด๋ฆ„์ฒ˜๋Ÿผ ๋‹ค๋ฃจ๋Š” ๋ฐฉ์‹์ด๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ ์›น ์„œ๋ฒ„ ํŒŒ์ผ ์‹œ์Šคํ…œ์˜ ํŠน๋ณ„ํ•œ ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ์˜ˆ์•ฝํ•ด๋‘๋Š”๋ฐ, document root(docroot)๋ผ๊ณ  ํ•œ๋‹ค.

์œ„๋Š” ์•„ํŒŒ์น˜์˜ ์„ค์ •์ธ๋ฐ, ์œ„์™€ ๊ฐ™์ด documentRoot๊ฐ€ ์„ค์ •๋˜์–ด ์žˆ์Œ์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค. ํ•ด๋‹น ๊ฒฝ๋กœ๋ถ€ํ„ฐ ๋’ค์— URI๋ฅผ ๋ถ™์—ฌ ๊ฒฝ๋กœ๋ฅผ ์ง€์ •ํ•˜๊ณ  ํ•ด๋‹น ๊ฒฝ๋กœ์— ์žˆ๋Š” ๋ฆฌ์†Œ์Šค๋ฅผ ๊ฐ€์ ธ์™€์„œ ๋ณด๋‚ด์ค€๋‹ค.

๋งŒ์•ฝ ๊ฐ€์ƒ ํ˜ธ์ŠคํŒ… ์›น ์„œ๋ฒ„๋ผ๋ฉด ๊ฐ ํ˜ธ์ŠคํŠธ๋งˆ๋‹ค ๋ถ„๋ฆฌ๋œ ๋ฌธ์„œ ๋ฃจํŠธ๋ฅผ ์คŒ์œผ๋กœ์จ ํ•œ ์›น์„œ๋ฒ„์—์„œ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์›น ์‚ฌ์ดํŠธ๋ฅผ ํ˜ธ์ŠคํŒ…ํ•˜๋Š” ๋ฐฉ๋ฒ•๋„ ์žˆ๋‹ค.

์ด๋Ÿฌํ•œ docRoot๋Š” ์‚ฌ์šฉ์ž๋“ค์ด ํ•œ ๋Œ€์˜ ์›น ์„œ๋ฒ„์—์„œ ๊ฐ์ž์˜ ๊ฐœ์ธ ์›น ์‚ฌ์ดํŠธ๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋„๋ก ํ•ด์ค€๋‹ค. URI์— ์‚ฌ์šฉ์ž์˜ ๊ฐœ์ธ ๋ฌธ์„œ ๋ฃจํŠธ๋ฅผ ๊ฐ€๋ฆฌํ‚ค๊ฒŒ ๋˜๋ฉด ๊ฐ ์‚ฌ์šฉ์ž๋ณ„๋กœ ๋‹ค๋ฅธ root๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

server {
    listen 80;
    server_name user1.example.com;
    root /home/user1/public_html;
}
 
server {
    listen 80;
    server_name user2.example.com;
    root /home/user2/public_html;
}
 

์œ„๋Š” nginx์˜ ์„ค์ •์ธ๋ฐ, ์ด์ฒ˜๋Ÿผ ์‚ฌ์šฉ์ž ๋ณ„๋กœ ๋ณ„๋„์˜ docRoot๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์˜๋ฏธ์ด๋‹ค.

์•„๋ฌดํŠผ ์ด๋ ‡๊ฒŒ ์ด๋Ÿฐ ๊ฒฝ๋กœ์˜ ํ˜•์‹์œผ๋กœ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ, ๋งŒ์•ฝ ํ•ด๋‹น ๊ฒฝ๋กœ๊ฐ€ ํŒŒ์ผ์ด ์•„๋‹ˆ๋ผ ๋””๋ ‰ํ† ๋ฆฌ๋ผ๋ฉด ์–ด๋–ป๊ฒŒ ๋ ๊นŒ? ์ด์— ๋Œ€ํ•ด์„œ๋Š” ์›น ์„œ๋ฒ„๊ฐ€ ๋‚ผ ํ–‰๋™์— ๋Œ€ํ•ด ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.

  • ์—๋Ÿฌ ๋ฐ˜ํ™˜
  • ์ƒ‰์ธ ํŒŒ์ผ ๋ฐ˜ํ™˜
  • ๋””๋ ‰ํ„ฐ๋ฆฌ์˜ ๋‚ด์šฉ์„ ๋‹ด์€ HTML ํŽ˜์ด์ง€ ๋ฐ˜ํ™˜

๋Œ€๋ถ€๋ถ„์˜ ์›น ์„œ๋ฒ„๋Š” URL์— ๋Œ€์‘๋˜๋Š” ๋””๋ ‰ํ„ฐ๋ฆฌ ์•ˆ์—์„œ Index.html ์˜ ํŒŒ์ผ์„ ์ฐพ๊ธฐ ๋•Œ๋ฌธ์— ํ•ด๋‹น ํŒŒ์ผ์„ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค๋ฉด ํ•ด๋‹น ํŒŒ์ผ์˜ ์ฝ˜ํ…์ธ ๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•ด๋‹น ๊ฒฝ๋กœ์— ์ ‘๊ทผํ–ˆ์„ ๋•Œ ๊ธฐ๋ณธ์ ์œผ๋กœ ์ฐพ๋Š” ํŒŒ์ผ์„ DirectoryIndex๋ผ๊ณ  ํ•˜๋ฉฐ, ์ด๋ฅผ ๋”ฐ๋กœ ์šฐ์„ ์ˆœ์œ„ ๋ณ„๋กœ ์„ค์ •ํ•ด๋†“์•„ ๋‚˜์—ด๋œ ํŒŒ์ผ ์ค‘ ํ•˜๋‚˜๋ฅผ ๋ฐ˜ํ™˜ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•  ์ˆ˜๋„ ์žˆ๋‹ค. ๋งŒ์•ฝ ์ด๋Ÿฐ ์ƒ‰์ธ ํŒŒ์ผ์ด(index.html)์ด ์—†๊ฑฐ๋‚˜ ๋””๋ ‰ํ„ฐ๋ฆฌ ์ƒ‰์ธ ๊ธฐ๋Šฅ๋„ ์—†๋‹ค๋ฉด ํŒŒ์ผ๋“ค์„ ๋ณด์—ฌ์ฃผ๋Š” HTML ํŒŒ์ผ์„ ๋ฐ˜ํ™˜ํ•˜๋Š” ๊ฒฝ์šฐ๋„ ์žˆ๋Š”๋ฐ, ์ด ๊ฒฝ์šฐ ํ”„๋ผ์ด๋น—ํ•ด์•ผ ๋  ํŒŒ์ผ์กฐ์ฐจ ๋‹ค ๋ณด์ด๊ฒŒ ๋˜๋ฏ€๋กœ ์ฃผ์˜ํ•ด์•ผ ํ•œ๋‹ค.

์œ„์™€ ๊ฐ™์€ ๊ฒฝ์šฐ๋Š” ์ •์ ์ธ ์ฝ˜ํ…์ธ ์— ๋Œ€ํ•œ ๋ฆฌ์†Œ์Šค ๋งคํ•‘ ๋ฐฉ์‹์ด๋‹ค. ํ•˜์ง€๋งŒ ์›น ์„œ๋ฒ„๋Š” URI๋ฅผ ๋™์  ๋ฆฌ์†Œ์Šค์— ๋งคํ•‘ํ•  ์ˆ˜๋„ ์žˆ๋‹ค. ์š”์ฒญ์— ๋งž๊ฒŒ ์ฝ˜ํ…์ธ ๋ฅผ ์ƒ์„ฑํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์— URI๋ฅผ ๋งคํ•‘ํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

๊ทธ๋ƒฅ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„œ๋ฒ„์™€ ์›น ์„œ๋ฒ„๋ฅผ ์—ฐ๊ฒฐํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋ฉด ํŽธํ•˜๋‹ค.

์ด๋Ÿฐ ๊ตฌ์กฐ์ฒ˜๋Ÿผ ์›น ์„œ๋ฒ„ ์ž์ฒด์—์„œ๋Š” ์ •์ ์ธ ์ฝ˜ํ…์ธ ๋งŒ ์ œ๊ณตํ•˜๋Š”๋ฐ ๋™์ ์ธ ์ฝ˜ํ…์ธ ๋Š” ์•ฑ ์„œ๋ฒ„์™€ ์—ฐ๊ฒฐ๋˜์–ด ์•ฑ ์„œ๋ฒ„์—์„œ ์ฒ˜๋ฆฌํ•œ ๋’ค ๋‹ค์‹œ ์œ ์ €์—๊ฒŒ ๋Œ์•„๊ฐ€๋Š” ๊ตฌ์กฐ์ด๋‹ค. ์—ฌ๊ธฐ์„œ ๋™์ ์ธ ์ฝ˜ํ…์ธ ๋ž€ DB ์กฐํšŒ๋‚˜ ๋‹ค์–‘ํ•œ ๋กœ์ง ์ฒ˜๋ฆฌ๋ฅผ ์š”๊ตฌํ•˜๋Š”ย ์ฝ˜ํ…์ธ ๋ฅผ ์˜๋ฏธํ•œ๋‹ค

์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„œ๋ฒ„๋Š” ๋™์  ์ฝ˜ํ…์ธ  ์ƒ์„ฑ ํ”„๋กœ๊ทธ๋žจ์˜ ์œ„์น˜, ์‹คํ–‰ ๋ฐฉ๋ฒ•์„ ์•Œ๋ ค์ค„ ์ˆ˜ ์žˆ์–ด์•ผ ํ•œ๋‹ค. ์›น ์„œ๋ฒ„๋Š” ๋Œ€๋ถ€๋ถ„ URI์˜ ๊ฒฝ๋กœ๋ช…์ด ์‹คํ–‰ ๊ฐ€๋Šฅํ•œ ํ”„๋กœ๊ทธ๋žจ์ด ์œ„์น˜ํ•œ ๋””๋ ‰ํ„ฐ๋ฆฌ๋กœ ๋งคํ•‘๋˜๋Š” ๊ธฐ๋Šฅ์„ ๊ฐ€์ง€๊ณ  ์žˆ์œผ๋ฏ€๋กœ ์„œ๋ฒ„๊ฐ€ ๊ฒฝ๋กœ๋ช…์„ ํฌํ•จํ•œ URI๋กœ ์š”์ฒญ์„ ๋ฐ›์œผ๋ฉด ํ•ด๋‹น ๊ฒฝ๋กœ์— ๋Œ€์‘ํ•˜๋Š” ๋””๋ ‰ํ„ฐ๋ฆฌ์—์„œ ํ”„๋กœ๊ทธ๋žจ์„ ์ฐพ์•„ ์‹คํ–‰ํ•˜๋ ค ํ•œ๋‹ค. ํ•ด๋‹น ํ”„๋กœ๊ทธ๋žจ์€ cgi์˜ ํ™•์žฅ์ž๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์œผ๋ฉฐ ์ฐพ๊ณ  ์žˆ๋Š” ๊ฒฝ๋กœ์— ์žˆ๋Š” cgi ํ™•์žฅ์ž์˜ ๋ชจ๋“  ์›น ๋ฆฌ์†Œ์Šค์— ๋Œ€ํ•ด์„œ ์‹คํ–‰์‹œํ‚ด์œผ๋กœ์จ ์„œ๋ฒ„์‚ฌ์ด๋“œ์—์„œ ๋™์  ์ฝ˜ํ…์ธ ๋ฅผ ๋‹ค๋ฃฌ๋‹ค. ํ•˜์ง€๋งŒ ์ด๊ฑด ์˜›๋‚  ๋ฐฉ์‹์ด๊ณ , ์š”์ฆ˜์—๋Š” ๋‹ค๋ฅธ ์„œ๋ฒ„ ํ•˜๋‚˜๋ฅผ ๋” ๋‘๋Š” ๋ฐฉ์‹์„ ํƒํ•œ๋‹ค.

๊ทธ ๊ณผ์ •์ด ๋ฐ”๋กœ ์œ„ ์‚ฌ์ง„๊ณผ ๊ฐ™๋‹ค. ์ด ๊ณผ์ •์—์„œ๋Š” ์„œ๋ธ”๋ฆฟ๊ณผ ๊ฐ™์€ ์„œ๋ฒ„์‚ฌ์ด๋“œ ๋™์  ์ฝ˜ํ…์ธ ์ง€์› ๊ธฐ๋Šฅ์˜ ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰ํ•˜๋Š” Web Container๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์‹คํ–‰ํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ์—ฌ๊ธฐ์—์„œ๋„ Web server๋Š” Web server์™€ Web Container๋ฅผ ํ•ฉ์นœ ์„œ๋ฒ„์˜ ๊ตฌ์กฐ๋Š” Web Server๋ผ๊ณ ๋งŒ ํ•˜๊ธฐ ๋ณด๋‹ค๋Š” WAS(Web Application Server)๋ผ๊ณ  ํ•œ๋‹ค.

๊ทธ๋ ‡๋‹ค๋ฉด ์›น ์„œ๋ฒ„ ์ž์ฒด๋งŒ์ด http ์š”์ฒญ์„ ํ†ตํ•ด ๋™์ ์ธ ์ฝ˜ํ…์ธ ๋ฅผ ์ƒ์„ฑํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” client <-> Web server <-> WAS(Web Server + Web Continaer) <-> Data์˜ ๊ตฌ์กฐ๋ฅผ ๊ฐ€์ง€๋Š” ๊ฒƒ์ธ๋ฐ, WAS์—๋„ Web server๊ฐ€ ๋ถ™์–ด์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๊ตณ์ด ๋‘ ๊ฐœ๋ฅผ ๋”ฐ๋กœ ๋†“์ง€ ์•Š์•„๋„ ๋˜๋Š” ๊ฑฐ ์•„๋‹Œ๊ฐ€? ๋ผ๊ณ  ์ƒ๊ฐํ•  ์ˆ˜ ์žˆ๋‹ค. ํ•˜์ง€๋งŒ Web server์™€ WAS๋ฅผ ๊ตฌ๋ถ„ํ•˜๋Š” ์ด์œ ๊ฐ€ ๋”ฐ๋กœ ์žˆ๋‹ค.

  1. ๊ธฐ๋Šฅ์„ ๋ถ„๋ฆฌํ•˜์—ฌ ์„œ๋ฒ„ ๋ถ€ํ•˜ ๋ฐฉ์ง€
    • WAS๋Š” DB ์กฐํšŒ๋‚˜ ๋‹ค์–‘ํ•œ ๋กœ์ง์„ ์ฒ˜๋ฆฌํ•˜๋А๋ผ ๋ฐ”์˜๊ธฐ ๋•Œ๋ฌธ์— ๋‹จ์ˆœํ•œ ์ •์  ์ปจํ…์ธ ๋Š” Web Server์—์„œ ๋‹จ์—์„œ WAS๊นŒ์ง€ ๋„˜์–ด๊ฐ€์ง€ ์•Š๊ณ  ๋น ๋ฅด๊ฒŒ ํด๋ผ์ด์–ธํŠธ์— ์ œ๊ณตํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค.
    • WAS๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ๋™์  ์ปจํ…์ธ ๋ฅผ ์ œ๊ณตํ•˜๊ธฐ ์œ„ํ•ด ์กด์žฌํ•˜๋Š” ์„œ๋ฒ„์ด๋‹ค.
    • ๋งŒ์•ฝ ์ •์  ์ปจํ…์ธ  ์š”์ฒญ๊นŒ์ง€ WAS๊ฐ€ ์ฒ˜๋ฆฌํ•œ๋‹ค๋ฉด ์ •์  ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ๋กœ ์ธํ•ด ๋ถ€ํ•˜๊ฐ€ ์ปค์ง€๊ฒŒ ๋˜๊ณ , ๋™์  ์ปจํ…์ธ ์˜ ์ฒ˜๋ฆฌ๊ฐ€ ์ง€์—ฐ๋จ์— ๋”ฐ๋ผ ์ˆ˜ํ–‰ ์†๋„๊ฐ€ ๋А๋ ค์ง„๋‹ค.
  2. ๋ฌผ๋ฆฌ์ ์œผ๋กœ ๋ถ„๋ฆฌํ•˜์—ฌ ๋ณด์•ˆ ๊ฐ•ํ™”
    • SSL์— ๋Œ€ํ•œ ์•”๋ณตํ˜ธํ™” ์ฒ˜๋ฆฌ์— Web Server๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.
    • ์ถ”๊ฐ€์ ์œผ๋กœ ์›น ์„œ๋ฒ„๋Š” ๊ฐ๊ฐ์˜ ๋ฆฌ์†Œ์Šค์— ์ ‘๊ทผ ์ œ์–ด๋ฅผ ํ• ๋‹นํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ์„œ๋ฒ„์— ์•…์˜์ ์ธ ์‚ฌ์šฉ์ž๊ฐ€ ๋“ค์–ด๊ฐ€๊ธฐ ์ „ ์•ž๋‹จ ์›น ์„œ๋ฒ„์—์„œ ํŠน์ • ๋ฆฌ์†Œ์Šค์— ๋Œ€ํ•œ ์ ‘๊ทผ์„ ์ œ์–ดํ•  ์ˆ˜๋„ ์žˆ๋‹ค.
  3. ์—ฌ๋Ÿฌ ๋Œ€์˜ WAS๋ฅผ ์—ฐ๊ฒฐ ๊ฐ€๋Šฅ
    • Load Balancing์„ ์œ„ํ•ด์„œ Web Server๋ฅผ ์‚ฌ์šฉํ•˜๊ฒŒ ๋˜๋ฉด ๋ณด๋‹ค ๋ถ€ํ•˜๋ฅผ ํšจ์œจ์ ์œผ๋กœ ๋ถ„์‚ฐํ•  ์ˆ˜ ์žˆ๋Š” ํ™˜๊ฒฝ์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค.
    • fail over(์žฅ์•  ๊ทน๋ณต), fail back ์ฒ˜๋ฆฌ์— ์œ ๋ฆฌ
    • ํŠนํžˆ ๋Œ€์šฉ๋Ÿ‰ ์›น ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๊ฒฝ์šฐ(์—ฌ๋Ÿฌ ๊ฐœ์˜ ์„œ๋ฒ„ ์‚ฌ์šฉ) Web Server์™€ WAS๋ฅผ ๋ถ„๋ฆฌํ•˜์—ฌ ๋ฌด์ค‘๋‹จ ์šด์˜์„ ์œ„ํ•œ ์žฅ์•  ๊ทน๋ณต์— ์‰ฝ๊ฒŒ ๋Œ€์‘ํ•  ์ˆ˜ ์žˆ๋‹ค.
    • ์˜ˆ๋ฅผ ๋“ค์–ด, ์•ž ๋‹จ์˜ Web Server์—์„œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•œ WAS๋ฅผ ์ด์šฉํ•˜์ง€ ๋ชปํ•˜๋„๋ก ํ•œ ํ›„ WAS๋ฅผ ์žฌ์‹œ์ž‘ํ•จ์œผ๋กœ์จ ์‚ฌ์šฉ์ž๋Š” ์˜ค๋ฅ˜๋ฅผ ๋А๋ผ์ง€ ๋ชปํ•˜๊ณ  ์ด์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

๊ทธ๋Ÿฌ๋ฏ€๋กœ ์ด๋ ‡๊ฒŒ Web server์™€ WAS๋ฅผ ๊ตฌ๋ถ„ํ•œ ์•„ํ‚คํ…์ฒ˜๋Š” ์œ„์™€ ๊ฐ™์€ ์•„ํ‚คํ…์ฒ˜๋ฅผ ์ง€๋‹ˆ๊ฒŒ ๋˜๊ณ , ์—ฌ๊ธฐ์„œ WAS๋Š” ์—ฌ๋Ÿฌ๊ฐœ๋ฅผ ๋” ๋Š˜๋ฆด ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ๋กœ๋“œ ๋ฐธ๋Ÿฐ์‹ฑ์„ ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋œ๋‹ค. ๊ทธ๋ ‡๊ฒŒ ๋˜๋ฉด ๊ตฌ์กฐ๋Š” ์ด์™€ ๊ฐ™์ด ์—ฌ๋Ÿฌ ๋Œ€์˜ WAS๊ฐ€ ํ•˜๋‚˜์˜ Web Server์— ์—ฐ๊ฒฐ๋˜์–ด ์žˆ๋Š” ํ˜•ํƒœ๋กœ ๋†“์ด๊ฒŒ ๋  ๊ฒƒ์ด๋‹ค. ์ด๋Ÿฐ ์‹์œผ๋กœ ์›น ์„œ๋ฒ„๋ฅผ ๊ตฌ์„ฑํ•  ์ˆ˜๋„ ์žˆ๋‹ค๋Š” ์ ์„ ์•Œ์•„๋‘๋ฉด ์ข‹๋‹ค. ์„œ๋น„์Šค์˜ ๊ทœ๋ชจ์— ๋”ฐ๋ผ ๋กœ๋“œ ๋ฐธ๋Ÿฐ์‹ฑ์„ ํ†ตํ•œ ๋ถ€ํ•˜ ๋ถ„์‚ฐ์„ ๋‚˜๋ˆ„๋Š” ๋ฐฉ์‹์€ ๊ณ„์†ํ•ด์„œ ์“ฐ๋Š” ๋ฐฉ์‹์ด๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

ํ•˜์ง€๋งŒ ๋™์ ์ธ ์ฝ˜ํ…์ธ ๋ฅผ ๋ฌด์กฐ๊ฑด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„œ๋ฒ„๋ฅผ ํ†ตํ•ด ์ด์šฉํ•ด์•ผ ํ•˜๋Š”๊ฐ€?๋ผ๊ณ  ํ•œ๋‹ค๋ฉด ์‚ฌ์‹ค ๋‹ต์€ ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•๋„ ์žˆ๋‹ค์ด๋‹ค.
SSI(Server-side includes)๋Š” ์›น ์„œ๋ฒ„์—์„œ ์ง€์›ํ•˜๋Š” ๊ธฐ๋Šฅ์œผ๋กœ, ์–ด๋–ค ๋ฆฌ์†Œ์Šค๊ฐ€ ์„œ๋ฒ„์‚ฌ์ด๋“œ ์ธํด๋ฃจ๋“œ๋ฅผ ํฌํ•จํ•˜๊ณ  ์žˆ๋Š” ๊ฒƒ์œผ๋กœ ์„ค์ •๋˜์–ด ์žˆ๋‹ค๋ฉด, ์„œ๋ฒ„๋Š” ๊ทธ ๋ฆฌ์†Œ์Šค์˜ ์ฝ˜ํ…์ธ ๋ฅผ ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ๋ณด๋‚ด๊ธฐ ์ „์— ์ฒ˜๋ฆฌํ•œ๋‹ค. ์ฆ‰ ์›นํŽ˜์ด์ง€ ๋‚ด์—์„œ ๋‹ค๋ฅธ ํŒŒ์ผ ๋‚ด์šฉ์„ ์ฝ์€ ๋‹ค์Œ์— ์‚ฝ์ž…ํ•˜๋Š” ๋ฐฉ์‹์ด๋‹ค.

์ด๋Ÿฐ ์‹์œผ๋กœ ํŽ˜์ด์ง€ ๋‚ด์—์„œ INCLUDE ๋ฅผ ํ†ตํ•ด ์Šคํฌ๋ฆฝํŠธ ํŒŒ์ผ์„ ๋„ฃ์„ ์ˆ˜๋„ ์žˆ๋Š” ๋ฐฉ์‹๋„ ์žˆ๋‹ค.

์‘๋‹ต ๋งŒ๋“ค๊ธฐ

์–ด๋–ค ๋ฐฉ์‹์œผ๋กœ๋“  ์„œ๋ฒ„๊ฐ€ ๋ฆฌ์†Œ์Šค๋ฅผ ์‹๋ณ„ํ•œ ๋’ค์—๋Š” ์š”์ฒญ ๋ฉ”์„œ๋“œ๋กœ ์„œ์ˆ ๋˜๋Š” ๋™์ž‘์„ ์ˆ˜ํ–‰ํ•˜๊ณ  ์‘๋‹ต ๋ฉ”์‹œ์ง€๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค. ์‘๋‹ต ๋ฉ”์‹œ์ง€์—๋Š” ๊ณผ ๊ฐ™์€ ์š”์†Œ๋“ค์„ ํฌํ•จํ•œ๋‹ค.

๋ณธ๋ฌธ

๋งŒ์•ฝ ํŠธ๋žœ์žญ์…˜์ด ์‘๋‹ต ๋ณธ๋ฌธ์„ ์ƒ์„ฑํ•˜๊ฒŒ ๋˜๋ฉด ํ•ด๋‹น ๋‚ด์šฉ๋„ ์‘๋‹ต๋ฉ”์‹œ์ง€์™€ ํ•จ๊ป˜ ๋Œ๋ ค๋ณด๋‚ด๋Š”๋ฐ, ๋ณธ๋ฌธ์ด ์žˆ๋‹ค๋ฉด

  • Content-Type ํ—ค๋”
  • Content-Length ํ—ค๋”
  • ๋ณธ๋ฌธ ์€ ์›ฌ๋งŒํ•˜๋ฉด ์žˆ์–ด์•ผ ํ•œ๋‹ค.

MIME ํƒ€์ž… ๊ฒฐ์ •

์›น ์„œ๋ฒ„๋Š” ์‘๋‹ต ๋ณธ๋ฌธ์˜ MIME ํƒ€์ž…์„ ๊ฒฐ์ •ํ•ด์•ผ ํ•˜๋Š” ์ฑ…์ž„์ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์—ฌ๋Ÿฌ๊ฐ€์ง€ ๋ฐฉ๋ฒ•์„ ํ†ตํ•ด MIME ํƒ€์ž…๊ณผ ๋ฆฌ์†Œ์Šค๋ฅผ ์—ฐ๊ฒฐํ•œ๋‹ค.

  • mime.types
    • ํŒŒ์ผ ์ด๋ฆ„์˜ ํ™•์žฅ์ž๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํฌ๊ธฐํ•˜๋Š” ๋ฐฉ๋ฒ•
    • ๊ฐ ๋ฆฌ์†Œ์Šค์˜ MIME ํƒ€์ž…์„ ๊ณ„์‚ฐํ•˜๊ธฐ ์œ„ํ•ด ํ™•์žฅ์ž๋ณ„ MIME ํƒ€์ž…์ด ๋‹ด๊ฒจ ์žˆ๋Š” ํŒŒ์ผ์„ ๋‹ดํ•œ๋‹ค.
    • ์š”๋Ÿฐ ์‹์œผ๋กœ ์ •์˜๋œ ํŒŒ์ผ์„ ์ฐธ์กฐํ•˜์—ฌ ๊ฒฐ์ •ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•œ๋‹ค
  • ๋งค์ง ํƒ€์ดํ•‘(Magic Typing)
    • ํŒŒ์ผ์˜ ๋‚ด์šฉ์„ ๊ฒ€์‚ฌํ•œ ๋’ค ์•Œ๋ ค์ง„ ํŒจํ„ด์— ๋Œ€ํ•œ ํ…Œ์ด๋ธ”์— ํ•ด๋‹นํ•˜๋Š” ํŒจํ„ด์ด ์žˆ๋Š”์ง€ ์ฐพ์•„๋ณธ๋‹ค
  • ์œ ํ˜• ๋ช…์‹œ(Explicit typing)
    • ์›น ์„œ๋ฒ„ ์„ค์ •์—์„œ ๋ฏธ๋ฆฌ ํ™•์žฅ์ž๋‚˜ ๋‚ด์šฉ์— ์ƒ๊ด€ ์—†์ด ๋””ํดํŠธ๋กœ ๋„ฃ๋Š” MIME ํƒ€์ž…์„ ๋„ฃ์„ ์ˆ˜ ์žˆ๋‹ค.
  • ์œ ํ˜• ํ˜‘์ƒ(Type Negotiation)
    • ํ•œ ๋ฆฌ์†Œ์Šค๊ฐ€ ์—ฌ๋Ÿฌ ์ข…๋ฅ˜์˜ ๋ฌธ์„œ ํ˜•์‹์— ์†ํ•˜๋„๋ก ์„ค์ •ํ•œ๋‹ค
    • ์‚ฌ์šฉ์ž์™€์˜ ํ˜‘์ƒ ๊ณผ์ •์„ ํ†ตํ•ด ์‚ฌ์šฉํ•˜๊ธฐ ๊ฐ€์žฅ ์ข‹์€ ํ˜•์‹์„ ์„ค์ •ํ•œ๋‹ค.

๋ฆฌ๋‹ค์ด๋ ‰ํŠธ

๊ฐ€๋” ๋ฆฌ๋‹ค์ด๋ ŒํŠธ ์‹œํ‚ค๋Š” ์‘๋‹ต์„ ๋ฐ˜ํ™˜ํ•˜๋Š” ๊ฒฝ์šฐ๋„ ์žˆ๋‹ค. ๋ฆฌ๋‹ค์ด๋ ‰์…˜ ์‘๋‹ต์€ ์ฃผ๋กœ 3XX ์ƒํƒœ ์ฝ”๋“œ๋กœ ์ง€์นญ๋˜๋ฉฐ, Location ์‘๋‹ต ํ—ค๋”๋Š” ์ฝ˜ํ…์ธ ์˜ ์ƒˆ๋กœ์šด ์œ„์น˜๋‚˜ ์„ ํ˜ธํ•˜๋Š” ์œ„์น˜์— ๋Œ€ํ•œ URI๋ฅผ ์ œ๊ณตํ•œ๋‹ค.

์ด๋Ÿฌํ•œ ๋ฆฌ๋‹ค์ด๋ ‰ํŠธ๊ฐ€ ์œ ์šฉํ•˜๊ฒŒ ์“ฐ์ด๋Š” ๊ฒฝ์šฐ๋Š” ๋ช‡ ๊ฐ€์ง€ ๊ฒฝ์šฐ๊ฐ€ ์žˆ๋‹ค

  • ์˜๊ตฌํžˆ ๋ฆฌ์†Œ์Šค๊ฐ€ ์˜ฎ๊ฒจ์ง„ ๊ฒฝ์šฐ
    • 301 Moved Permanently ์ƒํƒœ ์ฝ”๋“œ๊ฐ€ ์ฃผ๋กœ ์‚ฌ์šฉ๋จ
  • ์ž„์‹œ๋กœ ๋ฆฌ์†Œ์Šค๊ฐ€ ์˜ฎ๊ฒจ์ง„ ๊ฒฝ์šฐ
    • 303 See Other๊ณผ 307 Temporary Redirect ์ƒํƒœ ์ฝ”๋“œ๊ฐ€ ์ฃผ๋กœ ์‚ฌ์šฉ๋œ๋‹ค
  • URL ์ฆ๊ฐ•
    • ์žฌ์ž‘์„ฑ๋œ URL๋กœ ๋ฆฌ๋‹ค์ด๋ ‰ํŠธ ๋˜๋Š” ๊ฒฝ์šฐ
    • ์ƒˆ URL์„ ์ƒ์„ฑํ•˜๊ณ  ์‚ฌ์šฉ์ž๋ฅผ ์ด ์ƒˆ URL๋กœ ๋ฆฌ๋‹ค์ด๋ ‰ํŠธํ•œ๋‹ค.
  • ๋ถ€ํ•˜ ๊ท ํ˜•
    • ๊ณผ๋ถ€ํ™”๋œ ๊ฒฝ์šฐ ์„œ๋ฒ„๋Š” ํด๋ผ์ด์–ธํŠธ๋ฅผ ์ข€ ํ•œ์‚ฐํ•œ ์„œ๋ฒ„๋กœ ๋ฆฌ๋‹ค์ด๋ ‰ํŠธ์‹œํ‚จ๋‹ค
  • ์นœ๋ฐ€ํ•œ ๋‹ค๋ฅธ ์„œ๋ฒ„
    • ์‚ฌ์šฉ์ž์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ์›น ์„œ๋ฒ„๊ฐ€ ๋ฏธ๋ฆฌ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค๊ฐ€ ํ•ด๋‹น ํด๋ผ์ด์–ธํŠธ์˜ ์ •๋ณด๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ์„œ๋ฒ„๋กœ ๋ฆฌ๋‹ค์ด๋ ‰ํŠธ ์‹œํ‚ค๋Š” ๊ฒฝ์šฐ
    • 303 See Other๊ณผ 307 Temporary Redirect ์ƒํƒœ ์ฝ”๋“œ๊ฐ€ ์ฃผ๋กœ ์‚ฌ์šฉ๋œ๋‹ค.
  • ๋””๋ ‰ํ„ฐ๋ฆฌ ์ด๋ฆ„ ์ •๊ทœํ™”
    • ๋น—๊ธˆ(/)์ด ์—†๋Š” URL ๋“ฑ์„ ์ž…๋ ฅํ–ˆ์„ ๋•Œ ์Šฌ๋ž˜์‹œ๋ฅผ ์ถ”๊ฐ€ํ•œ URL๋กœ ๋ฆฌ๋‹ค์ด๋ ‰ํŠธ

์‘๋‹ต ๋ณด๋‚ด๊ธฐ

์›น ์„œ๋ฒ„๋Š” ๋ฐ›์„ ๋•Œ์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ๋‹ค์‹œ ์‘๋‹ต์„ ๋ณด๋‚ผ ๋•Œ๋„ ์—ฌ๋Ÿฌ ํด๋ผ์ด์–ธํŠธ์— ๋Œ€ํ•œ ๋งŽ์€ ์ปค๋„ฅ์…˜์„ ๊ฐ€์ง„ ์ฑ„๋กœ ํŠน์ • ํด๋ผ์ด์–ธํŠธ์— ์‘๋‹ต์„ ๋ณด๋‚ด๋Š”๋ฐ, ์ด ๊ณผ์ •์—์„œ Content-Length ํ—ค๋”๊ฐ€ ์ž˜๋ชป ๊ณ„์‚ฐ๋๋‹ค๊ฑฐ๋‚˜ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์‘๋‹ต์ด ์–ธ์ œ ๋๋‚˜๋Š”์ง€ ์•ํ›„ ์—†๋Š” ๊ฒฝ์šฐ ์ปค๋„ฅ์…˜์ด ๊ณ„์† ์—ด๋ฆฐ ์ƒํƒœ๋กœ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ฃผ์˜ํ•ด์„œ ๊ณ„์† ๋ชจ๋‹ˆํ„ฐ๋ง ํ•ด์•ผํ•œ๋‹ค.