Author: user

  • ์„œ๋ธŒ๋„ท(Subnet)๊ณผ CIDR ํ‘œ๊ธฐ๋ฒ• ์ดํ•ดํ•˜๊ธฐ

    ์„œ๋ธŒ๋„ท(Subnet)๊ณผ CIDR ํ‘œ๊ธฐ๋ฒ• ์ดํ•ดํ•˜๊ธฐ

    ์„œ๋ฒ„๋ฅผ ์šด์˜ํ•˜๋‹ค ๋ณด๋ฉด ๋„คํŠธ์›Œํฌ ์„ค์ •์—์„œ 192.168.1.0/24 ๊ฐ™์€ ํ‘œ๊ธฐ๋ฅผ ์ž์ฃผ ๋งŒ๋‚˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. AWS์—์„œ VPC๋ฅผ ๋งŒ๋“ค ๋•Œ๋„ ๋‚˜์˜ค๊ณ , ๋ฐฉํ™”๋ฒฝ ๊ทœ์น™์„ ์„ค์ •ํ•  ๋•Œ๋„ ๋‚˜์˜ค๊ณ , ์„œ๋ฒ„ ๊ฐ„ ํ†ต์‹ ์„ ๊ตฌ์„ฑํ•  ๋•Œ๋„ ๋‚˜์˜ต๋‹ˆ๋‹ค. ์Šฌ๋ž˜์‹œ ๋’ค์— ๋ถ™๋Š” ์ˆซ์ž๊ฐ€ ๋ญ˜ ์˜๋ฏธํ•˜๋Š”์ง€ ๋ชจ๋ฅด๋ฉด ๋„คํŠธ์›Œํฌ ์„ค์ •์„ ํ•  ๋•Œ๋งˆ๋‹ค ์ฐœ์ฐœํ•œ ์ฑ„๋กœ ๋„˜์–ด๊ฐ€๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ์ด๋ฒˆ ๊ธ€์—์„œ๋Š” IP ์ฃผ์†Œ์˜ ๊ตฌ์กฐ๋ถ€ํ„ฐ ์‹œ์ž‘ํ•ด์„œ ์„œ๋ธŒ๋„ท๊ณผ CIDR ํ‘œ๊ธฐ๋ฒ•์ด ์–ด๋–ค ์˜๋ฏธ์ธ์ง€๋ฅผ ์ •๋ฆฌํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

    IP ์ฃผ์†Œ์˜ ๊ตฌ์กฐ๋ถ€ํ„ฐ ๋‹ค์‹œ ๋ณด๊ธฐ

    ์„œ๋ธŒ๋„ท์„ ์ดํ•ดํ•˜๋ ค๋ฉด IP ์ฃผ์†Œ๊ฐ€ ์–ด๋–ป๊ฒŒ ๊ตฌ์„ฑ๋˜์–ด ์žˆ๋Š”์ง€๋ฅผ ๋จผ์ € ์•Œ์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค.

    IPv4 ์ฃผ์†Œ๋Š” 192.168.1.100์ฒ˜๋Ÿผ ์ ์œผ๋กœ ๊ตฌ๋ถ„๋œ ๋„ค ๊ฐœ์˜ ์ˆซ์ž๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ ์ˆซ์ž๋Š” 0๋ถ€ํ„ฐ 255๊นŒ์ง€์˜ ๊ฐ’์„ ๊ฐ€์ง‘๋‹ˆ๋‹ค. ์‚ฌ๋žŒ์ด ๋ณด๊ธฐ์—๋Š” ์‹ญ์ง„์ˆ˜ ๋„ค ๋ฉ์–ด๋ฆฌ์ง€๋งŒ ์ปดํ“จํ„ฐ ๋‚ด๋ถ€์—์„œ๋Š” 32๋น„ํŠธ ์ด์ง„์ˆ˜๋กœ ์ฒ˜๋ฆฌ๋ฉ๋‹ˆ๋‹ค. 192.168.1.100์„ ์ด์ง„์ˆ˜๋กœ ๋ฐ”๊พธ๋ฉด 11000000.10101000.00000001.01100100์ž…๋‹ˆ๋‹ค.

    ์ด 32๋น„ํŠธ๋Š” ๋‘ ๋ถ€๋ถ„์œผ๋กœ ๋‚˜๋‰ฉ๋‹ˆ๋‹ค. ์•ž๋ถ€๋ถ„์€ ๋„คํŠธ์›Œํฌ ์ฃผ์†Œ์ด๊ณ  ๋’ท๋ถ€๋ถ„์€ ํ˜ธ์ŠคํŠธ ์ฃผ์†Œ์ž…๋‹ˆ๋‹ค. ๋„คํŠธ์›Œํฌ ์ฃผ์†Œ๋Š” “์–ด๋–ค ๋„คํŠธ์›Œํฌ์— ์†ํ•˜๋Š”๊ฐ€”๋ฅผ ๋‚˜ํƒ€๋‚ด๊ณ , ํ˜ธ์ŠคํŠธ ์ฃผ์†Œ๋Š” “๊ทธ ๋„คํŠธ์›Œํฌ ์•ˆ์—์„œ ์–ด๋–ค ์žฅ๋น„์ธ๊ฐ€”๋ฅผ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.

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

    ๋ฌธ์ œ๋Š” 32๋น„ํŠธ ์ค‘์—์„œ ์–ด๋””๊นŒ์ง€๊ฐ€ ๋„คํŠธ์›Œํฌ ์ฃผ์†Œ์ด๊ณ  ์–ด๋””๋ถ€ํ„ฐ๊ฐ€ ํ˜ธ์ŠคํŠธ ์ฃผ์†Œ์ธ์ง€๋ฅผ ์•Œ ์ˆ˜ ์—†๋‹ค๋Š” ์ ์ž…๋‹ˆ๋‹ค. ์ด๊ฑธ ๊ตฌ๋ถ„ํ•ด์ฃผ๋Š” ๊ฒŒ ์„œ๋ธŒ๋„ท ๋งˆ์Šคํฌ์ž…๋‹ˆ๋‹ค.

    ์„œ๋ธŒ๋„ท ๋งˆ์Šคํฌ๋ž€ ๋ฌด์—‡์ธ๊ฐ€

    ์„œ๋ธŒ๋„ท ๋งˆ์Šคํฌ๋Š” IP ์ฃผ์†Œ์—์„œ ๋„คํŠธ์›Œํฌ ๋ถ€๋ถ„๊ณผ ํ˜ธ์ŠคํŠธ ๋ถ€๋ถ„์˜ ๊ฒฝ๊ณ„๋ฅผ ์•Œ๋ ค์ฃผ๋Š” ๊ฐ’์ž…๋‹ˆ๋‹ค. ์„œ๋ธŒ๋„ท ๋งˆ์Šคํฌ๋„ IP ์ฃผ์†Œ์ฒ˜๋Ÿผ 32๋น„ํŠธ๋กœ ๋˜์–ด ์žˆ๋Š”๋ฐ, ์•ž์ชฝ์— 1์ด ์—ฐ์†์œผ๋กœ ๋‚˜์˜ค๊ณ  ๋’ค์ชฝ์— 0์ด ์—ฐ์†์œผ๋กœ ๋‚˜์˜ค๋Š” ๊ตฌ์กฐ์ž…๋‹ˆ๋‹ค.

    ์˜ˆ๋ฅผ ๋“ค์–ด ์„œ๋ธŒ๋„ท ๋งˆ์Šคํฌ๊ฐ€ 255.255.255.0์ด๋ฉด ์ด์ง„์ˆ˜๋กœ๋Š” 11111111.11111111.11111111.00000000์ž…๋‹ˆ๋‹ค. 1์ธ ๋ถ€๋ถ„์ด ๋„คํŠธ์›Œํฌ ์ฃผ์†Œ์ด๊ณ  0์ธ ๋ถ€๋ถ„์ด ํ˜ธ์ŠคํŠธ ์ฃผ์†Œ์ž…๋‹ˆ๋‹ค. ์ด ๊ฒฝ์šฐ ์•ž์˜ 24๋น„ํŠธ๊ฐ€ ๋„คํŠธ์›Œํฌ ์ฃผ์†Œ์ด๊ณ  ๋’ค์˜ 8๋น„ํŠธ๊ฐ€ ํ˜ธ์ŠคํŠธ ์ฃผ์†Œ์ž…๋‹ˆ๋‹ค.

    IP ์ฃผ์†Œ๊ฐ€ 192.168.1.100์ด๊ณ  ์„œ๋ธŒ๋„ท ๋งˆ์Šคํฌ๊ฐ€ 255.255.255.0์ด๋ฉด, ๋„คํŠธ์›Œํฌ ์ฃผ์†Œ๋Š” 192.168.1์ด๊ณ  ํ˜ธ์ŠคํŠธ ์ฃผ์†Œ๋Š” 100์ž…๋‹ˆ๋‹ค. ๊ฐ™์€ ๋„คํŠธ์›Œํฌ์— ์†ํ•œ ์žฅ๋น„๋“ค์€ ์ „๋ถ€ 192.168.1๋กœ ์‹œ์ž‘ํ•˜๊ณ  ๋งˆ์ง€๋ง‰ ์ˆซ์ž๋งŒ ๋‹ค๋ฆ…๋‹ˆ๋‹ค. 192.168.1.1๋ถ€ํ„ฐ 192.168.1.254๊นŒ์ง€๊ฐ€ ์ด ๋„คํŠธ์›Œํฌ์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ํ˜ธ์ŠคํŠธ ์ฃผ์†Œ์ž…๋‹ˆ๋‹ค.

    ์™œ 254๊ฐœ์ธ์ง€ ๊ถ๊ธˆํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ˜ธ์ŠคํŠธ ๋ถ€๋ถ„์ด 8๋น„ํŠธ์ด๋ฉด 0๋ถ€ํ„ฐ 255๊นŒ์ง€ ์ด 256๊ฐœ์˜ ๊ฐ’์ด ๊ฐ€๋Šฅํ•˜์ง€๋งŒ, ํ˜ธ์ŠคํŠธ ๋ถ€๋ถ„์ด ์ „๋ถ€ 0์ธ ์ฃผ์†Œ(192.168.1.0)๋Š” ๋„คํŠธ์›Œํฌ ์ž์ฒด๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” ๋„คํŠธ์›Œํฌ ์ฃผ์†Œ๋กœ ์˜ˆ์•ฝ๋˜์–ด ์žˆ๊ณ , ์ „๋ถ€ 1์ธ ์ฃผ์†Œ(192.168.1.255)๋Š” ๋ธŒ๋กœ๋“œ์บ์ŠคํŠธ ์ฃผ์†Œ๋กœ ์˜ˆ์•ฝ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ์‹ค์ œ ์žฅ๋น„์— ํ• ๋‹นํ•  ์ˆ˜ ์žˆ๋Š” ์ฃผ์†Œ๋Š” 256์—์„œ 2๋ฅผ ๋บ€ 254๊ฐœ์ž…๋‹ˆ๋‹ค.

    CIDR ํ‘œ๊ธฐ๋ฒ•์ด๋ž€

    CIDR์€ Classless Inter-Domain Routing์˜ ์•ฝ์ž์ž…๋‹ˆ๋‹ค. IP ์ฃผ์†Œ ๋’ค์— ์Šฌ๋ž˜์‹œ์™€ ์ˆซ์ž๋ฅผ ๋ถ™์—ฌ์„œ ์„œ๋ธŒ๋„ท ๋งˆ์Šคํฌ๋ฅผ ๊ฐ„๋‹จํ•˜๊ฒŒ ํ‘œํ˜„ํ•˜๋Š” ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค.

    192.168.1.0/24๋ผ๊ณ  ์“ฐ๋ฉด ์•ž์˜ 24๋น„ํŠธ๊ฐ€ ๋„คํŠธ์›Œํฌ ์ฃผ์†Œ๋ผ๋Š” ๋œป์ž…๋‹ˆ๋‹ค. ์ด๊ฑด ์„œ๋ธŒ๋„ท ๋งˆ์Šคํฌ 255.255.255.0๊ณผ ๊ฐ™์€ ์˜๋ฏธ์ž…๋‹ˆ๋‹ค. ์Šฌ๋ž˜์‹œ ๋’ค์˜ ์ˆซ์ž๊ฐ€ ์„œ๋ธŒ๋„ท ๋งˆ์Šคํฌ์—์„œ 1์ด ๋ช‡ ๊ฐœ ์—ฐ์†๋˜๋Š”์ง€๋ฅผ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.

    10.0.0.0/16์ด๋ฉด ์•ž์˜ 16๋น„ํŠธ๊ฐ€ ๋„คํŠธ์›Œํฌ ์ฃผ์†Œ์ž…๋‹ˆ๋‹ค. ์„œ๋ธŒ๋„ท ๋งˆ์Šคํฌ๋กœ๋Š” 255.255.0.0์ž…๋‹ˆ๋‹ค. ํ˜ธ์ŠคํŠธ ๋ถ€๋ถ„์ด 16๋น„ํŠธ์ด๋ฏ€๋กœ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ํ˜ธ์ŠคํŠธ ์ˆ˜๋Š” 2์˜ 16์Šน์—์„œ 2๋ฅผ ๋บ€ 65,534๊ฐœ์ž…๋‹ˆ๋‹ค.

    172.16.0.0/12๋ฉด ์•ž์˜ 12๋น„ํŠธ๊ฐ€ ๋„คํŠธ์›Œํฌ ์ฃผ์†Œ์ด๊ณ  ํ˜ธ์ŠคํŠธ ๋ถ€๋ถ„์ด 20๋น„ํŠธ์ž…๋‹ˆ๋‹ค. ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ํ˜ธ์ŠคํŠธ ์ˆ˜๋Š” 2์˜ 20์Šน์—์„œ 2๋ฅผ ๋บ€ 1,048,574๊ฐœ์ž…๋‹ˆ๋‹ค.

    ์ˆซ์ž๊ฐ€ ์ž‘์„์ˆ˜๋ก ๋„คํŠธ์›Œํฌ ๋ฒ”์œ„๊ฐ€ ๋„“๊ณ  ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ํ˜ธ์ŠคํŠธ๊ฐ€ ๋งŽ์Šต๋‹ˆ๋‹ค. ์ˆซ์ž๊ฐ€ ํด์ˆ˜๋ก ๋„คํŠธ์›Œํฌ ๋ฒ”์œ„๊ฐ€ ์ข๊ณ  ํ˜ธ์ŠคํŠธ ์ˆ˜๊ฐ€ ์ ์Šต๋‹ˆ๋‹ค. /32๋Š” ํ˜ธ์ŠคํŠธ ๋ถ€๋ถ„์ด 0๋น„ํŠธ์ด๋ฏ€๋กœ ๋‹จ ํ•˜๋‚˜์˜ IP ์ฃผ์†Œ๋ฅผ ๊ฐ€๋ฆฌํ‚ต๋‹ˆ๋‹ค.

    ์ž์ฃผ ๋ณด๋Š” CIDR ํ‘œ๊ธฐ๋ฅผ ์ •๋ฆฌํ•˜๋ฉด ์ด๋ ‡์Šต๋‹ˆ๋‹ค. /8์€ ์„œ๋ธŒ๋„ท ๋งˆ์Šคํฌ 255.0.0.0์ด๊ณ  ์•ฝ 1,677๋งŒ ๊ฐœ์˜ ํ˜ธ์ŠคํŠธ๋ฅผ ์ˆ˜์šฉํ•ฉ๋‹ˆ๋‹ค. /16์€ 255.255.0.0์ด๊ณ  ์•ฝ 65,000๊ฐœ์ž…๋‹ˆ๋‹ค. /24๋Š” 255.255.255.0์ด๊ณ  254๊ฐœ์ž…๋‹ˆ๋‹ค. /32๋Š” 255.255.255.255์ด๊ณ  1๊ฐœ์ž…๋‹ˆ๋‹ค.

    ์„œ๋ธŒ๋„ทํŒ…์ด๋ž€ ๋ฌด์—‡์ธ๊ฐ€

    ์„œ๋ธŒ๋„ทํŒ…์€ ํ•˜๋‚˜์˜ ํฐ ๋„คํŠธ์›Œํฌ๋ฅผ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์ž‘์€ ๋„คํŠธ์›Œํฌ๋กœ ์ชผ๊ฐœ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

    ์˜ˆ๋ฅผ ๋“ค์–ด ํšŒ์‚ฌ์—์„œ 192.168.1.0/24 ๋„คํŠธ์›Œํฌ๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋‹ค๊ณ  ํ•ฉ์‹œ๋‹ค. ์ด ๋„คํŠธ์›Œํฌ์—๋Š” 254๊ฐœ์˜ ์žฅ๋น„๋ฅผ ์—ฐ๊ฒฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ๋ถ€์„œ๊ฐ€ ์„ธ ๊ฐœ ์žˆ๊ณ  ๋ถ€์„œ๋ณ„๋กœ ๋„คํŠธ์›Œํฌ๋ฅผ ๋ถ„๋ฆฌํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ๋ณด์•ˆ์ƒ ๋‹ค๋ฅธ ๋ถ€์„œ์˜ ํŠธ๋ž˜ํ”ฝ์ด ๋‚ด ๋„คํŠธ์›Œํฌ์— ๋“ค์–ด์˜ค์ง€ ์•Š๊ฒŒ ํ•˜๊ณ  ์‹ถ์„ ์ˆ˜๋„ ์žˆ๊ณ , ์žฅ์• ๊ฐ€ ๋‚ฌ์„ ๋•Œ ์˜ํ–ฅ ๋ฒ”์œ„๋ฅผ ์ค„์ด๊ณ  ์‹ถ์„ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

    ์ด๋•Œ /24 ๋„คํŠธ์›Œํฌ๋ฅผ ๋” ์ž‘์€ ๋‹จ์œ„๋กœ ๋‚˜๋ˆŒ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. 192.168.1.0/26์œผ๋กœ ๋‚˜๋ˆ„๋ฉด ์–ด๋–ป๊ฒŒ ๋ ๊นŒ์š”. /26์€ ๋„คํŠธ์›Œํฌ ๋ถ€๋ถ„์ด 26๋น„ํŠธ์ด๊ณ  ํ˜ธ์ŠคํŠธ ๋ถ€๋ถ„์ด 6๋น„ํŠธ์ž…๋‹ˆ๋‹ค. ํ˜ธ์ŠคํŠธ ์ˆ˜๋Š” 2์˜ 6์Šน์—์„œ 2๋ฅผ ๋บ€ 62๊ฐœ์ž…๋‹ˆ๋‹ค. /24 ํ•˜๋‚˜๊ฐ€ /26 ๋„ค ๊ฐœ๋กœ ์ชผ๊ฐœ์ง‘๋‹ˆ๋‹ค.

    192.168.1.0/26์€ 192.168.1.0๋ถ€ํ„ฐ 192.168.1.63๊นŒ์ง€์˜ ๋ฒ”์œ„์ž…๋‹ˆ๋‹ค. 192.168.1.64/26์€ 192.168.1.64๋ถ€ํ„ฐ 192.168.1.127๊นŒ์ง€์ž…๋‹ˆ๋‹ค. 192.168.1.128/26์€ 192.168.1.128๋ถ€ํ„ฐ 192.168.1.191๊นŒ์ง€์ด๊ณ , 192.168.1.192/26์€ 192.168.1.192๋ถ€ํ„ฐ 192.168.1.255๊นŒ์ง€์ž…๋‹ˆ๋‹ค. ๋„ค ๊ฐœ์˜ ์„œ๋ธŒ๋„ท์ด ๋งŒ๋“ค์–ด์กŒ๊ณ  ๊ฐ๊ฐ 62๊ฐœ์˜ ํ˜ธ์ŠคํŠธ๋ฅผ ์ˆ˜์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    ๊ฐ ์„œ๋ธŒ๋„ท์˜ ์ฒซ ๋ฒˆ์งธ ์ฃผ์†Œ๋Š” ๋„คํŠธ์›Œํฌ ์ฃผ์†Œ์ด๊ณ  ๋งˆ์ง€๋ง‰ ์ฃผ์†Œ๋Š” ๋ธŒ๋กœ๋“œ์บ์ŠคํŠธ ์ฃผ์†Œ์ด๋ฏ€๋กœ ์‹ค์ œ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๋ฒ”์œ„๋Š” ์ฒซ ๋ฒˆ์งธ์™€ ๋งˆ์ง€๋ง‰์„ ์ œ์™ธํ•œ ๋‚˜๋จธ์ง€์ž…๋‹ˆ๋‹ค. 192.168.1.0/26์—์„œ ์žฅ๋น„์— ํ• ๋‹นํ•  ์ˆ˜ ์žˆ๋Š” ์ฃผ์†Œ๋Š” 192.168.1.1๋ถ€ํ„ฐ 192.168.1.62๊นŒ์ง€์ž…๋‹ˆ๋‹ค.

    ํด๋ผ์šฐ๋“œ ํ™˜๊ฒฝ์—์„œ์˜ ์„œ๋ธŒ๋„ท

    AWS, GCP ๊ฐ™์€ ํด๋ผ์šฐ๋“œ๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ ์„œ๋ธŒ๋„ท ๊ฐœ๋…์ด ๋” ์ž์ฃผ ๋‚˜์˜ต๋‹ˆ๋‹ค.

    AWS์—์„œ ์„œ๋ฒ„๋ฅผ ๋งŒ๋“ค๋ ค๋ฉด ๋จผ์ € VPC(Virtual Private Cloud)๋ฅผ ๋งŒ๋“ค์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. VPC๋Š” ํด๋ผ์šฐ๋“œ ์•ˆ์— ๊ฒฉ๋ฆฌ๋œ ๋‚ด ์ „์šฉ ๋„คํŠธ์›Œํฌ๋ฅผ ๋งŒ๋“œ๋Š” ๊ฒ๋‹ˆ๋‹ค. VPC๋ฅผ ๋งŒ๋“ค ๋•Œ IP ๋ฒ”์œ„๋ฅผ CIDR๋กœ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด 10.0.0.0/16์œผ๋กœ VPC๋ฅผ ๋งŒ๋“ค๋ฉด 10.0.0.0๋ถ€ํ„ฐ 10.0.255.255๊นŒ์ง€์˜ IP๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋„คํŠธ์›Œํฌ๊ฐ€ ์ƒ๊น๋‹ˆ๋‹ค.

    VPC ์•ˆ์—์„œ ๋‹ค์‹œ ์„œ๋ธŒ๋„ท์„ ๋งŒ๋“ค์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์„œ๋ธŒ๋„ท๋งˆ๋‹ค ๊ฐ€์šฉ ์˜์—ญ(AZ)์„ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค. 10.0.1.0/24๋ฅผ ๊ฐ€์šฉ ์˜์—ญ A์—, 10.0.2.0/24๋ฅผ ๊ฐ€์šฉ ์˜์—ญ B์— ๋งŒ๋“œ๋Š” ์‹์ž…๋‹ˆ๋‹ค. ์„œ๋ฒ„๋ฅผ ๋งŒ๋“ค ๋•Œ ์–ด๋–ค ์„œ๋ธŒ๋„ท์— ๋ฐฐ์น˜ํ• ์ง€ ์„ ํƒํ•˜๋ฉด ํ•ด๋‹น ์„œ๋ธŒ๋„ท์˜ IP ๋ฒ”์œ„์—์„œ ์ฃผ์†Œ๊ฐ€ ํ• ๋‹น๋ฉ๋‹ˆ๋‹ค.

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

    ์ด๋Ÿฐ ๊ตฌ์„ฑ์„ ํ•  ๋•Œ CIDR ํ‘œ๊ธฐ๋ฅผ ์ดํ•ดํ•˜์ง€ ๋ชปํ•˜๋ฉด IP ๋ฒ”์œ„๊ฐ€ ๊ฒน์น˜๊ฑฐ๋‚˜ ํ˜ธ์ŠคํŠธ ์ˆ˜๊ฐ€ ๋ถ€์กฑํ•œ ๋ฌธ์ œ๊ฐ€ ์ƒ๊น๋‹ˆ๋‹ค. VPC๋ฅผ /16์œผ๋กœ ์žก์•„๋‘๋ฉด ์„œ๋ธŒ๋„ท์„ ์ถฉ๋ถ„ํžˆ ์ชผ๊ฐค ์ˆ˜ ์žˆ๋Š” ์—ฌ์œ ๊ฐ€ ์ƒ๊ธฐ๊ณ , ์„œ๋ธŒ๋„ท์€ /24 ์ •๋„๋กœ ๋งŒ๋“ค๋ฉด ์„œ๋ธŒ๋„ท ํ•˜๋‚˜๋‹น 251๊ฐœ์˜ ํ˜ธ์ŠคํŠธ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. AWS๋Š” ๊ฐ ์„œ๋ธŒ๋„ท์—์„œ 5๊ฐœ์˜ IP๋ฅผ ์˜ˆ์•ฝํ•˜๊ธฐ ๋•Œ๋ฌธ์— /24 ์„œ๋ธŒ๋„ท์˜ ์‹ค์ œ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ํ˜ธ์ŠคํŠธ ์ˆ˜๋Š” 256์—์„œ 5๋ฅผ ๋บ€ 251๊ฐœ์ž…๋‹ˆ๋‹ค.

    ๋ฐฉํ™”๋ฒฝ ์„ค์ •์—์„œ์˜ CIDR

    ๋ฐฉํ™”๋ฒฝ์ด๋‚˜ ๋ณด์•ˆ ๊ทธ๋ฃน ๊ทœ์น™์„ ์„ค์ •ํ•  ๋•Œ๋„ CIDR์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

    AWS ๋ณด์•ˆ ๊ทธ๋ฃน์—์„œ SSH ์ ‘์†์„ ํ—ˆ์šฉํ•  ๋•Œ ์†Œ์Šค์— 0.0.0.0/0์„ ๋„ฃ์œผ๋ฉด ๋ชจ๋“  IP์—์„œ ์ ‘์†์„ ํ—ˆ์šฉํ•œ๋‹ค๋Š” ๋œป์ž…๋‹ˆ๋‹ค. /0์€ ๋„คํŠธ์›Œํฌ ๋ถ€๋ถ„์ด 0๋น„ํŠธ์ด๋ฏ€๋กœ ๋ชจ๋“  IP๊ฐ€ ํ•ด๋‹น๋ฉ๋‹ˆ๋‹ค. ๋ณด์•ˆ์ƒ ๋งค์šฐ ์œ„ํ—˜ํ•˜๊ธฐ ๋•Œ๋ฌธ์— SSH๋Š” ๋‚ด IP๋งŒ ํ—ˆ์šฉํ•˜๋Š” ๊ฒŒ ์ข‹์Šต๋‹ˆ๋‹ค.

    ๋‚ด IP๊ฐ€ 203.0.113.50์ด๋ผ๋ฉด ์†Œ์Šค์— 203.0.113.50/32๋ฅผ ๋„ฃ์œผ๋ฉด ๋ฉ๋‹ˆ๋‹ค. /32๋Š” ์ •ํ™•ํžˆ ๊ทธ IP ํ•˜๋‚˜๋งŒ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

    ํšŒ์‚ฌ ๋„คํŠธ์›Œํฌ ์ „์ฒด์—์„œ ์ ‘์†์„ ํ—ˆ์šฉํ•˜๊ณ  ์‹ถ์œผ๋ฉด ํšŒ์‚ฌ IP ๋Œ€์—ญ์„ CIDR๋กœ ๋„ฃ์Šต๋‹ˆ๋‹ค. ํšŒ์‚ฌ๊ฐ€ 203.0.113.0๋ถ€ํ„ฐ 203.0.113.255๊นŒ์ง€์˜ IP๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค๋ฉด 203.0.113.0/24๋ฅผ ๋„ฃ์œผ๋ฉด ๋ฉ๋‹ˆ๋‹ค.

    ์ด์ „ ๊ธ€์—์„œ ๋‹ค๋ค˜๋˜ UFW ๋ฐฉํ™”๋ฒฝ์—์„œ๋„ ๋งˆ์ฐฌ๊ฐ€์ง€์ž…๋‹ˆ๋‹ค.

    sudo ufw allow from 203.0.113.0/24 to any port 22

    ์ด ๋ช…๋ น์–ด๋Š” 203.0.113.0/24 ๋Œ€์—ญ์—์„œ ์˜ค๋Š” SSH ์ ‘์†๋งŒ ํ—ˆ์šฉํ•œ๋‹ค๋Š” ๋œป์ž…๋‹ˆ๋‹ค.

    ์‚ฌ์„ค IP ๋Œ€์—ญ๊ณผ CIDR

    ์ธํ„ฐ๋„ท์—์„œ ์‚ฌ์šฉํ•˜๋Š” ๊ณต์ธ IP์™€ ๋ณ„๊ฐœ๋กœ, ๋‚ด๋ถ€ ๋„คํŠธ์›Œํฌ์—์„œ๋งŒ ์‚ฌ์šฉํ•˜๋Š” ์‚ฌ์„ค IP ๋Œ€์—ญ์ด ์ •ํ•ด์ ธ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๋Œ€์—ญ์€ CIDR๋กœ ํ‘œํ˜„ํ•˜๋ฉด ์„ธ ๊ฐ€์ง€์ž…๋‹ˆ๋‹ค.

    10.0.0.0/8์€ 10.0.0.0๋ถ€ํ„ฐ 10.255.255.255๊นŒ์ง€์˜ ๋ฒ”์œ„์ž…๋‹ˆ๋‹ค. ๊ฐ€์žฅ ๋„“์€ ์‚ฌ์„ค IP ๋Œ€์—ญ์ด๊ณ  ๋Œ€๊ทœ๋ชจ ๋„คํŠธ์›Œํฌ์—์„œ ์ฃผ๋กœ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. AWS VPC์˜ ๊ธฐ๋ณธ ์ถ”์ฒœ ๋Œ€์—ญ์ด๊ธฐ๋„ ํ•ฉ๋‹ˆ๋‹ค.

    172.16.0.0/12๋Š” 172.16.0.0๋ถ€ํ„ฐ 172.31.255.255๊นŒ์ง€์˜ ๋ฒ”์œ„์ž…๋‹ˆ๋‹ค. ์ค‘๊ฐ„ ๊ทœ๋ชจ์˜ ๋„คํŠธ์›Œํฌ์—์„œ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

    192.168.0.0/16์€ 192.168.0.0๋ถ€ํ„ฐ 192.168.255.255๊นŒ์ง€์˜ ๋ฒ”์œ„์ž…๋‹ˆ๋‹ค. ๊ฐ€์ •์ด๋‚˜ ์†Œ๊ทœ๋ชจ ์‚ฌ๋ฌด์‹ค์—์„œ ๊ฐ€์žฅ ํ”ํ•˜๊ฒŒ ์“ฐ์ด๋Š” ๋Œ€์—ญ์ž…๋‹ˆ๋‹ค. ์ง‘์—์„œ ๊ณต์œ ๊ธฐ์— ์—ฐ๊ฒฐํ•˜๋ฉด ๋ณดํ†ต 192.168.0.x๋‚˜ 192.168.1.x ์ฃผ์†Œ๋ฅผ ๋ฐ›๋Š” ๊ฒŒ ์ด ๋Œ€์—ญ์— ํ•ด๋‹นํ•ฉ๋‹ˆ๋‹ค.

    VPC๋‚˜ ๋‚ด๋ถ€ ๋„คํŠธ์›Œํฌ๋ฅผ ๊ตฌ์„ฑํ•  ๋•Œ๋Š” ๋ฐ˜๋“œ์‹œ ์ด ์‚ฌ์„ค IP ๋Œ€์—ญ ์•ˆ์—์„œ CIDR์„ ์ง€์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ณต์ธ IP ๋Œ€์—ญ์„ ์‚ฌ์„ค ๋„คํŠธ์›Œํฌ์— ์‚ฌ์šฉํ•˜๋ฉด ํ•ด๋‹น ๊ณต์ธ IP๋กœ์˜ ํ†ต์‹ ์ด ์•ˆ ๋˜๋Š” ๋ฌธ์ œ๊ฐ€ ์ƒ๊น๋‹ˆ๋‹ค.

    CIDR ๊ณ„์‚ฐ์ด ํ—ท๊ฐˆ๋ฆด ๋•Œ

    ์„œ๋ธŒ๋„ท ๊ณ„์‚ฐ์ด ์ต์ˆ™ํ•˜์ง€ ์•Š์œผ๋ฉด ์ง์ ‘ ๊ณ„์‚ฐํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒŒ ๋น ๋ฆ…๋‹ˆ๋‹ค. ํ„ฐ๋ฏธ๋„์—์„œ ipcalc๋ผ๋Š” ๋„๊ตฌ๋ฅผ ์„ค์น˜ํ•˜๋ฉด CIDR์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ๋ฐ”๋กœ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    sudo apt install ipcalc
    ipcalc 192.168.1.0/24

    ์‹คํ–‰ํ•˜๋ฉด ๋„คํŠธ์›Œํฌ ์ฃผ์†Œ, ๋ธŒ๋กœ๋“œ์บ์ŠคํŠธ ์ฃผ์†Œ, ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ํ˜ธ์ŠคํŠธ ๋ฒ”์œ„, ํ˜ธ์ŠคํŠธ ์ˆ˜๋ฅผ ์ „๋ถ€ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค. ์›น์—์„œ “CIDR calculator”๋กœ ๊ฒ€์ƒ‰ํ•ด๋„ ์˜จ๋ผ์ธ ๊ณ„์‚ฐ๊ธฐ๊ฐ€ ๋งŽ์ด ๋‚˜์˜ต๋‹ˆ๋‹ค. ์„œ๋ธŒ๋„ท ์„ค๊ณ„๋ฅผ ํ•  ๋•Œ ์ด๋Ÿฐ ๋„๊ตฌ๋กœ ๋จผ์ € ํ™•์ธํ•˜๊ณ  ์„ค์ •ํ•˜๋ฉด ์‹ค์ˆ˜๋ฅผ ์ค„์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    ๋งˆ๋ฌด๋ฆฌ

    ์„œ๋ธŒ๋„ท์€ ํ•˜๋‚˜์˜ ๋„คํŠธ์›Œํฌ๋ฅผ ์šฉ๋„์— ๋งž๊ฒŒ ์ž‘์€ ๋„คํŠธ์›Œํฌ๋กœ ๋‚˜๋ˆ„๋Š” ๊ฐœ๋…์ด๊ณ , CIDR์€ ๋„คํŠธ์›Œํฌ ๋ฒ”์œ„๋ฅผ ์Šฌ๋ž˜์‹œ์™€ ์ˆซ์ž๋กœ ๊ฐ„๊ฒฐํ•˜๊ฒŒ ํ‘œํ˜„ํ•˜๋Š” ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค. ์Šฌ๋ž˜์‹œ ๋’ค์˜ ์ˆซ์ž๊ฐ€ ํด์ˆ˜๋ก ๋„คํŠธ์›Œํฌ๊ฐ€ ์ข๊ณ  ํ˜ธ์ŠคํŠธ ์ˆ˜๊ฐ€ ์ ๊ณ , ์ˆซ์ž๊ฐ€ ์ž‘์„์ˆ˜๋ก ๋„คํŠธ์›Œํฌ๊ฐ€ ๋„“๊ณ  ํ˜ธ์ŠคํŠธ ์ˆ˜๊ฐ€ ๋งŽ์Šต๋‹ˆ๋‹ค. ํด๋ผ์šฐ๋“œ ํ™˜๊ฒฝ์—์„œ VPC์™€ ์„œ๋ธŒ๋„ท์„ ๋งŒ๋“ค ๋•Œ, ๋ฐฉํ™”๋ฒฝ ๊ทœ์น™์—์„œ IP ๋ฒ”์œ„๋ฅผ ์ง€์ •ํ•  ๋•Œ ์ด ๊ฐœ๋…์ด ๋ฐ”๋กœ ์ ์šฉ๋ฉ๋‹ˆ๋‹ค. ์ฒ˜์Œ์—๋Š” ์ด์ง„์ˆ˜ ๊ณ„์‚ฐ์ด ๋ณต์žกํ•˜๊ฒŒ ๋А๊ปด์ง€์ง€๋งŒ ์ž์ฃผ ์“ฐ๋Š” ๊ฐ’๋“ค๋งŒ ๊ธฐ์–ตํ•ด๋‘๋ฉด ์‹ค๋ฌด์—์„œ ํฌ๊ฒŒ ์–ด๋ ค์šธ ์ผ์€ ์—†์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ ๊ธ€์—์„œ๋Š” DNS ๋ ˆ์ฝ”๋“œ์˜ ์ข…๋ฅ˜์™€ ๊ฐ๊ฐ์˜ ์—ญํ• ์— ๋Œ€ํ•ด ์ž์„ธํžˆ ๋‹ค๋ค„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

  • SSL/TLS ๋™์ž‘ ์›๋ฆฌ ์‰ฝ๊ฒŒ ์ดํ•ดํ•˜๊ธฐ

    SSL/TLS ๋™์ž‘ ์›๋ฆฌ ์‰ฝ๊ฒŒ ์ดํ•ดํ•˜๊ธฐ

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

    SSL๊ณผ TLS๋Š” ๊ฐ™์€ ๊ฑด๊ฐ€ ๋‹ค๋ฅธ ๊ฑด๊ฐ€

    SSL(Secure Sockets Layer)์€ 1990๋…„๋Œ€์— ๋„ท์Šค์ผ€์ดํ”„์—์„œ ๋งŒ๋“  ์•”ํ˜ธํ™” ํ”„๋กœํ† ์ฝœ์ž…๋‹ˆ๋‹ค. SSL 3.0๊นŒ์ง€ ๋‚˜์™”๊ณ , ์ดํ›„์— ํ‘œ์ค€ํ™” ๊ณผ์ •์„ ๊ฑฐ์น˜๋ฉด์„œ ์ด๋ฆ„์ด TLS(Transport Layer Security)๋กœ ๋ฐ”๋€Œ์—ˆ์Šต๋‹ˆ๋‹ค. TLS 1.0์ด SSL 3.0์˜ ํ›„์† ๋ฒ„์ „์ด๊ณ , ํ˜„์žฌ๋Š” TLS 1.3๊นŒ์ง€ ๋‚˜์™€ ์žˆ์Šต๋‹ˆ๋‹ค.

    ์—„๋ฐ€ํžˆ ๋งํ•˜๋ฉด SSL๊ณผ TLS๋Š” ๋‹ค๋ฅธ ํ”„๋กœํ† ์ฝœ์ž…๋‹ˆ๋‹ค. SSL์€ ๋ณด์•ˆ ์ทจ์•ฝ์ ์ด ๋ฐœ๊ฒฌ๋˜์–ด์„œ ์ง€๊ธˆ์€ ์‚ฌ์šฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ํ˜„์žฌ HTTPS์—์„œ ์‹ค์ œ๋กœ ์‚ฌ์šฉ๋˜๋Š” ๊ฑด ์ „๋ถ€ TLS์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ SSL์ด๋ผ๋Š” ์ด๋ฆ„์ด ์›Œ๋‚™ ์˜ค๋ž˜ ์“ฐ์—ฌ์„œ ์•„์ง๋„ SSL ์ธ์ฆ์„œ, SSL ์ ์šฉ์ด๋ผ๋Š” ํ‘œํ˜„์„ ๊ด€ํ–‰์ ์œผ๋กœ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. Let’s Encrypt์—์„œ ๋ฐœ๊ธ‰๋ฐ›๋Š” ๊ฒƒ๋„ ์‹ค์ œ๋กœ๋Š” TLS ์ธ์ฆ์„œ์ด์ง€๋งŒ ๋‹ค๋“ค SSL ์ธ์ฆ์„œ๋ผ๊ณ  ๋ถ€๋ฆ…๋‹ˆ๋‹ค. ์ด ๊ธ€์—์„œ๋„ ํŽธ์˜์ƒ SSL/TLS๋ฅผ ํ˜ผ์šฉํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

    ์•”ํ˜ธํ™”์˜ ๊ธฐ๋ณธ ๊ฐœ๋… โ€” ๋Œ€์นญํ‚ค์™€ ๋น„๋Œ€์นญํ‚ค

    TLS์˜ ๋™์ž‘ ์›๋ฆฌ๋ฅผ ์ดํ•ดํ•˜๋ ค๋ฉด ๋จผ์ € ๋‘ ๊ฐ€์ง€ ์•”ํ˜ธํ™” ๋ฐฉ์‹์„ ์•Œ์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค.

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

    ๋น„๋Œ€์นญํ‚ค ์•”ํ˜ธํ™”๋Š” ํ‚ค๊ฐ€ ๋‘ ๊ฐœ์ž…๋‹ˆ๋‹ค. ๊ณต๊ฐœํ‚ค์™€ ๊ฐœ์ธํ‚ค๋ผ๊ณ  ๋ถ€๋ฆ…๋‹ˆ๋‹ค. ๊ณต๊ฐœํ‚ค๋กœ ์•”ํ˜ธํ™”ํ•œ ๋ฐ์ดํ„ฐ๋Š” ๊ฐœ์ธํ‚ค๋กœ๋งŒ ๋ณตํ˜ธํ™”ํ•  ์ˆ˜ ์žˆ๊ณ , ๊ฐœ์ธํ‚ค๋กœ ์•”ํ˜ธํ™”ํ•œ ๋ฐ์ดํ„ฐ๋Š” ๊ณต๊ฐœํ‚ค๋กœ๋งŒ ๋ณตํ˜ธํ™”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ณต๊ฐœํ‚ค๋Š” ๋ง ๊ทธ๋Œ€๋กœ ๋ˆ„๊ตฌ์—๊ฒŒ๋“  ๊ณต๊ฐœํ•ด๋„ ๋ฉ๋‹ˆ๋‹ค. ๋ˆ„๊ตฐ๊ฐ€ ๋‚ด ๊ณต๊ฐœํ‚ค๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์•”ํ˜ธํ™”ํ•ด์„œ ๋ณด๋‚ด๋ฉด ๋‚ด ๊ฐœ์ธํ‚ค๋ฅผ ๊ฐ€์ง„ ๋‚˜๋งŒ ๋ณตํ˜ธํ™”ํ•  ์ˆ˜ ์žˆ์œผ๋‹ˆ๊นŒ์š”. ํ‚ค ์ „๋‹ฌ ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋˜์ง€๋งŒ ๋Œ€์นญํ‚ค์— ๋น„ํ•ด ์†๋„๊ฐ€ ๋А๋ฆฌ๋‹ค๋Š” ๋‹จ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

    TLS๋Š” ์ด ๋‘ ๊ฐ€์ง€๋ฅผ ์กฐํ•ฉํ•ด์„œ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ๋น„๋Œ€์นญํ‚ค๋กœ ์•ˆ์ „ํ•˜๊ฒŒ ๋Œ€์นญํ‚ค๋ฅผ ๊ตํ™˜ํ•˜๊ณ , ์ดํ›„ ์‹ค์ œ ๋ฐ์ดํ„ฐ ์ „์†ก์€ ๋น ๋ฅธ ๋Œ€์นญํ‚ค๋กœ ์•”ํ˜ธํ™”ํ•ฉ๋‹ˆ๋‹ค. ๋‘ ๋ฐฉ์‹์˜ ์žฅ์ ๋งŒ ์ทจํ•˜๋Š” ๊ตฌ์กฐ์ž…๋‹ˆ๋‹ค.

    ์ธ์ฆ์„œ๋Š” ๋ฌด์—‡์ด๊ณ  ์™œ ํ•„์š”ํ•œ๊ฐ€

    ๋น„๋Œ€์นญํ‚ค ์•”ํ˜ธํ™”์—์„œ ๊ณต๊ฐœํ‚ค๋ฅผ ๋ฐ›์•˜๋‹ค๊ณ  ํ•ด๋ด…์‹œ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ์ด ๊ณต๊ฐœํ‚ค๊ฐ€ ์ •๋ง ๋‚ด๊ฐ€ ์ ‘์†ํ•˜๋ ค๋Š” ์„œ๋ฒ„์˜ ๊ฒƒ์ธ์ง€ ์–ด๋–ป๊ฒŒ ํ™•์‹ ํ•  ์ˆ˜ ์žˆ์„๊นŒ์š”. ์ค‘๊ฐ„์— ๊ณต๊ฒฉ์ž๊ฐ€ ์ž๊ธฐ ๊ณต๊ฐœํ‚ค๋ฅผ ๋Œ€์‹  ๋ณด๋‚ด๋†“๊ณ  ํ†ต์‹ ์„ ๊ฐ€๋กœ์ฑŒ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฑธ ์ค‘๊ฐ„์ž ๊ณต๊ฒฉ(Man-in-the-Middle Attack)์ด๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

    ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ์ธ์ฆ์„œ๊ฐ€ ์กด์žฌํ•ฉ๋‹ˆ๋‹ค. ์ธ์ฆ์„œ๋Š” “์ด ๊ณต๊ฐœํ‚ค๋Š” ์ด ๋„๋ฉ”์ธ์˜ ๊ฒƒ์ด ๋งž๋‹ค”๊ณ  ์‹ ๋ขฐํ•  ์ˆ˜ ์žˆ๋Š” ์ œ3์ž๊ฐ€ ๋ณด์ฆํ•˜๋Š” ๋ฌธ์„œ์ž…๋‹ˆ๋‹ค. ์ด ์ œ3์ž๋ฅผ ์ธ์ฆ ๊ธฐ๊ด€(CA, Certificate Authority)์ด๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค. Let’s Encrypt๊ฐ€ ๋ฐ”๋กœ CA ์ค‘ ํ•˜๋‚˜์ž…๋‹ˆ๋‹ค.

    ์ธ์ฆ์„œ ์•ˆ์—๋Š” ์—ฌ๋Ÿฌ ์ •๋ณด๊ฐ€ ๋“ค์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋„๋ฉ”์ธ ์ด๋ฆ„, ์„œ๋ฒ„์˜ ๊ณต๊ฐœํ‚ค, ์ธ์ฆ์„œ๋ฅผ ๋ฐœ๊ธ‰ํ•œ CA ์ •๋ณด, ์œ ํšจ ๊ธฐ๊ฐ„, ๊ทธ๋ฆฌ๊ณ  CA์˜ ๋””์ง€ํ„ธ ์„œ๋ช…์ด ํฌํ•จ๋ฉ๋‹ˆ๋‹ค.

    ๋””์ง€ํ„ธ ์„œ๋ช…์€ CA๊ฐ€ ์ž์‹ ์˜ ๊ฐœ์ธํ‚ค๋กœ ์ธ์ฆ์„œ ๋‚ด์šฉ์„ ์•”ํ˜ธํ™”ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋ธŒ๋ผ์šฐ์ €๋Š” CA์˜ ๊ณต๊ฐœํ‚ค๋กœ ์ด ์„œ๋ช…์„ ๋ณตํ˜ธํ™”ํ•ด์„œ ์ธ์ฆ์„œ ๋‚ด์šฉ์ด ๋ณ€์กฐ๋˜์ง€ ์•Š์•˜๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. ๋ธŒ๋ผ์šฐ์ €์—๋Š” ์‹ ๋ขฐํ•  ์ˆ˜ ์žˆ๋Š” CA๋“ค์˜ ๊ณต๊ฐœํ‚ค๊ฐ€ ๋ฏธ๋ฆฌ ๋‚ด์žฅ๋˜์–ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋ณ„๋„์˜ ๊ณผ์ • ์—†์ด ๊ฒ€์ฆ์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

    TLS ํ•ธ๋“œ์…ฐ์ดํฌ ๊ณผ์ •

    ๋ธŒ๋ผ์šฐ์ €์—์„œ https๋กœ ์‹œ์ž‘ํ•˜๋Š” ์ฃผ์†Œ์— ์ ‘์†ํ•˜๋ฉด ์‹ค์ œ ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ ๋ฐ›๊ธฐ ์ „์— TLS ํ•ธ๋“œ์…ฐ์ดํฌ๋ผ๋Š” ๊ณผ์ •์„ ๊ฑฐ์นฉ๋‹ˆ๋‹ค. ์ด ๊ณผ์ •์—์„œ ์„œ๋ฒ„์˜ ์‹ ์›์„ ํ™•์ธํ•˜๊ณ  ์•”ํ˜ธํ™”์— ์‚ฌ์šฉํ•  ๋Œ€์นญํ‚ค๋ฅผ ๊ตํ™˜ํ•ฉ๋‹ˆ๋‹ค.

    TLS 1.2 ๊ธฐ์ค€์œผ๋กœ ํ•ธ๋“œ์…ฐ์ดํฌ ๊ณผ์ •์„ ์ˆœ์„œ๋Œ€๋กœ ์„ค๋ช…ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

    ์ฒซ ๋ฒˆ์งธ ๋‹จ๊ณ„๋Š” Client Hello์ž…๋‹ˆ๋‹ค. ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์„œ๋ฒ„์— ์ ‘์† ์š”์ฒญ์„ ๋ณด๋‚ด๋ฉด์„œ ์ž์‹ ์ด ์ง€์›ํ•˜๋Š” TLS ๋ฒ„์ „, ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์•”ํ˜ธํ™” ๋ฐฉ์‹ ๋ชฉ๋ก, ๊ทธ๋ฆฌ๊ณ  ๋žœ๋คํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ํ•จ๊ป˜ ๋ณด๋ƒ…๋‹ˆ๋‹ค. ์ด ๋žœ๋ค ๋ฐ์ดํ„ฐ๋Š” ๋‚˜์ค‘์— ๋Œ€์นญํ‚ค๋ฅผ ๋งŒ๋“œ๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

    ๋‘ ๋ฒˆ์งธ ๋‹จ๊ณ„๋Š” Server Hello์ž…๋‹ˆ๋‹ค. ์„œ๋ฒ„๊ฐ€ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๋ณด๋‚ธ ๋ชฉ๋ก ์ค‘์—์„œ ์‚ฌ์šฉํ•  TLS ๋ฒ„์ „๊ณผ ์•”ํ˜ธํ™” ๋ฐฉ์‹์„ ์„ ํƒํ•˜๊ณ , ์„œ๋ฒ„ ์ชฝ ๋žœ๋ค ๋ฐ์ดํ„ฐ์™€ ํ•จ๊ป˜ ์‘๋‹ตํ•ฉ๋‹ˆ๋‹ค. ์ด๋•Œ ์„œ๋ฒ„์˜ ์ธ์ฆ์„œ๋„ ํ•จ๊ป˜ ๋ณด๋ƒ…๋‹ˆ๋‹ค.

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

    ๋„ค ๋ฒˆ์งธ ๋‹จ๊ณ„๋Š” ํ‚ค ๊ตํ™˜์ž…๋‹ˆ๋‹ค. ๋ธŒ๋ผ์šฐ์ €๊ฐ€ Pre-Master Secret์ด๋ผ๋Š” ๋žœ๋ค ๋ฐ์ดํ„ฐ๋ฅผ ์ƒ์„ฑํ•˜๊ณ , ์„œ๋ฒ„์˜ ๊ณต๊ฐœํ‚ค๋กœ ์•”ํ˜ธํ™”ํ•ด์„œ ๋ณด๋ƒ…๋‹ˆ๋‹ค. ์„œ๋ฒ„๋งŒ ์ž์‹ ์˜ ๊ฐœ์ธํ‚ค๋กœ ์ด๊ฑธ ๋ณตํ˜ธํ™”ํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ค‘๊ฐ„์— ๋ˆ„๊ฐ€ ๊ฐ€๋กœ์ฑ„๋„ ๋‚ด์šฉ์„ ์•Œ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

    ๋‹ค์„ฏ ๋ฒˆ์งธ ๋‹จ๊ณ„๋Š” ๋Œ€์นญํ‚ค ์ƒ์„ฑ์ž…๋‹ˆ๋‹ค. ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„ ์–‘์ชฝ์ด Client Hello์—์„œ ๋ณด๋‚ธ ๋žœ๋ค ๋ฐ์ดํ„ฐ, Server Hello์—์„œ ๋ณด๋‚ธ ๋žœ๋ค ๋ฐ์ดํ„ฐ, ๊ทธ๋ฆฌ๊ณ  Pre-Master Secret ์„ธ ๊ฐ€์ง€๋ฅผ ์กฐํ•ฉํ•ด์„œ ๋™์ผํ•œ ๋Œ€์นญํ‚ค(Session Key)๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค. ์ด ๋Œ€์นญํ‚ค๋Š” ๋„คํŠธ์›Œํฌ๋ฅผ ํ†ตํ•ด ์ง์ ‘ ์ „๋‹ฌ๋œ ์ ์ด ์—†๊ธฐ ๋•Œ๋ฌธ์— ์•ˆ์ „ํ•ฉ๋‹ˆ๋‹ค.

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

    TLS 1.3์—์„œ ๋‹ฌ๋ผ์ง„ ์ 

    TLS 1.2์˜ ํ•ธ๋“œ์…ฐ์ดํฌ๋Š” ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„ ์‚ฌ์ด์— ๋‘ ๋ฒˆ์˜ ์™•๋ณต(2-RTT)์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. TLS 1.3์—์„œ๋Š” ์ด๊ฑธ ํ•œ ๋ฒˆ์˜ ์™•๋ณต(1-RTT)์œผ๋กœ ์ค„์˜€์Šต๋‹ˆ๋‹ค. ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์ฒ˜์Œ ์š”์ฒญ์„ ๋ณด๋‚ผ ๋•Œ ํ‚ค ๊ตํ™˜์— ํ•„์š”ํ•œ ์ •๋ณด๋ฅผ ๋ฏธ๋ฆฌ ํฌํ•จ์‹œํ‚ค๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ํ•ธ๋“œ์…ฐ์ดํฌ๊ฐ€ ๋นจ๋ผ์กŒ๋‹ค๋Š” ๊ฑด ์‚ฌ์ดํŠธ๊ฐ€ ์ฒ˜์Œ ๋กœ๋”ฉ๋˜๋Š” ์†๋„๋„ ๋นจ๋ผ์กŒ๋‹ค๋Š” ๋œป์ž…๋‹ˆ๋‹ค.

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

    ์ด์ „์— ๊ฐ™์€ ์„œ๋ฒ„์— ์ ‘์†ํ•œ ์ ์ด ์žˆ๋‹ค๋ฉด 0-RTT ์—ฐ๊ฒฐ๋„ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ์ด์ „ ์„ธ์…˜์—์„œ ์ €์žฅํ•ด๋‘” ์ •๋ณด๋ฅผ ์‚ฌ์šฉํ•ด์„œ ํ•ธ๋“œ์…ฐ์ดํฌ ์—†์ด ๋ฐ”๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๋‚ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹ค๋งŒ 0-RTT๋Š” ์žฌ์ „์†ก ๊ณต๊ฒฉ(Replay Attack)์— ์ทจ์•ฝํ•  ์ˆ˜ ์žˆ์–ด์„œ ๋ชจ๋“  ์ƒํ™ฉ์—์„œ ๊ถŒ์žฅ๋˜๋Š” ๊ฑด ์•„๋‹™๋‹ˆ๋‹ค.

    ์ธ์ฆ์„œ ์ฒด์ธ์ด๋ž€

    ์ธ์ฆ์„œ ๊ฒ€์ฆ ๊ณผ์ •์—์„œ ํ•œ ๊ฐ€์ง€ ๋” ์•Œ์•„๋‘˜ ๊ฒŒ ์žˆ์Šต๋‹ˆ๋‹ค. ์‹ค์ œ๋กœ ์„œ๋ฒ„์˜ ์ธ์ฆ์„œ๋ฅผ ์ง์ ‘ ๋ฐœ๊ธ‰ํ•˜๋Š” ๊ฑด ๋ฃจํŠธ CA๊ฐ€ ์•„๋‹ˆ๋ผ ์ค‘๊ฐ„ CA์ธ ๊ฒฝ์šฐ๊ฐ€ ๋Œ€๋ถ€๋ถ„์ž…๋‹ˆ๋‹ค.

    ๊ตฌ์กฐ๋ฅผ ๋ณด๋ฉด ์ด๋ ‡์Šต๋‹ˆ๋‹ค. ๋ฃจํŠธ CA๊ฐ€ ์ค‘๊ฐ„ CA์—๊ฒŒ ์ธ์ฆ์„œ๋ฅผ ๋ฐœ๊ธ‰ํ•˜๊ณ , ์ค‘๊ฐ„ CA๊ฐ€ ์„œ๋ฒ„์—๊ฒŒ ์ธ์ฆ์„œ๋ฅผ ๋ฐœ๊ธ‰ํ•ฉ๋‹ˆ๋‹ค. ์„œ๋ฒ„๊ฐ€ ๋ธŒ๋ผ์šฐ์ €์— ์ธ์ฆ์„œ๋ฅผ ๋ณด๋‚ผ ๋•Œ๋Š” ์„œ๋ฒ„ ์ธ์ฆ์„œ์™€ ์ค‘๊ฐ„ CA ์ธ์ฆ์„œ๋ฅผ ํ•จ๊ป˜ ๋ณด๋ƒ…๋‹ˆ๋‹ค. ๋ธŒ๋ผ์šฐ์ €๋Š” ์„œ๋ฒ„ ์ธ์ฆ์„œ๋ฅผ ์ค‘๊ฐ„ CA์˜ ๊ณต๊ฐœํ‚ค๋กœ ๊ฒ€์ฆํ•˜๊ณ , ์ค‘๊ฐ„ CA ์ธ์ฆ์„œ๋ฅผ ๋ฃจํŠธ CA์˜ ๊ณต๊ฐœํ‚ค๋กœ ๊ฒ€์ฆํ•ฉ๋‹ˆ๋‹ค. ๋ฃจํŠธ CA์˜ ๊ณต๊ฐœํ‚ค๋Š” ๋ธŒ๋ผ์šฐ์ €์— ๋‚ด์žฅ๋˜์–ด ์žˆ์œผ๋ฏ€๋กœ ์ตœ์ข…์ ์œผ๋กœ ์‹ ๋ขฐ๊ฐ€ ํ™•๋ณด๋ฉ๋‹ˆ๋‹ค.

    ์ด๋ ‡๊ฒŒ ๋ฃจํŠธ๋ถ€ํ„ฐ ์„œ๋ฒ„๊นŒ์ง€ ์ด์–ด์ง€๋Š” ๊ตฌ์กฐ๋ฅผ ์ธ์ฆ์„œ ์ฒด์ธ(Certificate Chain)์ด๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ๊ฐ€๋” ์„œ๋ฒ„ ์„ค์ •์—์„œ ์ค‘๊ฐ„ ์ธ์ฆ์„œ๋ฅผ ๋น ๋œจ๋ฆฌ๋ฉด ์ผ๋ถ€ ๋ธŒ๋ผ์šฐ์ €์—์„œ ์ธ์ฆ์„œ ์˜ค๋ฅ˜๊ฐ€ ๋‚˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. Let’s Encrypt์™€ Certbot์„ ์‚ฌ์šฉํ•˜๋ฉด ์ด ์ฒด์ธ ์„ค์ •์„ ์ž๋™์œผ๋กœ ์ฒ˜๋ฆฌํ•ด์ฃผ๊ธฐ ๋•Œ๋ฌธ์— ์ง์ ‘ ์‹ ๊ฒฝ ์“ธ ์ผ์€ ๋งŽ์ง€ ์•Š์ง€๋งŒ, ๋ฌธ์ œ๊ฐ€ ์ƒ๊ฒผ์„ ๋•Œ ์›์ธ์„ ํŒŒ์•…ํ•˜๋ ค๋ฉด ์ด ๊ตฌ์กฐ๋ฅผ ์•Œ์•„๋‘๋Š” ๊ฒŒ ์ข‹์Šต๋‹ˆ๋‹ค.

    HTTPS์—์„œ ์‹ค์ œ๋กœ ์ผ์–ด๋‚˜๋Š” ์ผ

    ๋ธŒ๋ผ์šฐ์ €์—์„œ https://todayfunplay.com์— ์ ‘์†ํ•˜๋ฉด ์œ„์—์„œ ์„ค๋ช…ํ•œ ๋ชจ๋“  ๊ณผ์ •์ด ์ˆœ์‹๊ฐ„์— ์ผ์–ด๋‚ฉ๋‹ˆ๋‹ค. TLS ํ•ธ๋“œ์…ฐ์ดํฌ๋Š” ๋ณดํ†ต ์ˆ˜์‹ญ ๋ฐ€๋ฆฌ์ดˆ ์•ˆ์— ๋๋‚ฉ๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž ์ž…์žฅ์—์„œ๋Š” ์•„๋ฌด๊ฒƒ๋„ ๋А๋ผ์ง€ ๋ชปํ•˜์ง€๋งŒ, ๊ทธ ์งง์€ ์‹œ๊ฐ„ ์•ˆ์— ์„œ๋ฒ„์˜ ์‹ ์› ํ™•์ธ, ํ‚ค ๊ตํ™˜, ๋Œ€์นญํ‚ค ์ƒ์„ฑ์ด ์ „๋ถ€ ์ฒ˜๋ฆฌ๋ฉ๋‹ˆ๋‹ค.

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

    ๋‹ค๋งŒ ์ ‘์†ํ•˜๋ ค๋Š” ๋„๋ฉ”์ธ ์ž์ฒด๋Š” ํ•ธ๋“œ์…ฐ์ดํฌ ์ดˆ๊ธฐ ๋‹จ๊ณ„์—์„œ ํ‰๋ฌธ์œผ๋กœ ๋…ธ์ถœ๋ฉ๋‹ˆ๋‹ค. ์ด๊ฑธ SNI(Server Name Indication)๋ผ๊ณ  ํ•˜๋Š”๋ฐ, ํ•˜๋‚˜์˜ ์„œ๋ฒ„์—์„œ ์—ฌ๋Ÿฌ ๋„๋ฉ”์ธ์„ ํ˜ธ์ŠคํŒ…ํ•  ๋•Œ ์–ด๋–ค ๋„๋ฉ”์ธ์˜ ์ธ์ฆ์„œ๋ฅผ ๋ณด๋‚ด์•ผ ํ•˜๋Š”์ง€ ์•Œ๋ ค์ฃผ๋Š” ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค. ์–ด๋–ค ์‚ฌ์ดํŠธ์— ์ ‘์†ํ•˜๋Š”์ง€๋Š” ๋ณด์ด์ง€๋งŒ ๊ทธ ์•ˆ์—์„œ ์–ด๋–ค ํŽ˜์ด์ง€๋ฅผ ๋ณด๋Š”์ง€๋‚˜ ์–ด๋–ค ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ ๋ฐ›๋Š”์ง€๋Š” ๋ณด์ด์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ด ๋ถ€๋ถ„๋„ ์•”ํ˜ธํ™”ํ•˜๋Š” ECH(Encrypted Client Hello)๋ผ๋Š” ๊ธฐ์ˆ ์ด ๊ฐœ๋ฐœ ์ค‘์ž…๋‹ˆ๋‹ค.

    SSL/TLS ๊ด€๋ จ ์„œ๋ฒ„ ์„ค์ • ํ™•์ธ

    ์ด์ „ ๊ธ€์—์„œ Certbot์œผ๋กœ ์ธ์ฆ์„œ๋ฅผ ์ ์šฉํ•œ ๋’ค์— Nginx ์„ค์ • ํŒŒ์ผ์„ ๋ณด๋ฉด Certbot์ด ์ถ”๊ฐ€ํ•œ SSL ๊ด€๋ จ ์„ค์ •์ด ๋ณด์ž…๋‹ˆ๋‹ค. ssl_certificate์™€ ssl_certificate_key๊ฐ€ ์ธ์ฆ์„œ ํŒŒ์ผ๊ณผ ๊ฐœ์ธํ‚ค ํŒŒ์ผ์˜ ๊ฒฝ๋กœ์ž…๋‹ˆ๋‹ค. ssl_protocols์—๋Š” ํ—ˆ์šฉํ•  TLS ๋ฒ„์ „์ด ์ ํ˜€ ์žˆ์Šต๋‹ˆ๋‹ค.

    ๋ณด์•ˆ์„ ์œ„ํ•ด TLS 1.0๊ณผ 1.1์€ ๋น„ํ™œ์„ฑํ™”ํ•˜๊ณ  TLS 1.2์™€ 1.3๋งŒ ํ—ˆ์šฉํ•˜๋Š” ๊ฒŒ ์ข‹์Šต๋‹ˆ๋‹ค. ์ตœ์‹  Certbot์„ ์‚ฌ์šฉํ–ˆ๋‹ค๋ฉด ์ด๋ฏธ ์ด๋ ‡๊ฒŒ ์„ค์ •๋˜์–ด ์žˆ์„ ๊ฐ€๋Šฅ์„ฑ์ด ๋†’์ง€๋งŒ ํ•œ ๋ฒˆ ํ™•์ธํ•ด๋ณด๋Š” ๊ฑธ ์ถ”์ฒœํ•ฉ๋‹ˆ๋‹ค.

    ์„œ๋ฒ„์˜ SSL ์„ค์ • ์ƒํƒœ๋ฅผ ์™ธ๋ถ€์—์„œ ํ™•์ธํ•˜๊ณ  ์‹ถ์œผ๋ฉด SSL Labs์˜ SSL Server Test ์‚ฌ์ดํŠธ์—์„œ ๋„๋ฉ”์ธ์„ ์ž…๋ ฅํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. ์ธ์ฆ์„œ ์ƒํƒœ, TLS ๋ฒ„์ „, ์•”ํ˜ธํ™” ์Šค์œ„ํŠธ, ์•Œ๋ ค์ง„ ์ทจ์•ฝ์  ์—ฌ๋ถ€๋ฅผ ๋ถ„์„ํ•ด์„œ A๋ถ€ํ„ฐ F๊นŒ์ง€ ๋“ฑ๊ธ‰์„ ๋งค๊ฒจ์ค๋‹ˆ๋‹ค. A ์ด์ƒ์ด ๋‚˜์˜ค๋ฉด ์•ˆ์‹ฌํ•ด๋„ ๋ฉ๋‹ˆ๋‹ค.

    ๋งˆ๋ฌด๋ฆฌ

    SSL/TLS๋Š” ๊ฒฐ๊ตญ ๋‘ ๊ฐ€์ง€ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•ฉ๋‹ˆ๋‹ค. ์ฒซ์งธ, ํ†ต์‹ ํ•˜๋Š” ์ƒ๋Œ€๋ฐฉ์ด ์ง„์งœ ๊ทธ ์„œ๋ฒ„๊ฐ€ ๋งž๋Š”์ง€ ํ™•์ธํ•˜๋Š” ๊ฒƒ์ด๊ณ , ๋‘˜์งธ, ์ฃผ๊ณ ๋ฐ›๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ œ3์ž๊ฐ€ ๋ณผ ์ˆ˜ ์—†๋„๋ก ์•”ํ˜ธํ™”ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋น„๋Œ€์นญํ‚ค๋กœ ์•ˆ์ „ํ•˜๊ฒŒ ๋Œ€์นญํ‚ค๋ฅผ ๊ตํ™˜ํ•˜๊ณ , ๋Œ€์นญํ‚ค๋กœ ๋น ๋ฅด๊ฒŒ ๋ฐ์ดํ„ฐ๋ฅผ ์•”ํ˜ธํ™”ํ•˜๋Š” ๊ตฌ์กฐ์ž…๋‹ˆ๋‹ค. ์ธ์ฆ์„œ๋Š” ์„œ๋ฒ„์˜ ๊ณต๊ฐœํ‚ค๊ฐ€ ์ง„์งœ์ธ์ง€ CA๊ฐ€ ๋ณด์ฆํ•˜๋Š” ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค. ๊ฐœ๋…์ด ๋ณต์žกํ•˜๊ฒŒ ๋А๊ปด์งˆ ์ˆ˜ ์žˆ์ง€๋งŒ ํ•ต์‹ฌ์€ ์ด๊ฒ๋‹ˆ๋‹ค. ์ธ์ฆ์„œ๋กœ ์‹ ์›์„ ํ™•์ธํ•˜๊ณ , ํ‚ค๋ฅผ ๊ตํ™˜ํ•˜๊ณ , ์•”ํ˜ธํ™”๋œ ํ†ต์‹ ์„ ์‹œ์ž‘ํ•œ๋‹ค. ๋‹ค์Œ ๊ธ€์—์„œ๋Š” ๋„คํŠธ์›Œํฌ ๊ธฐ์ดˆ์—์„œ ์ค‘์š”ํ•œ ์„œ๋ธŒ๋„ท๊ณผ CIDR ํ‘œ๊ธฐ๋ฒ•์— ๋Œ€ํ•ด ๋‹ค๋ค„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

  • WebSocket์ด๋ž€ ๋ฌด์—‡์ธ๊ฐ€? HTTP์™€์˜ ์ฐจ์ด

    WebSocket์ด๋ž€ ๋ฌด์—‡์ธ๊ฐ€? HTTP์™€์˜ ์ฐจ์ด

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

    HTTP ํ†ต์‹ ์˜ ๊ธฐ๋ณธ ๊ตฌ์กฐ๋ถ€ํ„ฐ ๋‹ค์‹œ ๋ณด๊ธฐ

    WebSocket์„ ์ดํ•ดํ•˜๋ ค๋ฉด ๋จผ์ € HTTP๊ฐ€ ์–ด๋–ค ๋ฐฉ์‹์œผ๋กœ ๋™์ž‘ํ•˜๋Š”์ง€๋ฅผ ๋‹ค์‹œ ์งš์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

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

    ์ด ๋ฐฉ์‹์˜ ํ•ต์‹ฌ์ ์ธ ํŠน์ง•์€ ์„œ๋ฒ„๊ฐ€ ๋จผ์ € ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๋‚ผ ์ˆ˜ ์—†๋‹ค๋Š” ์ ์ž…๋‹ˆ๋‹ค. ์„œ๋ฒ„ ์ชฝ์—์„œ ์ƒˆ๋กœ์šด ๋ฐ์ดํ„ฐ๊ฐ€ ์ƒ๊ฒจ๋„ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์š”์ฒญํ•˜์ง€ ์•Š๋Š” ํ•œ ์ „๋‹ฌํ•  ๋ฐฉ๋ฒ•์ด ์—†์Šต๋‹ˆ๋‹ค. ํ•ญ์ƒ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๋จผ์ € ๋ฌผ์–ด๋ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

    ๋ธ”๋กœ๊ทธ ๊ธ€์„ ์ฝ๊ฑฐ๋‚˜ ์‡ผํ•‘๋ชฐ์—์„œ ์ƒํ’ˆ์„ ์กฐํšŒํ•˜๋Š” ์ •๋„์˜ ์„œ๋น„์Šค์—์„œ๋Š” ์ด๊ฒŒ ์•„๋ฌด ๋ฌธ์ œ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž๊ฐ€ ํด๋ฆญํ•  ๋•Œ๋งˆ๋‹ค ์ƒˆ ํŽ˜์ด์ง€๋ฅผ ์š”์ฒญํ•˜๋ฉด ๋˜๋‹ˆ๊นŒ์š”. ํ•˜์ง€๋งŒ ์‹ค์‹œ๊ฐ„์œผ๋กœ ๋ฐ์ดํ„ฐ๊ฐ€ ๊ณ„์† ๋ฐ”๋€Œ๋Š” ์„œ๋น„์Šค์—์„œ๋Š” ์ด ๋ฐฉ์‹์ด ํ•œ๊ณ„์— ๋ถ€๋”ชํž™๋‹ˆ๋‹ค.

    HTTP๋กœ ์‹ค์‹œ๊ฐ„์„ ํ‰๋‚ด๋‚ด๋Š” ๋ฐฉ๋ฒ•๊ณผ ๊ทธ ํ•œ๊ณ„

    WebSocket์ด ๋‚˜์˜ค๊ธฐ ์ „์—๋„ ์‹ค์‹œ๊ฐ„ ๋น„์Šทํ•œ ๊ฒฝํ—˜์„ ๋งŒ๋“ค๋ ค๋Š” ์‹œ๋„๊ฐ€ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

    ๊ฐ€์žฅ ๋‹จ์ˆœํ•œ ๋ฐฉ๋ฒ•์€ ํด๋ง(Polling)์ž…๋‹ˆ๋‹ค. ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์ผ์ • ๊ฐ„๊ฒฉ์œผ๋กœ ์„œ๋ฒ„์— ๋ฐ˜๋ณต ์š”์ฒญ์„ ๋ณด๋‚ด๋Š” ๊ฒ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด 3์ดˆ๋งˆ๋‹ค “์ƒˆ ๋ฉ”์‹œ์ง€ ์žˆ์–ด?”๋ผ๊ณ  ๋ฌผ์–ด๋ณด๋Š” ์‹์ž…๋‹ˆ๋‹ค. ๊ตฌํ˜„์€ ๊ฐ„๋‹จํ•˜์ง€๋งŒ ๋ฌธ์ œ๊ฐ€ ๋งŽ์Šต๋‹ˆ๋‹ค. ์ƒˆ ๋ฐ์ดํ„ฐ๊ฐ€ ์—†์–ด๋„ ๊ณ„์† ์š”์ฒญ์„ ๋ณด๋‚ด๊ธฐ ๋•Œ๋ฌธ์— ์„œ๋ฒ„์— ๋ถˆํ•„์š”ํ•œ ๋ถ€ํ•˜๊ฐ€ ๊ฑธ๋ฆฝ๋‹ˆ๋‹ค. 3์ดˆ ๊ฐ„๊ฒฉ์ด๋ฉด ์‹ค์‹œ๊ฐ„์ด๋ผ๊ณ  ๋ณด๊ธฐ๋„ ์–ด๋ ต์Šต๋‹ˆ๋‹ค. ๊ฐ„๊ฒฉ์„ ์งง๊ฒŒ ํ•˜๋ฉด ์„œ๋ฒ„ ๋ถ€๋‹ด์ด ๋” ์ปค์ง‘๋‹ˆ๋‹ค.

    ๋กฑ ํด๋ง(Long Polling)์ด๋ผ๋Š” ๊ฐœ์„ ๋œ ๋ฐฉ์‹๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์š”์ฒญ์„ ๋ณด๋‚ด๋ฉด ์„œ๋ฒ„๊ฐ€ ๋ฐ”๋กœ ์‘๋‹ตํ•˜์ง€ ์•Š๊ณ  ์ƒˆ ๋ฐ์ดํ„ฐ๊ฐ€ ์ƒ๊ธธ ๋•Œ๊นŒ์ง€ ์—ฐ๊ฒฐ์„ ์œ ์ง€ํ•ฉ๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ๊ฐ€ ์ƒ๊ธฐ๋ฉด ๊ทธ๋•Œ ์‘๋‹ต์„ ๋ณด๋‚ด๊ณ , ํด๋ผ์ด์–ธํŠธ๋Š” ์‘๋‹ต์„ ๋ฐ›์ž๋งˆ์ž ๋‹ค์‹œ ์š”์ฒญ์„ ๊ฒ๋‹ˆ๋‹ค. ํด๋ง๋ณด๋‹ค๋Š” ๋‚ซ์ง€๋งŒ ๋งค๋ฒˆ ์—ฐ๊ฒฐ์„ ์ƒˆ๋กœ ๋งบ์–ด์•ผ ํ•˜๊ณ , HTTP ํ—ค๋”๊ฐ€ ๊ณ„์† ์˜ค๊ฐ€๊ธฐ ๋•Œ๋ฌธ์— ์—ฌ์ „ํžˆ ๋น„ํšจ์œจ์ ์ž…๋‹ˆ๋‹ค.

    ์ด๋Ÿฐ ๋ฐฉ๋ฒ•๋“ค์ด ๊ทผ๋ณธ์ ์œผ๋กœ ๋น„ํšจ์œจ์ ์ธ ์ด์œ ๋Š” HTTP ์ž์ฒด๊ฐ€ ๋‹จ๋ฐฉํ–ฅ ํ†ต์‹ ์„ ์ „์ œ๋กœ ์„ค๊ณ„๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ์–‘๋ฐฉํ–ฅ ์‹ค์‹œ๊ฐ„ ํ†ต์‹ ์„ ํ•˜๋ ค๋ฉด ์•„์˜ˆ ๋‹ค๋ฅธ ๋ฐฉ์‹์ด ํ•„์š”ํ–ˆ๊ณ , ๊ทธ๋ž˜์„œ ๋‚˜์˜จ ๊ฒŒ WebSocket์ž…๋‹ˆ๋‹ค.

    WebSocket์ด๋ž€ ๋ฌด์—‡์ธ๊ฐ€

    WebSocket์€ ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„ ์‚ฌ์ด์— ํ•˜๋‚˜์˜ ์—ฐ๊ฒฐ์„ ์—ด์–ด๋‘๊ณ , ๊ทธ ์—ฐ๊ฒฐ์„ ํ†ตํ•ด ์–‘์ชฝ์ด ์ž์œ ๋กญ๊ฒŒ ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ ๋ฐ›์„ ์ˆ˜ ์žˆ๋Š” ํ†ต์‹  ํ”„๋กœํ† ์ฝœ์ž…๋‹ˆ๋‹ค.

    HTTP๊ฐ€ ํŽธ์ง€๋ฅผ ์ฃผ๊ณ ๋ฐ›๋Š” ๊ฒƒ์ด๋ผ๋ฉด, WebSocket์€ ์ „ํ™” ํ†ตํ™”์— ๊ฐ€๊น์Šต๋‹ˆ๋‹ค. ํŽธ์ง€๋Š” ํ•œ์ชฝ์ด ๋ณด๋‚ด๋ฉด ์ƒ๋Œ€๋ฐฉ์ด ์ฝ๊ณ  ๋‹ต์žฅ์„ ์จ์„œ ๋ณด๋‚ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋งค๋ฒˆ ์ƒˆ ํŽธ์ง€๋ฅผ ์จ์•ผ ํ•˜๊ณ , ์ƒ๋Œ€๋ฐฉ์ด ๋จผ์ € ๋ง์„ ๊ฑธ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๋ฐ˜๋ฉด์— ์ „ํ™”๋Š” ํ•œ๋ฒˆ ์—ฐ๊ฒฐ๋˜๋ฉด ์–‘์ชฝ์ด ์–ธ์ œ๋“  ๋งํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ƒ๋Œ€๋ฐฉ์ด ํ•  ๋ง์ด ์ƒ๊ธฐ๋ฉด ๋ฐ”๋กœ ์ „๋‹ฌํ•  ์ˆ˜ ์žˆ๊ณ , ๋Œ€ํ™”๊ฐ€ ๋๋‚  ๋•Œ๊นŒ์ง€ ์—ฐ๊ฒฐ์ด ์œ ์ง€๋ฉ๋‹ˆ๋‹ค.

    WebSocket๋„ ๋งˆ์ฐฌ๊ฐ€์ง€์ž…๋‹ˆ๋‹ค. ์ฒ˜์Œ์— ์—ฐ๊ฒฐ์„ ๋งบ์œผ๋ฉด ๊ทธ ์—ฐ๊ฒฐ์ด ๊ณ„์† ์œ ์ง€๋˜๊ณ , ์„œ๋ฒ„๋„ ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ๋จผ์ € ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๋‚ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์š”์ฒญํ•˜์ง€ ์•Š์•„๋„ ์„œ๋ฒ„์—์„œ ์ƒˆ ๋ฐ์ดํ„ฐ๊ฐ€ ์ƒ๊ธฐ๋ฉด ์ฆ‰์‹œ ๋ฐ€์–ด๋„ฃ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฑธ ์ „์ด์ค‘ ํ†ต์‹ (Full-Duplex)์ด๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

    WebSocket ์—ฐ๊ฒฐ์ด ๋งบ์–ด์ง€๋Š” ๊ณผ์ •

    WebSocket ์—ฐ๊ฒฐ์€ ์ฒ˜์Œ์— HTTP๋ฅผ ํ†ตํ•ด ์‹œ์ž‘๋ฉ๋‹ˆ๋‹ค. ์ด ๊ณผ์ •์„ ํ•ธ๋“œ์…ฐ์ดํฌ(Handshake)๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

    ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์„œ๋ฒ„์— HTTP ์š”์ฒญ์„ ๋ณด๋‚ด๋ฉด์„œ “์ด ์—ฐ๊ฒฐ์„ WebSocket์œผ๋กœ ์—…๊ทธ๋ ˆ์ด๋“œํ•˜๊ณ  ์‹ถ๋‹ค”๋Š” ํ—ค๋”๋ฅผ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค. ์„œ๋ฒ„๊ฐ€ WebSocket์„ ์ง€์›ํ•˜๋ฉด “์ข‹๋‹ค, ์—…๊ทธ๋ ˆ์ด๋“œํ•˜์ž”๋ผ๊ณ  ์‘๋‹ตํ•ฉ๋‹ˆ๋‹ค. ์ด ์‘๋‹ต์˜ ์ƒํƒœ ์ฝ”๋“œ๋Š” 101 Switching Protocols์ž…๋‹ˆ๋‹ค. ์ด ์ˆœ๊ฐ„๋ถ€ํ„ฐ HTTP ์—ฐ๊ฒฐ์ด WebSocket ์—ฐ๊ฒฐ๋กœ ์ „ํ™˜๋˜๊ณ , ์ดํ›„๋ถ€ํ„ฐ๋Š” HTTP๊ฐ€ ์•„๋‹Œ WebSocket ํ”„๋กœํ† ์ฝœ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ ๋ฐ›์Šต๋‹ˆ๋‹ค.

    ํ•ธ๋“œ์…ฐ์ดํฌ ์š”์ฒญ์„ ๊ฐ„๋‹จํ•˜๊ฒŒ ๋ณด๋ฉด ์ด๋Ÿฐ ํ˜•ํƒœ์ž…๋‹ˆ๋‹ค.

    GET /chat HTTP/1.1
    Host: today-play.com
    Upgrade: websocket
    Connection: Upgrade
    Sec-WebSocket-Key: dGhlIHNhbXBsZSBub25jZQ==
    Sec-WebSocket-Version: 13

    Upgrade: websocket์ด๋ผ๋Š” ํ—ค๋”๊ฐ€ ํ•ต์‹ฌ์ž…๋‹ˆ๋‹ค. ์„œ๋ฒ„๊ฐ€ ์ด๊ฑธ ๋ฐ›์•„๋“ค์ด๋ฉด ์—ฐ๊ฒฐ์ด ์ „ํ™˜๋ฉ๋‹ˆ๋‹ค. ์ฒ˜์Œ์— HTTP๋กœ ์‹œ์ž‘ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๊ธฐ์กด์˜ ์›น ์ธํ”„๋ผ(๋ฐฉํ™”๋ฒฝ, ํ”„๋ก์‹œ ๋“ฑ)๋ฅผ ๊ทธ๋Œ€๋กœ ํ†ต๊ณผํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์žฅ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ํฌํŠธ๋„ HTTP์™€ ๊ฐ™์€ 80๋ฒˆ, HTTPS์™€ ๊ฐ™์€ 443๋ฒˆ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. WebSocket์˜ URL ์Šคํ‚ด์€ ws์™€ wss์ธ๋ฐ, ws๋Š” HTTP์— ๋Œ€์‘ํ•˜๊ณ  wss๋Š” HTTPS์— ๋Œ€์‘ํ•ฉ๋‹ˆ๋‹ค.

    HTTP์™€ WebSocket์˜ ์ฐจ์ด ์ •๋ฆฌ

    ๋‘ ํ”„๋กœํ† ์ฝœ์˜ ์ฐจ์ด๋ฅผ ํ•ญ๋ชฉ๋ณ„๋กœ ๋น„๊ตํ•˜๋ฉด ์ด๋ ‡์Šต๋‹ˆ๋‹ค.

    ํ†ต์‹  ๋ฐฉํ–ฅ์—์„œ HTTP๋Š” ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์š”์ฒญํ•ด์•ผ ์„œ๋ฒ„๊ฐ€ ์‘๋‹ตํ•˜๋Š” ๋‹จ๋ฐฉํ–ฅ ๊ตฌ์กฐ์ž…๋‹ˆ๋‹ค. WebSocket์€ ์—ฐ๊ฒฐ์ด ๋งบ์–ด์ง„ ํ›„ ์–‘์ชฝ์ด ์–ธ์ œ๋“  ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๋‚ผ ์ˆ˜ ์žˆ๋Š” ์–‘๋ฐฉํ–ฅ ๊ตฌ์กฐ์ž…๋‹ˆ๋‹ค.

    ์—ฐ๊ฒฐ ์œ ์ง€์—์„œ HTTP๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ์š”์ฒญ-์‘๋‹ต์ด ๋๋‚˜๋ฉด ์—ฐ๊ฒฐ์ด ์ข…๋ฃŒ๋ฉ๋‹ˆ๋‹ค. keep-alive๋กœ ์—ฐ๊ฒฐ์„ ์žฌ์‚ฌ์šฉํ•  ์ˆ˜๋Š” ์žˆ์ง€๋งŒ ํ†ต์‹  ๋ฐฉ์‹ ์ž์ฒด๊ฐ€ ๋ฐ”๋€Œ๋Š” ๊ฑด ์•„๋‹™๋‹ˆ๋‹ค. WebSocket์€ ํ•œ๋ฒˆ ์—ฐ๊ฒฐ๋˜๋ฉด ๋ช…์‹œ์ ์œผ๋กœ ๋Š๊ธฐ ์ „๊นŒ์ง€ ๊ณ„์† ์œ ์ง€๋ฉ๋‹ˆ๋‹ค.

    ์˜ค๋ฒ„ํ—ค๋“œ์—์„œ HTTP๋Š” ๋งค ์š”์ฒญ๋งˆ๋‹ค ํ—ค๋” ์ •๋ณด๊ฐ€ ํฌํ•จ๋ฉ๋‹ˆ๋‹ค. ์ฟ ํ‚ค, ์ธ์ฆ ์ •๋ณด, ์ฝ˜ํ…์ธ  ํƒ€์ž… ๊ฐ™์€ ํ—ค๋”๊ฐ€ ๋งค๋ฒˆ ์˜ค๊ฐ‘๋‹ˆ๋‹ค. ๊ฐ„๋‹จํ•œ ๋ฐ์ดํ„ฐ ํ•˜๋‚˜ ๋ณด๋‚ด๋Š”๋ฐ ํ—ค๋”๊ฐ€ ์ˆ˜๋ฐฑ ๋ฐ”์ดํŠธ์—์„œ ์ˆ˜ ํ‚ฌ๋กœ๋ฐ”์ดํŠธ๊นŒ์ง€ ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. WebSocket์€ ํ•ธ๋“œ์…ฐ์ดํฌ ์ดํ›„์—๋Š” ํ”„๋ ˆ์ž„ ๋‹จ์œ„๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๋‚ด๋Š”๋ฐ ํ”„๋ ˆ์ž„ ํ—ค๋”๊ฐ€ 2๋ฐ”์ดํŠธ์—์„œ 14๋ฐ”์ดํŠธ ์ •๋„๋กœ ๋งค์šฐ ์ž‘์Šต๋‹ˆ๋‹ค. ์ž‘์€ ๋ฐ์ดํ„ฐ๋ฅผ ์ž์ฃผ ์ฃผ๊ณ ๋ฐ›์•„์•ผ ํ•˜๋Š” ์ƒํ™ฉ์—์„œ ํšจ์œจ ์ฐจ์ด๊ฐ€ ํฝ๋‹ˆ๋‹ค.

    ์‹ค์‹œ๊ฐ„์„ฑ์—์„œ HTTP ํด๋ง์€ ์š”์ฒญ ๊ฐ„๊ฒฉ๋งŒํผ์˜ ์ง€์—ฐ์ด ์ƒ๊น๋‹ˆ๋‹ค. WebSocket์€ ๋ฐ์ดํ„ฐ๊ฐ€ ์ƒ๊ธฐ๋Š” ์ฆ‰์‹œ ์ „๋‹ฌ๋˜๊ธฐ ๋•Œ๋ฌธ์— ์‚ฌ์‹ค์ƒ ์ง€์—ฐ์ด ์—†์Šต๋‹ˆ๋‹ค.

    WebSocket์„ ์‚ฌ์šฉํ•˜๋Š” ๋Œ€ํ‘œ์ ์ธ ์„œ๋น„์Šค๋“ค

    ์ฑ„ํŒ… ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ๊ฐ€์žฅ ๋Œ€ํ‘œ์ ์ž…๋‹ˆ๋‹ค. ์นด์นด์˜คํ†ก์ด๋‚˜ ์Šฌ๋ž™ ๊ฐ™์€ ๋ฉ”์‹ ์ €์—์„œ ๋ฉ”์‹œ์ง€๊ฐ€ ์‹ค์‹œ๊ฐ„์œผ๋กœ ์˜ค๊ฐ€๋Š” ๊ฑด WebSocket ๋•๋ถ„์ž…๋‹ˆ๋‹ค. ์ƒ๋Œ€๋ฐฉ์ด ๋ฉ”์‹œ์ง€๋ฅผ ๋ณด๋‚ด๋ฉด ์„œ๋ฒ„๊ฐ€ ๋ฐ”๋กœ ๋‚ด ํด๋ผ์ด์–ธํŠธ์— ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค.

    ์‹ค์‹œ๊ฐ„ ์ฃผ์‹ ์ฐจํŠธ๋‚˜ ๊ฐ€์ƒํ™”ํ ๊ฑฐ๋ž˜์†Œ๋„ WebSocket์„ ๋งŽ์ด ์”๋‹ˆ๋‹ค. ๊ฐ€๊ฒฉ์ด ๋ฐ€๋ฆฌ์ดˆ ๋‹จ์œ„๋กœ ๋ณ€ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ํด๋ง์œผ๋กœ๋Š” ๋”ฐ๋ผ๊ฐˆ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์„œ๋ฒ„์—์„œ ๊ฐ€๊ฒฉ์ด ๋ณ€ํ•  ๋•Œ๋งˆ๋‹ค ์—ฐ๊ฒฐ๋œ ๋ชจ๋“  ํด๋ผ์ด์–ธํŠธ์— ์ฆ‰์‹œ ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค.

    ์˜จ๋ผ์ธ ๊ฒŒ์ž„์—์„œ ํ”Œ๋ ˆ์ด์–ด๋“ค์˜ ์œ„์น˜๋‚˜ ํ–‰๋™์„ ์‹ค์‹œ๊ฐ„์œผ๋กœ ๋™๊ธฐํ™”ํ•˜๋Š” ๋ฐ๋„ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ํ˜‘์—… ๋„๊ตฌ์—์„œ ์—ฌ๋Ÿฌ ์‚ฌ๋žŒ์ด ๋™์‹œ์— ๋ฌธ์„œ๋ฅผ ํŽธ์ง‘ํ•  ๋•Œ ๋‹ค๋ฅธ ์‚ฌ๋žŒ์˜ ์ปค์„œ ์œ„์น˜๋‚˜ ์ˆ˜์ • ๋‚ด์šฉ์ด ๋ฐ”๋กœ ๋ฐ˜์˜๋˜๋Š” ๊ฒƒ๋„ WebSocket ๊ธฐ๋ฐ˜์ธ ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์Šต๋‹ˆ๋‹ค.

    ์•Œ๋ฆผ ์‹œ์Šคํ…œ์—๋„ ์ ํ•ฉํ•ฉ๋‹ˆ๋‹ค. ์ƒˆ ๋Œ“๊ธ€์ด ๋‹ฌ๋ ธ๊ฑฐ๋‚˜ ์ฃผ๋ฌธ ์ƒํƒœ๊ฐ€ ๋ฐ”๋€Œ์—ˆ์„ ๋•Œ ์„œ๋ฒ„๊ฐ€ ๋จผ์ € ํด๋ผ์ด์–ธํŠธ์— ์•Œ๋ ค์ค„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    ๊ฐ„๋‹จํ•œ WebSocket ์ฝ”๋“œ ์˜ˆ์‹œ

    JavaScript์—์„œ WebSocket์„ ์‚ฌ์šฉํ•˜๋Š” ์ฝ”๋“œ๋Š” ์ƒ๊ฐ๋ณด๋‹ค ๊ฐ„๋‹จํ•ฉ๋‹ˆ๋‹ค.

    ํด๋ผ์ด์–ธํŠธ ์ชฝ ์ฝ”๋“œ์ž…๋‹ˆ๋‹ค.

    javascript

    const socket = new WebSocket('wss://today-play.com/chat');
    
    socket.onopen = function() {
        console.log('์„œ๋ฒ„์— ์—ฐ๊ฒฐ๋˜์—ˆ์Šต๋‹ˆ๋‹ค');
        socket.send('์•ˆ๋…•ํ•˜์„ธ์š”');
    };
    
    socket.onmessage = function(event) {
        console.log('์„œ๋ฒ„์—์„œ ๋ฐ›์€ ๋ฉ”์‹œ์ง€:', event.data);
    };
    
    socket.onclose = function() {
        console.log('์—ฐ๊ฒฐ์ด ์ข…๋ฃŒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค');
    };

    new WebSocket์œผ๋กœ ์—ฐ๊ฒฐ์„ ๋งบ๊ณ , onopen์—์„œ ์—ฐ๊ฒฐ ์„ฑ๊ณต ์‹œ ์ฒ˜๋ฆฌ๋ฅผ ํ•˜๊ณ , send๋กœ ์„œ๋ฒ„์— ๋ฉ”์‹œ์ง€๋ฅผ ๋ณด๋‚ด๊ณ , onmessage์—์„œ ์„œ๋ฒ„๊ฐ€ ๋ณด๋‚ธ ๋ฉ”์‹œ์ง€๋ฅผ ๋ฐ›์Šต๋‹ˆ๋‹ค. HTTP์ฒ˜๋Ÿผ ๋งค๋ฒˆ ์š”์ฒญ์„ ๋ณด๋‚ด๋Š” ๊ฒŒ ์•„๋‹ˆ๋ผ ์ด๋ฒคํŠธ ๊ธฐ๋ฐ˜์œผ๋กœ ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค. ์„œ๋ฒ„์—์„œ ๋ฉ”์‹œ์ง€๊ฐ€ ์˜ค๋ฉด onmessage๊ฐ€ ์ž๋™์œผ๋กœ ํ˜ธ์ถœ๋ฉ๋‹ˆ๋‹ค.

    ์„œ๋ฒ„ ์ชฝ์€ Node.js ํ™˜๊ฒฝ์—์„œ ws ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ด๋Ÿฐ ์‹์ž…๋‹ˆ๋‹ค.

    javascript

    const WebSocket = require('ws');
    const server = new WebSocket.Server({ port: 8080 });
    
    server.on('connection', function(socket) {
        console.log('ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์—ฐ๊ฒฐ๋˜์—ˆ์Šต๋‹ˆ๋‹ค');
    
        socket.on('message', function(message) {
            console.log('๋ฐ›์€ ๋ฉ”์‹œ์ง€:', message);
            socket.send('๋ฉ”์‹œ์ง€๋ฅผ ๋ฐ›์•˜์Šต๋‹ˆ๋‹ค: ' + message);
        });
    
        socket.on('close', function() {
            console.log('ํด๋ผ์ด์–ธํŠธ ์—ฐ๊ฒฐ์ด ์ข…๋ฃŒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค');
        });
    });

    ์„œ๋ฒ„๋„ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ์ด๋ฒคํŠธ ๊ธฐ๋ฐ˜์ž…๋‹ˆ๋‹ค. ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์—ฐ๊ฒฐ๋˜๋ฉด connection ์ด๋ฒคํŠธ๊ฐ€ ๋ฐœ์ƒํ•˜๊ณ , ๋ฉ”์‹œ์ง€๊ฐ€ ์˜ค๋ฉด message ์ด๋ฒคํŠธ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. socket.send๋กœ ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ์–ธ์ œ๋“  ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๋‚ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    WebSocket์„ ์‚ฌ์šฉํ•  ๋•Œ ์ฃผ์˜ํ•  ์ 

    WebSocket ์—ฐ๊ฒฐ์€ ๊ณ„์† ์œ ์ง€๋˜๊ธฐ ๋•Œ๋ฌธ์— ์„œ๋ฒ„ ์ž…์žฅ์—์„œ๋Š” ์—ฐ๊ฒฐ๋œ ํด๋ผ์ด์–ธํŠธ ์ˆ˜๋งŒํผ ๋ฆฌ์†Œ์Šค๋ฅผ ์žก๊ณ  ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋™์‹œ ์ ‘์†์ž๊ฐ€ ๋งŽ์•„์ง€๋ฉด ์„œ๋ฒ„์˜ ๋ฉ”๋ชจ๋ฆฌ์™€ ํŒŒ์ผ ๋””์Šคํฌ๋ฆฝํ„ฐ๊ฐ€ ๋ถ€์กฑํ•ด์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. HTTP๋Š” ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•˜๊ณ  ๋ฐ”๋กœ ์—ฐ๊ฒฐ์„ ํ•ด์ œํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ™์€ ์ˆ˜์˜ ์‚ฌ์šฉ์ž๋ฅผ ์ฒ˜๋ฆฌํ•  ๋•Œ WebSocket์ด ๋” ๋งŽ์€ ๋ฆฌ์†Œ์Šค๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

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

    ๋กœ๋“œ ๋ฐธ๋Ÿฐ์„œ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ํ™˜๊ฒฝ์—์„œ๋Š” WebSocket ์—ฐ๊ฒฐ์ด ํŠน์ • ์„œ๋ฒ„์— ๊ณ ์ •๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. HTTP๋Š” ์š”์ฒญ๋งˆ๋‹ค ๋‹ค๋ฅธ ์„œ๋ฒ„๋กœ ๋ณด๋‚ด๋„ ์ƒ๊ด€์—†์ง€๋งŒ, WebSocket์€ ์—ฐ๊ฒฐ์ด ์œ ์ง€๋˜๋Š” ๋™์•ˆ ๊ฐ™์€ ์„œ๋ฒ„์™€ ํ†ต์‹ ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฑธ ์Šคํ‹ฐํ‚ค ์„ธ์…˜(Sticky Session)์ด๋ผ๊ณ  ํ•˜๋Š”๋ฐ, ๋กœ๋“œ ๋ฐธ๋Ÿฐ์„œ ์„ค์ •์—์„œ ๋ณ„๋„๋กœ ์ฒ˜๋ฆฌํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

    ๋ณด์•ˆ ์ธก๋ฉด์—์„œ๋Š” ๋ฐ˜๋“œ์‹œ wss๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ws๋Š” ์•”ํ˜ธํ™”๋˜์ง€ ์•Š์€ ์—ฐ๊ฒฐ์ด๊ณ  wss๋Š” TLS๋กœ ์•”ํ˜ธํ™”๋œ ์—ฐ๊ฒฐ์ž…๋‹ˆ๋‹ค. HTTPS๋ฅผ ์ ์šฉํ•œ ์‚ฌ์ดํŠธ์—์„œ ws๋กœ ์—ฐ๊ฒฐํ•˜๋ ค๊ณ  ํ•˜๋ฉด ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์ฐจ๋‹จํ•ฉ๋‹ˆ๋‹ค.

    WebSocket ๋Œ€์‹  ์“ธ ์ˆ˜ ์žˆ๋Š” ๋Œ€์•ˆ๋“ค

    ๋ชจ๋“  ์‹ค์‹œ๊ฐ„ ํ†ต์‹ ์— WebSocket์ด ํ•„์š”ํ•œ ๊ฑด ์•„๋‹™๋‹ˆ๋‹ค.

    SSE(Server-Sent Events)๋Š” ์„œ๋ฒ„์—์„œ ํด๋ผ์ด์–ธํŠธ๋กœ ๋‹จ๋ฐฉํ–ฅ์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๋‚ด๋Š” ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค. ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์„œ๋ฒ„์— ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๋‚ผ ํ•„์š” ์—†์ด ์„œ๋ฒ„์˜ ์—…๋ฐ์ดํŠธ๋งŒ ๋ฐ›์œผ๋ฉด ๋˜๋Š” ๊ฒฝ์šฐ์— ์ ํ•ฉํ•ฉ๋‹ˆ๋‹ค. ๋‰ด์Šค ํ”ผ๋“œ ์—…๋ฐ์ดํŠธ๋‚˜ ์‹ค์‹œ๊ฐ„ ์•Œ๋ฆผ ๊ฐ™์€ ๋ฐ์— ์“ธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. HTTP ์œ„์—์„œ ๋™์ž‘ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ณ„๋„์˜ ํ”„๋กœํ† ์ฝœ์ด ํ•„์š” ์—†๊ณ  ๊ตฌํ˜„์ด WebSocket๋ณด๋‹ค ๊ฐ„๋‹จํ•ฉ๋‹ˆ๋‹ค.

    Socket.IO๋Š” WebSocket์„ ๊ฐ์‹ผ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ž…๋‹ˆ๋‹ค. WebSocket์„ ๊ธฐ๋ณธ์œผ๋กœ ์‚ฌ์šฉํ•˜๋˜, WebSocket์ด ์•ˆ ๋˜๋Š” ํ™˜๊ฒฝ์—์„œ๋Š” ์ž๋™์œผ๋กœ ํด๋ง์œผ๋กœ ์ „ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ์ž๋™ ์žฌ์—ฐ๊ฒฐ, ๋ฃธ ๊ธฐ๋Šฅ, ๋ธŒ๋กœ๋“œ์บ์ŠคํŠธ ๊ฐ™์€ ํŽธ์˜ ๊ธฐ๋Šฅ์ด ๋‚ด์žฅ๋˜์–ด ์žˆ์–ด์„œ ์‹ค๋ฌด์—์„œ ๋งŽ์ด ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ๋‹ค๋งŒ Socket.IO๋Š” ์ˆœ์ˆ˜ WebSocket๊ณผ ํ˜ธํ™˜๋˜์ง€ ์•Š๋Š” ์ž์ฒด ํ”„๋กœํ† ์ฝœ์„ ์‚ฌ์šฉํ•œ๋‹ค๋Š” ์ ์„ ์•Œ์•„๋‘ฌ์•ผ ํ•ฉ๋‹ˆ๋‹ค.

    ๊ทธ๋Ÿฌ๋‹ˆ๊นŒ ์–‘๋ฐฉํ–ฅ ์‹ค์‹œ๊ฐ„ ํ†ต์‹ ์ด ํ•„์š”ํ•˜๋ฉด WebSocket, ์„œ๋ฒ„์—์„œ ํด๋ผ์ด์–ธํŠธ๋กœ์˜ ๋‹จ๋ฐฉํ–ฅ ํ‘ธ์‹œ๋งŒ ํ•„์š”ํ•˜๋ฉด SSE, WebSocket์— ํŽธ์˜ ๊ธฐ๋Šฅ๊นŒ์ง€ ํ•„์š”ํ•˜๋ฉด Socket.IO๋ฅผ ๊ฒ€ํ† ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

    ๋งˆ๋ฌด๋ฆฌ

    WebSocket์€ HTTP์˜ ์š”์ฒญ-์‘๋‹ต ๊ตฌ์กฐ๋กœ๋Š” ํ•ด๊ฒฐํ•  ์ˆ˜ ์—†๋Š” ์‹ค์‹œ๊ฐ„ ์–‘๋ฐฉํ–ฅ ํ†ต์‹ ์„ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•ด์ฃผ๋Š” ํ”„๋กœํ† ์ฝœ์ž…๋‹ˆ๋‹ค. ํ•œ๋ฒˆ ์—ฐ๊ฒฐ์„ ๋งบ์œผ๋ฉด ์„œ๋ฒ„์™€ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์ž์œ ๋กญ๊ฒŒ ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ ๋ฐ›์„ ์ˆ˜ ์žˆ๊ณ , ๋งค ์š”์ฒญ๋งˆ๋‹ค ํ—ค๋”๋ฅผ ์ฃผ๊ณ ๋ฐ›๋Š” ์˜ค๋ฒ„ํ—ค๋“œ๋„ ์—†์Šต๋‹ˆ๋‹ค. ๋ชจ๋“  ์›น ์„œ๋น„์Šค์— WebSocket์ด ํ•„์š”ํ•œ ๊ฑด ์•„๋‹ˆ์ง€๋งŒ, ์ฑ„ํŒ…์ด๋‚˜ ์‹ค์‹œ๊ฐ„ ์•Œ๋ฆผ์ฒ˜๋Ÿผ ์„œ๋ฒ„๊ฐ€ ๋จผ์ € ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๋‚ด์•ผ ํ•˜๋Š” ๊ธฐ๋Šฅ์„ ๋งŒ๋“ค ๋•Œ๋Š” ์‚ฌ์‹ค์ƒ ํ•„์ˆ˜์ž…๋‹ˆ๋‹ค. ๋‹ค์Œ ๊ธ€์—์„œ๋Š” HTTPS์˜ ๊ธฐ๋ฐ˜์ด ๋˜๋Š” SSL/TLS์˜ ๋™์ž‘ ์›๋ฆฌ๋ฅผ ์ข€ ๋” ์ž์„ธํžˆ ๋‹ค๋ค„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

  • ์„œ๋ฒ„ ๋ชจ๋‹ˆํ„ฐ๋ง ๋„๊ตฌ ๋น„๊ต โ€” top, htop, Grafana ๋“ฑ

    ์„œ๋ฒ„ ๋ชจ๋‹ˆํ„ฐ๋ง ๋„๊ตฌ ๋น„๊ต โ€” top, htop, Grafana ๋“ฑ

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

    top โ€” ๋ฆฌ๋ˆ…์Šค์— ๊ธฐ๋ณธ์œผ๋กœ ๋“ค์–ด์žˆ๋Š” ๋ชจ๋‹ˆํ„ฐ๋ง ๋„๊ตฌ

    top์€ ๋ฆฌ๋ˆ…์Šค๋ผ๋ฉด ์–ด๋””์—๋‚˜ ์„ค์น˜๋˜์–ด ์žˆ๋Š” ๊ธฐ๋ณธ ๋„๊ตฌ์ž…๋‹ˆ๋‹ค. ๋ณ„๋„ ์„ค์น˜ ์—†์ด ํ„ฐ๋ฏธ๋„์—์„œ top์„ ์ž…๋ ฅํ•˜๋ฉด ๋ฐ”๋กœ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค.

    top

    ์‹คํ–‰ํ•˜๋ฉด ํ™”๋ฉด ์ƒ๋‹จ์— ์‹œ์Šคํ…œ ์ „์ฒด ์š”์•ฝ ์ •๋ณด๊ฐ€ ๋‚˜์˜ต๋‹ˆ๋‹ค. ์„œ๋ฒ„๊ฐ€ ์ผœ์ง„ ์‹œ๊ฐ„, ํ˜„์žฌ ์ ‘์† ์ค‘์ธ ์‚ฌ์šฉ์ž ์ˆ˜, ๋กœ๋“œ ์• ๋ฒ„๋ฆฌ์ง€, ์ „์ฒด CPU ์‚ฌ์šฉ๋ฅ , ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰์ด ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค. ์•„๋ž˜์ชฝ์—๋Š” ์‹คํ–‰ ์ค‘์ธ ํ”„๋กœ์„ธ์Šค ๋ชฉ๋ก์ด CPU ์‚ฌ์šฉ๋ฅ  ์ˆœ์œผ๋กœ ๋‚˜์—ด๋ฉ๋‹ˆ๋‹ค.

    ๋กœ๋“œ ์• ๋ฒ„๋ฆฌ์ง€๋Š” ์„œ๋ฒ„ ์ƒํƒœ๋ฅผ ๋น ๋ฅด๊ฒŒ ํŒ๋‹จํ•  ๋•Œ ์œ ์šฉํ•œ ์ง€ํ‘œ์ž…๋‹ˆ๋‹ค. ์„ธ ๊ฐœ์˜ ์ˆซ์ž๊ฐ€ ๋‚˜์˜ค๋Š”๋ฐ ๊ฐ๊ฐ 1๋ถ„, 5๋ถ„, 15๋ถ„ ํ‰๊ท ์ž…๋‹ˆ๋‹ค. ์ด ์ˆซ์ž๊ฐ€ ์„œ๋ฒ„์˜ CPU ์ฝ”์–ด ์ˆ˜๋ณด๋‹ค ๋†’์œผ๋ฉด ์„œ๋ฒ„์— ๋ถ€ํ•˜๊ฐ€ ๊ฑธ๋ฆฌ๊ณ  ์žˆ๋‹ค๋Š” ๋œป์ž…๋‹ˆ๋‹ค. ์ฝ”์–ด๊ฐ€ 4๊ฐœ์ธ ์„œ๋ฒ„์—์„œ ๋กœ๋“œ ์• ๋ฒ„๋ฆฌ์ง€๊ฐ€ 4๋ฅผ ๋„˜์œผ๋ฉด ์ฒ˜๋ฆฌ ๋Œ€๊ธฐ ์ค‘์ธ ์ž‘์—…์ด ์Œ“์ด๊ณ  ์žˆ๋Š” ์ƒํƒœ์ž…๋‹ˆ๋‹ค.

    top ํ™”๋ฉด์—์„œ ํŠน์ • ์ž‘์—…์„ ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. Shift+M์„ ๋ˆ„๋ฅด๋ฉด ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰ ์ˆœ์œผ๋กœ ์ •๋ ฌ๋˜๊ณ , Shift+P๋ฅผ ๋ˆ„๋ฅด๋ฉด ๋‹ค์‹œ CPU ์ˆœ์œผ๋กœ ๋Œ์•„์˜ต๋‹ˆ๋‹ค. ์ˆซ์ž 1์„ ๋ˆ„๋ฅด๋ฉด CPU ์ฝ”์–ด๋ณ„ ์‚ฌ์šฉ๋ฅ ์„ ๊ฐœ๋ณ„๋กœ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํŠน์ • ํ”„๋กœ์„ธ์Šค๋ฅผ ์ข…๋ฃŒํ•˜๊ณ  ์‹ถ์œผ๋ฉด k๋ฅผ ๋ˆ„๋ฅด๊ณ  PID๋ฅผ ์ž…๋ ฅํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. ๋‚˜๊ฐ€๋ ค๋ฉด q๋ฅผ ๋ˆ„๋ฆ…๋‹ˆ๋‹ค.

    top์˜ ์žฅ์ ์€ ์–ด๋””์„œ๋“  ๋ฐ”๋กœ ์“ธ ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒ๋‹ˆ๋‹ค. SSH๋กœ ์ ‘์†ํ•ด์„œ ์„œ๋ฒ„ ์ƒํƒœ๋ฅผ ๋น ๋ฅด๊ฒŒ ํ™•์ธํ•  ๋•Œ ๊ฐ€์žฅ ๋จผ์ € ์‚ฌ์šฉํ•˜๋Š” ๋„๊ตฌ์ž…๋‹ˆ๋‹ค. ๋‹ค๋งŒ ํ™”๋ฉด์ด ํˆฌ๋ฐ•ํ•˜๊ณ  ํ”„๋กœ์„ธ์Šค๋ฅผ ์‹œ๊ฐ์ ์œผ๋กœ ๊ตฌ๋ถ„ํ•˜๊ธฐ๊ฐ€ ์–ด๋ ต์Šต๋‹ˆ๋‹ค. ์ •๋ณด๋Š” ๋‹ค ์žˆ๋Š”๋ฐ ํ•œ๋ˆˆ์— ํŒŒ์•…ํ•˜๊ธฐ๊ฐ€ ๋ถˆํŽธํ•ฉ๋‹ˆ๋‹ค.

    htop โ€” top์˜ ๊ฐœ์„  ๋ฒ„์ „

    htop์€ top๊ณผ ๊ฐ™์€ ์—ญํ• ์„ ํ•˜์ง€๋งŒ ํ™”๋ฉด์ด ํ›จ์”ฌ ๋ณด๊ธฐ ์ข‹์Šต๋‹ˆ๋‹ค. ์ƒ‰์ƒ์ด ๋“ค์–ด๊ฐ€ ์žˆ๊ณ  CPU์™€ ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰์ด ๋ง‰๋Œ€๊ทธ๋ž˜ํ”„๋กœ ํ‘œ์‹œ๋˜์–ด์„œ ์ง๊ด€์ ์ž…๋‹ˆ๋‹ค.

    Ubuntu์—์„œ ์„ค์น˜ํ•˜๋ ค๋ฉด ์ด๋ ‡๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค.

    sudo apt install htop

    ์„ค์น˜ ํ›„ htop์„ ์ž…๋ ฅํ•˜๋ฉด ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค.

    htop

    ํ™”๋ฉด ์ƒ๋‹จ์— CPU ์ฝ”์–ด๋ณ„ ์‚ฌ์šฉ๋ฅ ์ด ์ƒ‰๊น” ๋ง‰๋Œ€๋กœ ๋‚˜์˜ต๋‹ˆ๋‹ค. ์ดˆ๋ก์ƒ‰์€ ์‚ฌ์šฉ์ž ํ”„๋กœ์„ธ์Šค, ๋นจ๊ฐ„์ƒ‰์€ ์ปค๋„ ํ”„๋กœ์„ธ์Šค, ํŒŒ๋ž€์ƒ‰์€ ์ €์šฐ์„ ์ˆœ์œ„ ํ”„๋กœ์„ธ์Šค์ž…๋‹ˆ๋‹ค. ๋ฉ”๋ชจ๋ฆฌ์™€ ์Šค์™‘ ์‚ฌ์šฉ๋Ÿ‰๋„ ๋ง‰๋Œ€๋กœ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค. top์—์„œ๋Š” ์ˆซ์ž๋งŒ ๋ณด๊ณ  ๋จธ๋ฆฟ์†์œผ๋กœ ๊ณ„์‚ฐํ•ด์•ผ ํ–ˆ๋˜ ๊ฑธ htop์—์„œ๋Š” ๋ˆˆ์œผ๋กœ ๋ฐ”๋กœ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    ํ”„๋กœ์„ธ์Šค ๋ชฉ๋ก๋„ top๋ณด๋‹ค ๋‹ค๋ฃจ๊ธฐ ํŽธํ•ฉ๋‹ˆ๋‹ค. ๋งˆ์šฐ์Šค๋กœ ํด๋ฆญํ•ด์„œ ํ”„๋กœ์„ธ์Šค๋ฅผ ์„ ํƒํ•  ์ˆ˜ ์žˆ๊ณ , F6์„ ๋ˆŒ๋Ÿฌ์„œ ์ •๋ ฌ ๊ธฐ์ค€์„ ๋ฐ”๊ฟ€ ์ˆ˜ ์žˆ๊ณ , F9๋ฅผ ๋ˆŒ๋Ÿฌ์„œ ํ”„๋กœ์„ธ์Šค์— ์‹œ๊ทธ๋„์„ ๋ณด๋‚ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํŠธ๋ฆฌ ๋ทฐ๋„ ์ง€์›ํ•˜๋Š”๋ฐ F5๋ฅผ ๋ˆ„๋ฅด๋ฉด ํ”„๋กœ์„ธ์Šค์˜ ๋ถ€๋ชจ-์ž์‹ ๊ด€๊ณ„๋ฅผ ํŠธ๋ฆฌ ๊ตฌ์กฐ๋กœ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค. Nginx ๋งˆ์Šคํ„ฐ ํ”„๋กœ์„ธ์Šค ์•„๋ž˜์— ์›Œ์ปค ํ”„๋กœ์„ธ์Šค๋“ค์ด ๋‹ฌ๋ ค ์žˆ๋Š” ๊ฑธ ํ•œ๋ˆˆ์— ๋ณผ ์ˆ˜ ์žˆ์–ด์„œ ํ”„๋กœ์„ธ์Šค ๊ตฌ์กฐ๋ฅผ ํŒŒ์•…ํ•˜๊ธฐ ์ข‹์Šต๋‹ˆ๋‹ค.

    F2๋ฅผ ๋ˆ„๋ฅด๋ฉด ์„ค์ • ํ™”๋ฉด์ด ๋‚˜์˜ค๊ณ  ํ‘œ์‹œํ•  ํ•ญ๋ชฉ์„ ์ปค์Šคํ„ฐ๋งˆ์ด์ฆˆํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ™”๋ฉด ํ•˜๋‹จ์— ๊ธฐ๋Šฅ ํ‚ค ์•ˆ๋‚ด๊ฐ€ ๋‚˜์˜ค๊ธฐ ๋•Œ๋ฌธ์— ๋‹จ์ถ•ํ‚ค๋ฅผ ์™ธ์šฐ์ง€ ์•Š์•„๋„ ๋ฉ๋‹ˆ๋‹ค.

    ๊ฐœ์ธ์ ์œผ๋กœ ์„œ๋ฒ„์— ์ ‘์†ํ•˜๋ฉด top ๋Œ€์‹  htop์„ ๋จผ์ € ์น˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ์„ค์น˜๊ฐ€ ๊ฐ„๋‹จํ•˜๊ณ  ์ •๋ณด๋Ÿ‰์€ top๊ณผ ๊ฐ™์€๋ฐ ๊ฐ€๋…์„ฑ์ด ํ›จ์”ฌ ์ข‹๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ์ƒˆ ์„œ๋ฒ„๋ฅผ ์„ธํŒ…ํ•˜๋ฉด ๊ฑฐ์˜ ์Šต๊ด€์ ์œผ๋กœ htop๋ถ€ํ„ฐ ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค.

    vmstat โ€” ์‹œ์Šคํ…œ ์ž์›์„ ์ˆซ์ž๋กœ ๋น ๋ฅด๊ฒŒ ํ™•์ธ

    vmstat์€ CPU, ๋ฉ”๋ชจ๋ฆฌ, ์Šค์™‘, I/O ์ƒํƒœ๋ฅผ ํ•œ ์ค„๋กœ ๋ณด์—ฌ์ฃผ๋Š” ๋„๊ตฌ์ž…๋‹ˆ๋‹ค. top์ด๋‚˜ htop์ฒ˜๋Ÿผ ์‹ค์‹œ๊ฐ„์œผ๋กœ ๊ฐฑ์‹ ๋˜๋Š” ํ™”๋ฉด์ด ์•„๋‹ˆ๋ผ ์Šค๋ƒ…์ƒท์„ ์ฐ์–ด์ฃผ๋Š” ๋А๋‚Œ์ž…๋‹ˆ๋‹ค.

    vmstat 2 5

    ์ด ๋ช…๋ น์–ด๋Š” 2์ดˆ ๊ฐ„๊ฒฉ์œผ๋กœ 5๋ฒˆ ์ธก์ •ํ•ด์„œ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค. ์ถœ๋ ฅ ๊ฒฐ๊ณผ๋ฅผ ๋ณด๋ฉด procs, memory, swap, io, system, cpu ํ•ญ๋ชฉ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

    ์—ฌ๊ธฐ์„œ ์ฃผ๋กœ ๋ณด๋Š” ๊ฑด ๋ช‡ ๊ฐ€์ง€์ž…๋‹ˆ๋‹ค. r ๊ฐ’์€ CPU๋ฅผ ๊ธฐ๋‹ค๋ฆฌ๊ณ  ์žˆ๋Š” ํ”„๋กœ์„ธ์Šค ์ˆ˜์ธ๋ฐ ์ด๊ฒŒ ์ฝ”์–ด ์ˆ˜๋ณด๋‹ค ๋งŽ์œผ๋ฉด CPU๊ฐ€ ๋ถ€์กฑํ•œ ๊ฒ๋‹ˆ๋‹ค. si์™€ so๋Š” ์Šค์™‘ ์ธ๊ณผ ์Šค์™‘ ์•„์›ƒ์ธ๋ฐ ์ด ๊ฐ’์ด ์ง€์†์ ์œผ๋กœ ๋†’์œผ๋ฉด ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ๋ถ€์กฑํ•ด์„œ ๋””์Šคํฌ๋ฅผ ๋ฉ”๋ชจ๋ฆฌ์ฒ˜๋Ÿผ ์“ฐ๊ณ  ์žˆ๋‹ค๋Š” ๋œป์ž…๋‹ˆ๋‹ค. ์Šค์™‘์ด ๋งŽ์ด ๋ฐœ์ƒํ•˜๋ฉด ์„œ๋ฒ„๊ฐ€ ๊ธ‰๊ฒฉํ•˜๊ฒŒ ๋А๋ ค์ง‘๋‹ˆ๋‹ค.

    vmstat์€ ์„œ๋ฒ„์— ๋ฌธ์ œ๊ฐ€ ์ƒ๊ฒผ์„ ๋•Œ ์›์ธ์ด CPU์ธ์ง€ ๋ฉ”๋ชจ๋ฆฌ์ธ์ง€ ๋””์Šคํฌ I/O์ธ์ง€๋ฅผ ๋น ๋ฅด๊ฒŒ ํŒ๋ณ„ํ•˜๋Š” ๋ฐ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค. ์Šคํฌ๋ฆฝํŠธ์—์„œ ๊ฒฐ๊ณผ๋ฅผ ํŒŒ์‹ฑํ•˜๊ธฐ๋„ ํŽธํ•ด์„œ ๋ชจ๋‹ˆํ„ฐ๋ง ์ž๋™ํ™”์— ํ™œ์šฉํ•˜๊ธฐ๋„ ํ•ฉ๋‹ˆ๋‹ค.

    df์™€ du โ€” ๋””์Šคํฌ ์šฉ๋Ÿ‰ ํ™•์ธ

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

    df๋Š” ํŒŒ์ผ ์‹œ์Šคํ…œ๋ณ„ ๋””์Šคํฌ ์‚ฌ์šฉ๋Ÿ‰์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค.

    df -h

    -h ์˜ต์…˜์„ ๋ถ™์ด๋ฉด ์‚ฌ๋žŒ์ด ์ฝ๊ธฐ ํŽธํ•œ ๋‹จ์œ„(GB, MB)๋กœ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค. Use% ์นผ๋Ÿผ์ด 90%๋ฅผ ๋„˜์–ด๊ฐ€๋ฉด ์กฐ์น˜๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

    du๋Š” ํŠน์ • ๋””๋ ‰ํ† ๋ฆฌ๊ฐ€ ์–ผ๋งˆ๋‚˜ ๋งŽ์€ ์šฉ๋Ÿ‰์„ ์ฐจ์ง€ํ•˜๋Š”์ง€ ํ™•์ธํ•  ๋•Œ ์”๋‹ˆ๋‹ค.

    du -sh /var/log/*

    -s๋Š” ์š”์•ฝ, -h๋Š” ์‚ฌ๋žŒ์ด ์ฝ๊ธฐ ํŽธํ•œ ๋‹จ์œ„์ž…๋‹ˆ๋‹ค. ์–ด๋–ค ๋””๋ ‰ํ† ๋ฆฌ๊ฐ€ ์šฉ๋Ÿ‰์„ ๋งŽ์ด ์žก์•„๋จน๊ณ  ์žˆ๋Š”์ง€ ์ฐพ์„ ๋•Œ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค. ๋กœ๊ทธ ๋””๋ ‰ํ† ๋ฆฌ์—์„œ ๋ช‡ ๊ธฐ๊ฐ€์งœ๋ฆฌ ํŒŒ์ผ์ด ๋ฐœ๊ฒฌ๋˜๋ฉด ์ด์ „ ๊ธ€์—์„œ ๋‹ค๋ค˜๋˜ ํฌ๋ก ํƒญ์œผ๋กœ ์ฃผ๊ธฐ์ ์œผ๋กœ ์ •๋ฆฌํ•˜๋Š” ์„ค์ •์„ ์ถ”๊ฐ€ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

    iotop๊ณผ nethogs โ€” ๋””์Šคํฌ์™€ ๋„คํŠธ์›Œํฌ ์‚ฌ์šฉ ์ถ”์ 

    CPU์™€ ๋ฉ”๋ชจ๋ฆฌ๋Š” ์ •์ƒ์ธ๋ฐ ์„œ๋ฒ„๊ฐ€ ๋А๋ฆฌ๋‹ค๋ฉด ๋””์Šคํฌ I/O๋‚˜ ๋„คํŠธ์›Œํฌ๊ฐ€ ๋ณ‘๋ชฉ์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    iotop์€ ์–ด๋–ค ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋””์Šคํฌ๋ฅผ ๋งŽ์ด ์ฝ๊ณ  ์“ฐ๊ณ  ์žˆ๋Š”์ง€ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค.

    sudo apt install iotop
    sudo iotop

    htop์ด CPU์™€ ๋ฉ”๋ชจ๋ฆฌ ๊ธฐ์ค€์œผ๋กœ ํ”„๋กœ์„ธ์Šค๋ฅผ ๋ณด์—ฌ์ค€๋‹ค๋ฉด iotop์€ ๋””์Šคํฌ I/O ๊ธฐ์ค€์œผ๋กœ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๊ฐ€ ๋””์Šคํฌ๋ฅผ ๊ณผ๋„ํ•˜๊ฒŒ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋‹ค๊ฑฐ๋‚˜ ๋ฐฑ์—… ์ž‘์—…์ด I/O๋ฅผ ์žก์•„๋จน๊ณ  ์žˆ๋‹ค๊ฑฐ๋‚˜ ํ•˜๋Š” ๊ฑธ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    nethogs๋Š” ํ”„๋กœ์„ธ์Šค๋ณ„ ๋„คํŠธ์›Œํฌ ์‚ฌ์šฉ๋Ÿ‰์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค.

    sudo apt install nethogs
    sudo nethogs

    ์–ด๋–ค ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋„คํŠธ์›Œํฌ ๋Œ€์—ญํญ์„ ๋งŽ์ด ์ฐจ์ง€ํ•˜๋Š”์ง€ ์‹ค์‹œ๊ฐ„์œผ๋กœ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜๋„ํ•˜์ง€ ์•Š์€ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์™ธ๋ถ€๋กœ ํŠธ๋ž˜ํ”ฝ์„ ๋ณด๋‚ด๊ณ  ์žˆ๋‹ค๋ฉด ๋ณด์•ˆ ๋ฌธ์ œ์ผ ์ˆ˜๋„ ์žˆ์œผ๋‹ˆ ์ฃผ์˜๊นŠ๊ฒŒ ๋ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

    Prometheus์™€ Grafana โ€” ๋ณธ๊ฒฉ์ ์ธ ๋ชจ๋‹ˆํ„ฐ๋ง ์‹œ์Šคํ…œ

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

    Prometheus๋Š” ๋ชจ๋‹ˆํ„ฐ๋ง ๋ฐ์ดํ„ฐ๋ฅผ ์ˆ˜์ง‘ํ•˜๊ณ  ์ €์žฅํ•˜๋Š” ๋„๊ตฌ์ž…๋‹ˆ๋‹ค. ๊ฐ ์„œ๋ฒ„์— ์„ค์น˜๋œ ์—์ด์ „ํŠธ(Node Exporter)๊ฐ€ ์„œ๋ฒ„์˜ CPU, ๋ฉ”๋ชจ๋ฆฌ, ๋””์Šคํฌ ๊ฐ™์€ ์ง€ํ‘œ๋ฅผ ์ˆ˜์ง‘ํ•˜๊ณ , Prometheus๊ฐ€ ์ฃผ๊ธฐ์ ์œผ๋กœ ์ด ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์™€์„œ ์‹œ๊ณ„์—ด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.

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

    ์ „์ฒด ๊ตฌ์กฐ๋ฅผ ์ •๋ฆฌํ•˜๋ฉด ์ด๋ ‡์Šต๋‹ˆ๋‹ค. ์„œ๋ฒ„์— Node Exporter๊ฐ€ ์„ค์น˜๋˜์–ด ์ง€ํ‘œ๋ฅผ ๋…ธ์ถœํ•˜๊ณ , Prometheus๊ฐ€ ์ด๊ฑธ ์ˆ˜์ง‘ํ•ด์„œ ์ €์žฅํ•˜๊ณ , Grafana๊ฐ€ Prometheus์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๊บผ๋‚ด์™€์„œ ๋Œ€์‹œ๋ณด๋“œ์— ๊ทธ๋ ค์ค๋‹ˆ๋‹ค. ์„ธ ๊ฐ€์ง€๊ฐ€ ๊ฐ๊ฐ ๋‹ค๋ฅธ ์—ญํ• ์„ ํ•˜๋ฉด์„œ ํ•˜๋‚˜์˜ ๋ชจ๋‹ˆํ„ฐ๋ง ํŒŒ์ดํ”„๋ผ์ธ์„ ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค.

    Grafana์˜ ๊ฐ€์žฅ ํฐ ์žฅ์ ์€ ๋Œ€์‹œ๋ณด๋“œ๋ฅผ ์ž์œ ๋กญ๊ฒŒ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์ ์ž…๋‹ˆ๋‹ค. ์ง์ ‘ ๋งŒ๋“ค ์ˆ˜๋„ ์žˆ๊ณ , Grafana Labs ์ปค๋ฎค๋‹ˆํ‹ฐ์—์„œ ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค์ด ๋งŒ๋“ค์–ด๋‘” ๋Œ€์‹œ๋ณด๋“œ๋ฅผ ๊ฐ€์ ธ์™€์„œ ๋ฐ”๋กœ ์“ธ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. Node Exporter์šฉ ๋Œ€์‹œ๋ณด๋“œ๋ฅผ ์ž„ํฌํŠธํ•˜๋ฉด ์„œ๋ฒ„ ๋ชจ๋‹ˆํ„ฐ๋ง ํ™”๋ฉด์ด ๋ช‡ ๋ถ„ ๋งŒ์— ์™„์„ฑ๋ฉ๋‹ˆ๋‹ค.

    ์•Œ๋ฆผ ์„ค์ •๋„ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. CPU ์‚ฌ์šฉ๋ฅ ์ด 90%๋ฅผ ๋„˜์œผ๋ฉด ์Šฌ๋ž™์œผ๋กœ ์•Œ๋ฆผ์„ ๋ณด๋‚ด๊ฑฐ๋‚˜, ๋””์Šคํฌ ์‚ฌ์šฉ๋Ÿ‰์ด 80%๋ฅผ ๋„˜์œผ๋ฉด ์ด๋ฉ”์ผ์„ ๋ณด๋‚ด๋Š” ์‹์œผ๋กœ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฌธ์ œ๊ฐ€ ์ƒ๊ฒผ์„ ๋•Œ ์„œ๋ฒ„์— ์ง์ ‘ ์ ‘์†ํ•ด์„œ ํ™•์ธํ•˜๋Š” ๊ฒŒ ์•„๋‹ˆ๋ผ ์•Œ๋ฆผ์„ ๋ฐ›๊ณ  ๋Œ€์‘ํ•˜๋Š” ๊ตฌ์กฐ๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    ๋‹ค๋งŒ Prometheus์™€ Grafana๋Š” ์„ค์น˜์™€ ์„ค์ •์ด ์œ„์—์„œ ๋‹ค๋ฃฌ ๋„๊ตฌ๋“ค์— ๋น„ํ•ด ๋ณต์žกํ•ฉ๋‹ˆ๋‹ค. ์„œ๋ฒ„๋ฅผ ์ฒ˜์Œ ์šด์˜ํ•˜๋Š” ๋‹จ๊ณ„์—์„œ ๋ฐ”๋กœ ๋„์ž…ํ•˜๊ธฐ๋ณด๋‹ค๋Š” ์„œ๋ฒ„ ์šด์˜์ด ์–ด๋А ์ •๋„ ์ต์ˆ™ํ•ด์ง€๊ณ , ๊ด€๋ฆฌํ•  ์„œ๋ฒ„๊ฐ€ ๋Š˜์–ด๋‚˜๊ฑฐ๋‚˜ ์•ˆ์ •์ ์ธ ์„œ๋น„์Šค ์šด์˜์ด ํ•„์š”ํ•ด์งˆ ๋•Œ ๊ตฌ์ถ•ํ•˜๋Š” ๊ฒŒ ํ˜„์‹ค์ ์ž…๋‹ˆ๋‹ค.

    ํด๋ผ์šฐ๋“œ ๋ชจ๋‹ˆํ„ฐ๋ง ์„œ๋น„์Šค

    AWS, GCP ๊ฐ™์€ ํด๋ผ์šฐ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋‹ค๋ฉด ํด๋ผ์šฐ๋“œ ์ž์ฒด์—์„œ ์ œ๊ณตํ•˜๋Š” ๋ชจ๋‹ˆํ„ฐ๋ง ์„œ๋น„์Šค๋„ ์žˆ์Šต๋‹ˆ๋‹ค. AWS์˜ CloudWatch, GCP์˜ Cloud Monitoring์ด ๋Œ€ํ‘œ์ ์ž…๋‹ˆ๋‹ค.

    ์ด๋Ÿฐ ์„œ๋น„์Šค๋“ค์€ ๋ณ„๋„ ์„ค์น˜ ์—†์ด ํด๋ผ์šฐ๋“œ ์ฝ˜์†”์—์„œ ๋ฐ”๋กœ ์„œ๋ฒ„์˜ CPU, ๋ฉ”๋ชจ๋ฆฌ, ๋„คํŠธ์›Œํฌ, ๋””์Šคํฌ ์ง€ํ‘œ๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์•Œ๋ฆผ ์„ค์ •๋„ ์ฝ˜์†”์—์„œ ํด๋ฆญ ๋ช‡ ๋ฒˆ์œผ๋กœ ๋ฉ๋‹ˆ๋‹ค. ์ง์ ‘ Prometheus๋ฅผ ๊ตฌ์ถ•ํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค ํ›จ์”ฌ ๊ฐ„ํŽธํ•ฉ๋‹ˆ๋‹ค.

    ๋‹จ์ ์€ ํด๋ผ์šฐ๋“œ์— ์ข…์†๋œ๋‹ค๋Š” ์ ๊ณผ ์„ธ๋ฐ€ํ•œ ์ปค์Šคํ„ฐ๋งˆ์ด์ฆˆ๊ฐ€ ์–ด๋ ต๋‹ค๋Š” ์ ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋ฌด๋ฃŒ ๋ฒ”์œ„๋ฅผ ๋„˜์–ด๊ฐ€๋ฉด ๋น„์šฉ์ด ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ์„œ๋ฒ„๊ฐ€ ์ ๊ณ  ํ•ด๋‹น ํด๋ผ์šฐ๋“œ๋ฅผ ์ด๋ฏธ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋‹ค๋ฉด ์ถฉ๋ถ„ํžˆ ์‹ค์šฉ์ ์ธ ์„ ํƒ์ž…๋‹ˆ๋‹ค.

    ์ƒํ™ฉ๋ณ„ ๋„๊ตฌ ์„ ํƒ ๊ฐ€์ด๋“œ

    ์„œ๋ฒ„์— ๋ฌธ์ œ๊ฐ€ ์ƒ๊ฒจ์„œ ์ง€๊ธˆ ๋‹น์žฅ ์ƒํƒœ๋ฅผ ํ™•์ธํ•ด์•ผ ํ•œ๋‹ค๋ฉด top์ด๋‚˜ htop์„ ์”๋‹ˆ๋‹ค. SSH๋กœ ์ ‘์†ํ•ด์„œ ๋ฐ”๋กœ ํ™•์ธํ•  ์ˆ˜ ์žˆ๊ณ  ๋ณ„๋„ ์„ค์น˜๊ฐ€ ํ•„์š” ์—†๊ฑฐ๋‚˜ ๊ฐ„๋‹จํ•ฉ๋‹ˆ๋‹ค.

    CPU์ธ์ง€ ๋ฉ”๋ชจ๋ฆฌ์ธ์ง€ ๋””์Šคํฌ์ธ์ง€ ์›์ธ์„ ๋น ๋ฅด๊ฒŒ ๋ถ„๋ฅ˜ํ•˜๊ณ  ์‹ถ์œผ๋ฉด vmstat์„ ์”๋‹ˆ๋‹ค. ๋””์Šคํฌ๊ฐ€ ์˜์‹ฌ๋˜๋ฉด iotop, ๋„คํŠธ์›Œํฌ๊ฐ€ ์˜์‹ฌ๋˜๋ฉด nethogs๋ฅผ ์ถ”๊ฐ€๋กœ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

    ๋””์Šคํฌ ์šฉ๋Ÿ‰์ด ๋ฌธ์ œ์ธ ๊ฒƒ ๊ฐ™์œผ๋ฉด df์™€ du๋กœ ์–ด๋””๊ฐ€ ๊ฝ‰ ์ฐผ๋Š”์ง€ ์ฐพ์Šต๋‹ˆ๋‹ค.

    ์„œ๋ฒ„๋ฅผ ์ง€์†์ ์œผ๋กœ ๋ชจ๋‹ˆํ„ฐ๋งํ•˜๋ฉด์„œ ์‹œ๊ฐ„์— ๋”ฐ๋ฅธ ์ถ”์ด๋ฅผ ๋ณด๊ณ  ์‹ถ๊ณ  ์•Œ๋ฆผ๊นŒ์ง€ ๋ฐ›๊ณ  ์‹ถ์œผ๋ฉด Prometheus์™€ Grafana ์กฐํ•ฉ์„ ๊ตฌ์ถ•ํ•ฉ๋‹ˆ๋‹ค.

    ํด๋ผ์šฐ๋“œ ์„œ๋ฒ„๋ฅผ ์“ฐ๊ณ  ์žˆ๊ณ  ๊ฐ„ํŽธํ•˜๊ฒŒ ๋ชจ๋‹ˆํ„ฐ๋งํ•˜๊ณ  ์‹ถ์œผ๋ฉด CloudWatch๋‚˜ Cloud Monitoring ๊ฐ™์€ ํด๋ผ์šฐ๋“œ ๋‚ด์žฅ ์„œ๋น„์Šค๋ฅผ ํ™œ์šฉํ•ฉ๋‹ˆ๋‹ค.

    ์ฒ˜์Œ์—๋Š” htop ํ•˜๋‚˜๋งŒ ์ž˜ ์จ๋„ ๋Œ€๋ถ€๋ถ„์˜ ์ƒํ™ฉ์— ๋Œ€์‘ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฑฐ๊ธฐ์„œ ์‹œ์ž‘ํ•ด์„œ ํ•„์š”์— ๋”ฐ๋ผ ๋„๊ตฌ๋ฅผ ํ•˜๋‚˜์”ฉ ์ถ”๊ฐ€ํ•ด๋‚˜๊ฐ€๋ฉด ๋ฉ๋‹ˆ๋‹ค.

    ๋งˆ๋ฌด๋ฆฌ

    ์„œ๋ฒ„ ๋ชจ๋‹ˆํ„ฐ๋ง์€ ๋ฌธ์ œ๊ฐ€ ํ„ฐ์ง„ ๋’ค์— ํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค ํ‰์†Œ์— ์ƒํƒœ๋ฅผ ํŒŒ์•…ํ•ด๋‘๋Š” ๊ฒŒ ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค. ์ •์ƒ์ผ ๋•Œ์˜ CPU ์‚ฌ์šฉ๋ฅ ์ด๋‚˜ ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰์„ ์•Œ๊ณ  ์žˆ์–ด์•ผ ๋น„์ •์ƒ์ธ ์ƒํ™ฉ์„ ๊ฐ์ง€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. htop์œผ๋กœ ์ˆ˜์‹œ๋กœ ์„œ๋ฒ„ ์ƒํƒœ๋ฅผ ํ™•์ธํ•˜๋Š” ์Šต๊ด€์„ ๋“ค์ด๊ณ , ์„œ๋น„์Šค๊ฐ€ ์ปค์ง€๋ฉด Grafana ๊ฐ™์€ ์‹œ๊ฐํ™” ๋„๊ตฌ๋ฅผ ๋„์ž…ํ•ด์„œ ์ฒด๊ณ„์ ์œผ๋กœ ๊ด€๋ฆฌํ•˜๋Š” ๋ฐฉํ–ฅ์œผ๋กœ ๋‚˜์•„๊ฐ€๋ฉด ๋ฉ๋‹ˆ๋‹ค. ๋‹ค์Œ ๊ธ€์—์„œ๋Š” HTTP์™€ ์‹ค์‹œ๊ฐ„ ํ†ต์‹ ์˜ ์ฐจ์ด๋ฅผ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š” WebSocket์— ๋Œ€ํ•ด ๋‹ค๋ค„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

  • ํฌ๋ก ํƒญ(Crontab)์œผ๋กœ ์„œ๋ฒ„ ์ž‘์—… ์ž๋™ํ™”ํ•˜๊ธฐ

    ํฌ๋ก ํƒญ(Crontab)์œผ๋กœ ์„œ๋ฒ„ ์ž‘์—… ์ž๋™ํ™”ํ•˜๊ธฐ

    ์„œ๋ฒ„๋ฅผ ์šด์˜ํ•˜๋‹ค ๋ณด๋ฉด ๋งค์ผ ๋ฐ˜๋ณตํ•ด์•ผ ํ•˜๋Š” ์ž‘์—…๋“ค์ด ์ƒ๊น๋‹ˆ๋‹ค. ๋กœ๊ทธ ํŒŒ์ผ์„ ์ •๋ฆฌํ•˜๊ฑฐ๋‚˜, ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ๋ฐฑ์—…ํ•˜๊ฑฐ๋‚˜, SSL ์ธ์ฆ์„œ ๊ฐฑ์‹ ์„ ํ™•์ธํ•˜๊ฑฐ๋‚˜, ํŠน์ • ์‹œ๊ฐ„์— ์Šคํฌ๋ฆฝํŠธ๋ฅผ ๋Œ๋ฆฌ๋Š” ์ผ๋“ค์ž…๋‹ˆ๋‹ค. ์ด๋Ÿฐ ๊ฑธ ๋งค๋ฒˆ ์ง์ ‘ ์ ‘์†ํ•ด์„œ ์ˆ˜๋™์œผ๋กœ ์‹คํ–‰ํ•˜๋ฉด ๋ฒˆ๊ฑฐ๋กญ๊ธฐ๋„ ํ•˜๊ณ  ๊นœ๋นกํ•˜๋Š” ๋‚ ์ด ๋ฐ˜๋“œ์‹œ ์ƒ๊น๋‹ˆ๋‹ค. ๋ฆฌ๋ˆ…์Šค์—์„œ๋Š” ํฌ๋ก (Cron)์ด๋ผ๋Š” ๋„๊ตฌ๊ฐ€ ์ด๋Ÿฐ ๋ฐ˜๋ณต ์ž‘์—…์„ ์ž๋™์œผ๋กœ ์ฒ˜๋ฆฌํ•ด์ค๋‹ˆ๋‹ค. ์ด๋ฒˆ ๊ธ€์—์„œ๋Š” ํฌ๋ก ํƒญ์ด ๋ฌด์—‡์ธ์ง€, ์–ด๋–ป๊ฒŒ ์„ค์ •ํ•˜๋Š”์ง€, ์‹ค๋ฌด์—์„œ ์–ด๋–ค ์‹์œผ๋กœ ํ™œ์šฉํ•˜๋Š”์ง€๋ฅผ ์ •๋ฆฌํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

    ํฌ๋ก ์ด๋ž€ ๋ฌด์—‡์ธ๊ฐ€

    ํฌ๋ก ์€ ๋ฆฌ๋ˆ…์Šค์— ๊ธฐ๋ณธ์œผ๋กœ ๋‚ด์žฅ๋˜์–ด ์žˆ๋Š” ์ž‘์—… ์Šค์ผ€์ค„๋Ÿฌ์ž…๋‹ˆ๋‹ค. ์ง€์ •ํ•œ ์‹œ๊ฐ„์— ์ง€์ •ํ•œ ๋ช…๋ น์–ด๋ฅผ ์ž๋™์œผ๋กœ ์‹คํ–‰ํ•ด์ค๋‹ˆ๋‹ค. ๋ณ„๋„๋กœ ์„ค์น˜ํ•  ํ•„์š” ์—†์ด ๋Œ€๋ถ€๋ถ„์˜ ๋ฆฌ๋ˆ…์Šค ๋ฐฐํฌํŒ์— ์ด๋ฏธ ๋“ค์–ด๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

    ํฌ๋ก ํƒญ(Crontab)์€ ํฌ๋ก  ํ…Œ์ด๋ธ”(Cron Table)์˜ ์ค„์ž„๋ง์ด๊ณ , ์–ด๋–ค ์ž‘์—…์„ ์–ธ์ œ ์‹คํ–‰ํ• ์ง€ ์ ์–ด๋‘” ์„ค์ • ํŒŒ์ผ์ž…๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž๋งˆ๋‹ค ์ž๊ธฐ๋งŒ์˜ ํฌ๋ก ํƒญ์„ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๊ณ , ์‹œ์Šคํ…œ ์ „์ฒด์— ์ ์šฉ๋˜๋Š” ํฌ๋ก ํƒญ๋„ ๋”ฐ๋กœ ์žˆ์Šต๋‹ˆ๋‹ค.

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

    ํฌ๋ก ํƒญ ๊ธฐ๋ณธ ์‚ฌ์šฉ๋ฒ•

    ํฌ๋ก ํƒญ์„ ์—ด๋ ค๋ฉด ํ„ฐ๋ฏธ๋„์—์„œ ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค.

    crontab -e

    ์ฒ˜์Œ ์‹คํ–‰ํ•˜๋ฉด ์–ด๋–ค ํŽธ์ง‘๊ธฐ๋ฅผ ์‚ฌ์šฉํ• ์ง€ ๋ฌผ์–ด๋ด…๋‹ˆ๋‹ค. nano๊ฐ€ ์ต์ˆ™ํ•˜๋‹ค๋ฉด nano๋ฅผ ์„ ํƒํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. ํŽธ์ง‘๊ธฐ๊ฐ€ ์—ด๋ฆฌ๋ฉด ์—ฌ๊ธฐ์— ์ž‘์—… ์Šค์ผ€์ค„์„ ํ•œ ์ค„์”ฉ ์ถ”๊ฐ€ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

    ํ˜„์žฌ ๋“ฑ๋ก๋œ ํฌ๋ก ํƒญ์„ ํ™•์ธํ•˜๊ณ  ์‹ถ์œผ๋ฉด ์ด๋ ‡๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค.

    crontab -l

    ํฌ๋ก ํƒญ์„ ์ „๋ถ€ ์‚ญ์ œํ•˜๊ณ  ์‹ถ์œผ๋ฉด ์ด๋ ‡๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค. ์ฃผ์˜ํ•ด์„œ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

    crontab -r

    ๋‹ค๋ฅธ ์‚ฌ์šฉ์ž์˜ ํฌ๋ก ํƒญ์„ ํŽธ์ง‘ํ•˜๋ ค๋ฉด sudo์™€ -u ์˜ต์…˜์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

    sudo crontab -u www-data -e

    ํฌ๋ก ํƒญ ์‹œ๊ฐ„ ํ˜•์‹ ์ดํ•ดํ•˜๊ธฐ

    ํฌ๋ก ํƒญ์—์„œ ๊ฐ€์žฅ ์ค‘์š”ํ•œ ๊ฑด ์‹œ๊ฐ„ ํ˜•์‹์ž…๋‹ˆ๋‹ค. ํ•œ ์ค„์— ํ•˜๋‚˜์˜ ์ž‘์—…์„ ์“ฐ๋Š”๋ฐ, ํ˜•์‹์€ ์ด๋ ‡์Šต๋‹ˆ๋‹ค.

    ๋ถ„ ์‹œ ์ผ ์›” ์š”์ผ ์‹คํ–‰ํ• ๋ช…๋ น์–ด

    ๊ฐ ์ž๋ฆฌ์— ๋“ค์–ด๊ฐˆ ์ˆ˜ ์žˆ๋Š” ๊ฐ’์˜ ๋ฒ”์œ„๋Š” ์ด๋ ‡์Šต๋‹ˆ๋‹ค. ๋ถ„์€ 0๋ถ€ํ„ฐ 59๊นŒ์ง€, ์‹œ๋Š” 0๋ถ€ํ„ฐ 23๊นŒ์ง€, ์ผ์€ 1๋ถ€ํ„ฐ 31๊นŒ์ง€, ์›”์€ 1๋ถ€ํ„ฐ 12๊นŒ์ง€, ์š”์ผ์€ 0๋ถ€ํ„ฐ 7๊นŒ์ง€์ธ๋ฐ 0๊ณผ 7์ด ๋‘˜ ๋‹ค ์ผ์š”์ผ์ž…๋‹ˆ๋‹ค.

    ๋ณ„ํ‘œ๋Š” “๋งค๋ฒˆ”์ด๋ผ๋Š” ๋œป์ž…๋‹ˆ๋‹ค. ํ•ด๋‹น ์ž๋ฆฌ์— ๋ณ„ํ‘œ๋ฅผ ๋„ฃ์œผ๋ฉด ๊ทธ ๋‹จ์œ„์˜ ๋ชจ๋“  ๊ฐ’์— ํ•ด๋‹น๋œ๋‹ค๋Š” ์˜๋ฏธ์ž…๋‹ˆ๋‹ค.

    ์˜ˆ์‹œ๋ฅผ ๋ณด๋ฉด ๋ฐ”๋กœ ๊ฐ์ด ์˜ต๋‹ˆ๋‹ค.

    0 3 * * * /home/ubuntu/backup.sh

    ์ด๊ฑด ๋งค์ผ ์ƒˆ๋ฒฝ 3์‹œ ์ •๊ฐ์— backup.sh๋ฅผ ์‹คํ–‰ํ•˜๋ผ๋Š” ๋œป์ž…๋‹ˆ๋‹ค. ๋ถ„์ด 0์ด๊ณ  ์‹œ๊ฐ€ 3์ด๊ณ , ์ผ ์›” ์š”์ผ์ด ์ „๋ถ€ ๋ณ„ํ‘œ์ด๋‹ˆ๊นŒ ๋งค์ผ ๋ฐ˜๋ณต๋ฉ๋‹ˆ๋‹ค.

    30 2 * * 0 /home/ubuntu/weekly-cleanup.sh

    ์ด๊ฑด ๋งค์ฃผ ์ผ์š”์ผ ์ƒˆ๋ฒฝ 2์‹œ 30๋ถ„์— ์‹คํ–‰ํ•˜๋ผ๋Š” ๋œป์ž…๋‹ˆ๋‹ค. ์š”์ผ ์ž๋ฆฌ์— 0์ด ๋“ค์–ด๊ฐ”์œผ๋‹ˆ ์ผ์š”์ผ์ž…๋‹ˆ๋‹ค.

    */10 * * * * /home/ubuntu/check-server.sh

    ์Šฌ๋ž˜์‹œ๋Š” ๊ฐ„๊ฒฉ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. */10์€ 10๋ถ„๋งˆ๋‹ค๋ผ๋Š” ๋œป์ž…๋‹ˆ๋‹ค. ์ฆ‰ ๋งค 10๋ถ„๋งˆ๋‹ค ์„œ๋ฒ„ ์ƒํƒœ๋ฅผ ํ™•์ธํ•˜๋Š” ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

    0 9-18 * * 1-5 /home/ubuntu/business-report.sh

    ํ•˜์ดํ”ˆ์€ ๋ฒ”์œ„๋ฅผ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค. ์‹œ ์ž๋ฆฌ์— 9-18์ด๋ฉด ์˜ค์ „ 9์‹œ๋ถ€ํ„ฐ ์˜คํ›„ 6์‹œ๊นŒ์ง€์ด๊ณ , ์š”์ผ ์ž๋ฆฌ์— 1-5๋ฉด ์›”์š”์ผ๋ถ€ํ„ฐ ๊ธˆ์š”์ผ๊นŒ์ง€์ž…๋‹ˆ๋‹ค. ํ‰์ผ ์—…๋ฌด์‹œ๊ฐ„์—๋งŒ ๋งค์‹œ ์ •๊ฐ์— ์‹คํ–‰๋˜๋Š” ์„ค์ •์ž…๋‹ˆ๋‹ค.

    0 0 1,15 * * /home/ubuntu/biweekly-task.sh

    ์‰ผํ‘œ๋Š” ํŠน์ • ๊ฐ’ ์—ฌ๋Ÿฌ ๊ฐœ๋ฅผ ์ง€์ •ํ•  ๋•Œ ์”๋‹ˆ๋‹ค. ์ผ ์ž๋ฆฌ์— 1,15์ด๋ฉด ๋งค์›” 1์ผ๊ณผ 15์ผ ์ž์ •์— ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

    ์‹ค๋ฌด์—์„œ ์ž์ฃผ ์“ฐ๋Š” ํฌ๋ก ํƒญ ์˜ˆ์‹œ

    ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋ฐฑ์—…์€ ํฌ๋ก ํƒญ์œผ๋กœ ๊ฐ€์žฅ ๋งŽ์ด ์ž๋™ํ™”ํ•˜๋Š” ์ž‘์—…์ž…๋‹ˆ๋‹ค. MySQL ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ๋งค์ผ ์ƒˆ๋ฒฝ 4์‹œ์— ๋ฐฑ์—…ํ•˜๋Š” ์„ค์ •์€ ์ด๋ ‡์Šต๋‹ˆ๋‹ค.

    0 4 * * * mysqldump -u root -p'๋น„๋ฐ€๋ฒˆํ˜ธ' mydb > /backup/mydb_$(date +\%Y\%m\%d).sql

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

    ์˜ค๋ž˜๋œ ๋กœ๊ทธ ํŒŒ์ผ์„ ์ •๋ฆฌํ•˜๋Š” ๊ฒƒ๋„ ํ”ํ•ฉ๋‹ˆ๋‹ค. 30์ผ ์ด์ƒ ๋œ ๋กœ๊ทธ ํŒŒ์ผ์„ ๋งค์ฃผ ์ผ์š”์ผ์— ์‚ญ์ œํ•˜๋Š” ์„ค์ •์ž…๋‹ˆ๋‹ค.

    0 5 * * 0 find /var/log/myapp/ -name "*.log" -mtime +30 -delete

    find ๋ช…๋ น์–ด์˜ -mtime +30์€ ์ˆ˜์ •๋œ ์ง€ 30์ผ์ด ์ง€๋‚œ ํŒŒ์ผ์„ ์ฐพ๋Š”๋‹ค๋Š” ๋œป์ด๊ณ , -delete๋Š” ์ฐพ์€ ํŒŒ์ผ์„ ์‚ญ์ œํ•ฉ๋‹ˆ๋‹ค.

    ์„œ๋ฒ„๊ฐ€ ์ •์ƒ์ ์œผ๋กœ ๋Œ๊ณ  ์žˆ๋Š”์ง€ ์ฃผ๊ธฐ์ ์œผ๋กœ ํ™•์ธํ•˜๋Š” ํ—ฌ์Šค์ฒดํฌ๋„ ์ž์ฃผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

    */5 * * * * curl -s -o /dev/null -w "%{http_code}" https://todayfunplay.com | grep -q "200" || echo "์‚ฌ์ดํŠธ ๋‹ค์šด" >> /var/log/healthcheck.log

    5๋ถ„๋งˆ๋‹ค ์‚ฌ์ดํŠธ์— ์š”์ฒญ์„ ๋ณด๋‚ด์„œ ์‘๋‹ต ์ฝ”๋“œ๊ฐ€ 200์ด ์•„๋‹ˆ๋ฉด ๋กœ๊ทธ์— ๊ธฐ๋กํ•˜๋Š” ์„ค์ •์ž…๋‹ˆ๋‹ค. ๊ฐ„๋‹จํ•œ ๋ชจ๋‹ˆํ„ฐ๋ง ์šฉ๋„๋กœ ์“ธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    ์ด์ „ ๊ธ€์—์„œ ๋‹ค๋ค˜๋˜ Let’s Encrypt ์ธ์ฆ์„œ ์ž๋™ ๊ฐฑ์‹ ๋„ ํฌ๋ก ํƒญ์œผ๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

    0 3 * * * certbot renew --quiet

    ๋งค์ผ ์ƒˆ๋ฒฝ 3์‹œ์— ์ธ์ฆ์„œ ๋งŒ๋ฃŒ๋ฅผ ํ™•์ธํ•˜๊ณ  ํ•„์š”ํ•˜๋ฉด ๊ฐฑ์‹ ํ•ฉ๋‹ˆ๋‹ค.

    ํฌ๋ก ํƒญ ์ž‘์„ฑ ์‹œ ์ฃผ์˜ํ•  ์ 

    ํฌ๋ก ํƒญ์—์„œ ๊ฐ€์žฅ ๋งŽ์ด ์‹ค์ˆ˜ํ•˜๋Š” ๋ถ€๋ถ„์ด ๊ฒฝ๋กœ ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค. ํฌ๋ก ์€ ์‚ฌ์šฉ์ž๊ฐ€ ์ง์ ‘ ๋กœ๊ทธ์ธํ•œ ์…ธ ํ™˜๊ฒฝ๊ณผ ๋‹ค๋ฅธ ํ™˜๊ฒฝ์—์„œ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค. ํ„ฐ๋ฏธ๋„์—์„œ๋Š” ์ž˜ ๋˜๋Š” ๋ช…๋ น์–ด๊ฐ€ ํฌ๋ก ์—์„œ๋Š” ์•ˆ ๋˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ํ”ํ•œ๋ฐ, ํ™˜๊ฒฝ ๋ณ€์ˆ˜์™€ PATH๊ฐ€ ๋‹ค๋ฅด๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

    ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์€ ๊ฐ„๋‹จํ•ฉ๋‹ˆ๋‹ค. ํฌ๋ก ํƒญ์—์„œ ๋ช…๋ น์–ด๋ฅผ ์“ธ ๋•Œ๋Š” ํ•ญ์ƒ ์ ˆ๋Œ€ ๊ฒฝ๋กœ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

    # ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ์•ˆ ๋  ์ˆ˜ ์žˆ์Œ
    * * * * * node /home/ubuntu/app.js
    
    # ์ด๋ ‡๊ฒŒ ์ ˆ๋Œ€ ๊ฒฝ๋กœ๋ฅผ ์จ์•ผ ํ™•์‹คํ•จ
    * * * * * /usr/bin/node /home/ubuntu/app.js

    ๋ช…๋ น์–ด์˜ ์ ˆ๋Œ€ ๊ฒฝ๋กœ๋ฅผ ๋ชจ๋ฅด๊ฒ ์œผ๋ฉด which ๋ช…๋ น์–ด๋กœ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    which node
    /usr/bin/node

    ์Šคํฌ๋ฆฝํŠธ ํŒŒ์ผ์„ ์‹คํ–‰ํ•  ๋•Œ๋Š” ์‹คํ–‰ ๊ถŒํ•œ์ด ์žˆ๋Š”์ง€๋„ ํ™•์ธํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด์ „ ๊ธ€์—์„œ ๋‹ค๋ค˜๋˜ chmod๋กœ ์‹คํ–‰ ๊ถŒํ•œ์„ ์ค˜์•ผ ํ•ฉ๋‹ˆ๋‹ค.

    chmod +x /home/ubuntu/backup.sh

    ํฌ๋ก ํƒญ์—์„œ ํผ์„ผํŠธ ๊ธฐํ˜ธ๋ฅผ ์“ธ ๋•Œ๋Š” ๋ฐ˜๋“œ์‹œ ๋ฐฑ์Šฌ๋ž˜์‹œ๋กœ ์ด์Šค์ผ€์ดํ”„ํ•ด์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ๋„ ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค. ํฌ๋ก ์—์„œ ํผ์„ผํŠธ ๊ธฐํ˜ธ๋Š” ์ค„๋ฐ”๊ฟˆ์œผ๋กœ ํ•ด์„๋˜๊ธฐ ๋•Œ๋ฌธ์— ์ด์Šค์ผ€์ดํ”„ํ•˜์ง€ ์•Š์œผ๋ฉด ๋ช…๋ น์–ด๊ฐ€ ์ž˜๋ ค์„œ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค.

    ํฌ๋ก  ์‹คํ–‰ ๊ฒฐ๊ณผ ํ™•์ธํ•˜๊ธฐ

    ํฌ๋ก ์ด ์ œ๋Œ€๋กœ ๋™์ž‘ํ•˜๋Š”์ง€ ํ™•์ธํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋ชจ๋ฅด๋ฉด ๋ฌธ์ œ๊ฐ€ ์ƒ๊ฒจ๋„ ์•Œ ์ˆ˜๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

    ๊ฐ€์žฅ ๊ธฐ๋ณธ์ ์ธ ๋ฐฉ๋ฒ•์€ ์‹œ์Šคํ…œ ๋กœ๊ทธ๋ฅผ ํ™•์ธํ•˜๋Š” ๊ฒ๋‹ˆ๋‹ค.

    grep CRON /var/log/syslog

    ์ด ๋ช…๋ น์–ด๋ฅผ ์น˜๋ฉด ํฌ๋ก ์ด ์‹คํ–‰ํ•œ ์ž‘์—…์˜ ๋กœ๊ทธ๊ฐ€ ๋‚˜์˜ต๋‹ˆ๋‹ค. ์–ด๋–ค ์‚ฌ์šฉ์ž์˜ ์–ด๋–ค ๋ช…๋ น์–ด๊ฐ€ ์–ธ์ œ ์‹คํ–‰๋๋Š”์ง€ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    ํฌ๋ก  ์ž‘์—…์˜ ์ถœ๋ ฅ ๊ฒฐ๊ณผ๋ฅผ ํŒŒ์ผ๋กœ ์ €์žฅํ•˜๊ณ  ์‹ถ์œผ๋ฉด ๋ฆฌ๋‹ค์ด๋ ‰์…˜์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

    0 3 * * * /home/ubuntu/backup.sh >> /var/log/backup.log 2>&1

    ๋Š” ์ถœ๋ ฅ์„ ํŒŒ์ผ์— ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ์ด๊ณ , 2>&1์€ ์—๋Ÿฌ ์ถœ๋ ฅ๋„ ๊ฐ™์€ ํŒŒ์ผ์— ์ €์žฅํ•˜๋ผ๋Š” ๋œป์ž…๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ์„ค์ •ํ•ด๋‘๋ฉด ๋ฐฑ์—… ์Šคํฌ๋ฆฝํŠธ์˜ ์‹คํ–‰ ๊ฒฐ๊ณผ์™€ ์—๋Ÿฌ ๋ฉ”์‹œ์ง€๋ฅผ ์ „๋ถ€ ๋กœ๊ทธ ํŒŒ์ผ์—์„œ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    ๋ฐ˜๋Œ€๋กœ ์ถœ๋ ฅ์ด ํ•„์š” ์—†์œผ๋ฉด /dev/null๋กœ ๋ณด๋‚ด์„œ ๋ฒ„๋ฆด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    0 3 * * * /home/ubuntu/backup.sh > /dev/null 2>&1

    ํฌ๋ก ์€ ๊ธฐ๋ณธ์ ์œผ๋กœ ์ž‘์—…์˜ ์ถœ๋ ฅ์ด ์žˆ์œผ๋ฉด ์‹œ์Šคํ…œ ๋ฉ”์ผ๋กœ ๋ณด๋ƒ…๋‹ˆ๋‹ค. ๋ฉ”์ผ ์„ค์ •์ด ์•ˆ ๋˜์–ด ์žˆ์œผ๋ฉด “You have new mail”์ด๋ผ๋Š” ๋ฉ”์‹œ์ง€๊ฐ€ ๊ณ„์† ์Œ“์ผ ์ˆ˜ ์žˆ๋Š”๋ฐ, ์œ„์ฒ˜๋Ÿผ ์ถœ๋ ฅ์„ /dev/null๋กœ ๋ณด๋‚ด๋ฉด ์ด ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋ฉ๋‹ˆ๋‹ค.

    ์‹œ์Šคํ…œ ํฌ๋ก ๊ณผ ์‚ฌ์šฉ์ž ํฌ๋ก ์˜ ์ฐจ์ด

    ์ง€๊ธˆ๊นŒ์ง€ ๋‹ค๋ฃฌ ๊ฑด ์‚ฌ์šฉ์ž ํฌ๋ก ํƒญ์ž…๋‹ˆ๋‹ค. crontab -e๋กœ ํŽธ์ง‘ํ•˜๋Š” ๊ฒƒ์ด๊ณ , ํ•ด๋‹น ์‚ฌ์šฉ์ž์˜ ๊ถŒํ•œ์œผ๋กœ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค.

    ์‹œ์Šคํ…œ ์ „์ฒด์— ์ ์šฉ๋˜๋Š” ํฌ๋ก  ์„ค์ •์€ /etc/crontab ํŒŒ์ผ์— ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ํŒŒ์ผ์€ ์‚ฌ์šฉ์ž ํฌ๋ก ํƒญ๊ณผ ํ˜•์‹์ด ์•ฝ๊ฐ„ ๋‹ค๋ฆ…๋‹ˆ๋‹ค.

    0 3 * * * root /home/ubuntu/backup.sh

    ์‹œ๊ฐ„ ํ˜•์‹๊ณผ ๋ช…๋ น์–ด ์‚ฌ์ด์— ์‹คํ–‰ํ•  ์‚ฌ์šฉ์ž ์ด๋ฆ„์ด ๋“ค์–ด๊ฐ‘๋‹ˆ๋‹ค. ์‹œ์Šคํ…œ ํฌ๋ก ํƒญ์—์„œ๋Š” ์–ด๋–ค ์‚ฌ์šฉ์ž ๊ถŒํ•œ์œผ๋กœ ์‹คํ–‰ํ• ์ง€ ์ง์ ‘ ์ง€์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

    /etc/cron.d/ ๋””๋ ‰ํ† ๋ฆฌ์— ๊ฐœ๋ณ„ ํŒŒ์ผ๋กœ ๋„ฃ์„ ์ˆ˜๋„ ์žˆ๊ณ , /etc/cron.daily/, /etc/cron.weekly/, /etc/cron.monthly/ ๋””๋ ‰ํ† ๋ฆฌ์— ์Šคํฌ๋ฆฝํŠธ๋ฅผ ๋„ฃ์œผ๋ฉด ์ด๋ฆ„ ๊ทธ๋Œ€๋กœ ๋งค์ผ, ๋งค์ฃผ, ๋งค์›” ์ž๋™ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค. ์ด ๋””๋ ‰ํ† ๋ฆฌ๋“ค์€ ์‹œ๊ฐ„์„ ์„ธ๋ฐ€ํ•˜๊ฒŒ ์ง€์ •ํ•  ํ•„์š” ์—†์ด ์Šคํฌ๋ฆฝํŠธ๋งŒ ๋„ฃ์œผ๋ฉด ๋˜๊ธฐ ๋•Œ๋ฌธ์— ํŽธํ•ฉ๋‹ˆ๋‹ค.

    ํฌ๋ก  ๋Œ€์‹  ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ๋“ค

    ํฌ๋ก ์€ ๋‹จ์ˆœํ•œ ๋ฐ˜๋ณต ์ž‘์—…์—๋Š” ์ถฉ๋ถ„ํ•˜์ง€๋งŒ ํ•œ๊ณ„๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ž‘์—… ๊ฐ„ ์˜์กด ๊ด€๊ณ„๋ฅผ ์„ค์ •ํ•˜๊ฑฐ๋‚˜, ์‹คํŒจํ–ˆ์„ ๋•Œ ์žฌ์‹œ๋„ ๋กœ์ง์„ ๋„ฃ๊ฑฐ๋‚˜, ์‹คํ–‰ ์ƒํƒœ๋ฅผ ์›น์—์„œ ๋ชจ๋‹ˆํ„ฐ๋งํ•˜๋Š” ๊ฑด ํฌ๋ก ๋งŒ์œผ๋กœ๋Š” ์–ด๋ ต์Šต๋‹ˆ๋‹ค.

    ์ด๋Ÿฐ ๊ฒฝ์šฐ์—๋Š” systemd timer๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ์Šต๋‹ˆ๋‹ค. systemd๋Š” ๋ฆฌ๋ˆ…์Šค์˜ ์„œ๋น„์Šค ๊ด€๋ฆฌ ๋„๊ตฌ์ธ๋ฐ ํƒ€์ด๋จธ ๊ธฐ๋Šฅ๋„ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ํฌ๋ก ๋ณด๋‹ค ์„ค์ •์ด ๋ณต์žกํ•˜์ง€๋งŒ ์„œ๋น„์Šค์™€ ์—ฐ๋™์ด ์‰ฝ๊ณ  ๋กœ๊ทธ ๊ด€๋ฆฌ๊ฐ€ ํŽธํ•ฉ๋‹ˆ๋‹ค.

    ๋” ๋ณต์žกํ•œ ์ž‘์—… ์Šค์ผ€์ค„๋ง์ด ํ•„์š”ํ•˜๋ฉด Jenkins, Airflow ๊ฐ™์€ ์ „๋ฌธ ๋„๊ตฌ๋ฅผ ์“ฐ๊ธฐ๋„ ํ•ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์„œ๋ฒ„ ํ•œ๋‘ ๋Œ€๋ฅผ ์šด์˜ํ•˜๋ฉด์„œ ๊ธฐ๋ณธ์ ์ธ ์ž๋™ํ™”๋ฅผ ํ•˜๋Š” ์ˆ˜์ค€์ด๋ผ๋ฉด ํฌ๋ก ํƒญ๋งŒ์œผ๋กœ ์ถฉ๋ถ„ํ•ฉ๋‹ˆ๋‹ค.

    ๋งˆ๋ฌด๋ฆฌ

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

  • ๋ฆฌ๋ˆ…์Šค ํŒŒ์ผ ๊ถŒํ•œ(chmod, chown) ์‰ฝ๊ฒŒ ์ดํ•ดํ•˜๊ธฐ

    ๋ฆฌ๋ˆ…์Šค ํŒŒ์ผ ๊ถŒํ•œ(chmod, chown) ์‰ฝ๊ฒŒ ์ดํ•ดํ•˜๊ธฐ

    ๋ฆฌ๋ˆ…์Šค ์„œ๋ฒ„๋ฅผ ์šด์˜ํ•˜๋‹ค ๋ณด๋ฉด “Permission denied”๋ผ๋Š” ์—๋Ÿฌ๋ฅผ ํ•œ ๋ฒˆ์ฏค์€ ๋งŒ๋‚˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ๋ถ„๋ช… ํŒŒ์ผ์ด ๊ฑฐ๊ธฐ ์žˆ๋Š”๋ฐ ์—ด ์ˆ˜ ์—†๋‹ค๊ฑฐ๋‚˜, ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‹คํ–‰ํ•˜๋ ค๋Š”๋ฐ ๊ถŒํ•œ์ด ์—†๋‹ค๊ณ  ๋‚˜์˜ค๋Š” ๊ฒฝ์šฐ์ž…๋‹ˆ๋‹ค. ์ด๋Ÿฐ ๋ฌธ์ œ๊ฐ€ ์ƒ๊ธฐ๋ฉด ๋ณดํ†ต chmod๋‚˜ chown ๋ช…๋ น์–ด๋ฅผ ์จ์„œ ํ•ด๊ฒฐํ•˜๋ผ๋Š” ๋‹ต๋ณ€์ด ๋‚˜์˜ต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ๋ช…๋ น์–ด๋งŒ ๋”ฐ๋ผ ์น˜๋ฉด ๋‹น์žฅ์€ ํ•ด๊ฒฐ๋˜์ง€๋งŒ ์™œ ๊ทธ๋ ‡๊ฒŒ ํ•˜๋Š” ๊ฑด์ง€ ์ดํ•ดํ•˜์ง€ ๋ชปํ•˜๋ฉด ๋‚˜์ค‘์— ๋˜ ๊ฐ™์€ ๋ฌธ์ œ๋ฅผ ๊ฒช๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ์ด๋ฒˆ ๊ธ€์—์„œ๋Š” ๋ฆฌ๋ˆ…์Šค ํŒŒ์ผ ๊ถŒํ•œ์ด ์–ด๋–ค ๊ตฌ์กฐ๋กœ ๋˜์–ด ์žˆ๋Š”์ง€, chmod์™€ chown์ด ๊ฐ๊ฐ ๋ฌด์—‡์„ ๋ฐ”๊พธ๋Š” ๊ฑด์ง€๋ฅผ ๊ธฐ์ดˆ๋ถ€ํ„ฐ ์ •๋ฆฌํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

    ๋ฆฌ๋ˆ…์Šค๋Š” ์™œ ํŒŒ์ผ๋งˆ๋‹ค ๊ถŒํ•œ์„ ๋‚˜๋ˆ„๋Š”๊ฐ€

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

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

    ํŒŒ์ผ ๊ถŒํ•œ ํ™•์ธํ•˜๋Š” ๋ฐฉ๋ฒ•

    ํ„ฐ๋ฏธ๋„์—์„œ ls -l ๋ช…๋ น์–ด๋ฅผ ์น˜๋ฉด ํŒŒ์ผ ๋ชฉ๋ก๊ณผ ํ•จ๊ป˜ ๊ถŒํ•œ ์ •๋ณด๊ฐ€ ๋‚˜์˜ต๋‹ˆ๋‹ค.

    ls -l
    -rw-r--r-- 1 ubuntu ubuntu  1024 Jun 15 10:30 index.html
    drwxr-xr-x 2 ubuntu ubuntu  4096 Jun 15 10:30 images
    -rwxr-xr-- 1 root   root     512 Jun 15 10:30 deploy.sh

    ์™ผ์ชฝ์— ๋‚˜์˜ค๋Š” -rw-r–r– ๊ฐ™์€ ๋ฌธ์ž์—ด์ด ๊ถŒํ•œ ํ‘œ์‹œ์ž…๋‹ˆ๋‹ค. ์ฒ˜์Œ์—๋Š” ์ด๊ฒŒ ๋ฌด์Šจ ์•”ํ˜ธ์ฒ˜๋Ÿผ ๋ณด์ด์ง€๋งŒ ๊ทœ์น™์„ ์•Œ๋ฉด ๊ฐ„๋‹จํ•ฉ๋‹ˆ๋‹ค.

    ๋งจ ์•ž ํ•œ ๊ธ€์ž๋Š” ํŒŒ์ผ ์ข…๋ฅ˜์ž…๋‹ˆ๋‹ค. -๋Š” ์ผ๋ฐ˜ ํŒŒ์ผ์ด๊ณ  d๋Š” ๋””๋ ‰ํ† ๋ฆฌ์ž…๋‹ˆ๋‹ค. ๊ทธ ๋’ค๋กœ 9๊ธ€์ž๊ฐ€ ๊ถŒํ•œ์ธ๋ฐ, 3๊ธ€์ž์”ฉ ๋Š์–ด์„œ ์ฝ์œผ๋ฉด ๋ฉ๋‹ˆ๋‹ค.

    ์ฒซ ๋ฒˆ์งธ ์„ธ ๊ธ€์ž๋Š” ์†Œ์œ ์ž(owner)์˜ ๊ถŒํ•œ์ž…๋‹ˆ๋‹ค. ๋‘ ๋ฒˆ์งธ ์„ธ ๊ธ€์ž๋Š” ๊ทธ๋ฃน(group)์˜ ๊ถŒํ•œ์ž…๋‹ˆ๋‹ค. ์„ธ ๋ฒˆ์งธ ์„ธ ๊ธ€์ž๋Š” ๊ธฐํƒ€ ์‚ฌ์šฉ์ž(others)์˜ ๊ถŒํ•œ์ž…๋‹ˆ๋‹ค.

    ๊ฐ ์ž๋ฆฌ์—๋Š” r, w, x ๋˜๋Š” -๊ฐ€ ๋“ค์–ด๊ฐ‘๋‹ˆ๋‹ค. r์€ ์ฝ๊ธฐ(read), w๋Š” ์“ฐ๊ธฐ(write), x๋Š” ์‹คํ–‰(execute)์ž…๋‹ˆ๋‹ค. -๋Š” ํ•ด๋‹น ๊ถŒํ•œ์ด ์—†๋‹ค๋Š” ๋œป์ž…๋‹ˆ๋‹ค.

    ๊ทธ๋ž˜์„œ -rw-r–r–์„ ํ•ด์„ํ•˜๋ฉด ์ด๋ ‡์Šต๋‹ˆ๋‹ค. ์†Œ์œ ์ž๋Š” ์ฝ๊ธฐ์™€ ์“ฐ๊ธฐ๊ฐ€ ๊ฐ€๋Šฅํ•˜๊ณ , ๊ทธ๋ฃน์€ ์ฝ๊ธฐ๋งŒ ๊ฐ€๋Šฅํ•˜๊ณ , ๊ธฐํƒ€ ์‚ฌ์šฉ์ž๋„ ์ฝ๊ธฐ๋งŒ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ์•„๋ฌด๋„ ์‹คํ–‰ ๊ถŒํ•œ์€ ์—†์Šต๋‹ˆ๋‹ค.

    ์†Œ์œ ์ž์™€ ๊ทธ๋ฃน์ด๋ž€

    ls -l ๊ฒฐ๊ณผ์—์„œ ubuntu ubuntu๋ผ๊ณ  ๋‚˜์˜ค๋Š” ๋ถ€๋ถ„์ด ์†Œ์œ ์ž์™€ ๊ทธ๋ฃน์ž…๋‹ˆ๋‹ค. ์•ž์˜ ubuntu๊ฐ€ ํŒŒ์ผ ์†Œ์œ ์ž์ด๊ณ , ๋’ค์˜ ubuntu๊ฐ€ ํŒŒ์ผ์ด ์†ํ•œ ๊ทธ๋ฃน์ž…๋‹ˆ๋‹ค.

    ๋ฆฌ๋ˆ…์Šค์—์„œ ๋ชจ๋“  ํŒŒ์ผ์€ ๋ฐ˜๋“œ์‹œ ํ•˜๋‚˜์˜ ์†Œ์œ ์ž์™€ ํ•˜๋‚˜์˜ ๊ทธ๋ฃน์— ์†ํ•ฉ๋‹ˆ๋‹ค. ์†Œ์œ ์ž๋Š” ๋ณดํ†ต ํŒŒ์ผ์„ ๋งŒ๋“  ์‚ฌ์šฉ์ž์ด๊ณ , ๊ทธ๋ฃน์€ ๊ทธ ์‚ฌ์šฉ์ž๊ฐ€ ์†ํ•œ ๊ธฐ๋ณธ ๊ทธ๋ฃน์ด ๋ฉ๋‹ˆ๋‹ค.

    ์™œ ๊ทธ๋ฃน์ด๋ผ๋Š” ๊ฐœ๋…์ด ํ•„์š”ํ•œ์ง€ ์˜๋ฌธ์ด ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ๊ฐœ๋ฐœํŒ€ ์„œ๋ฒ„์—์„œ ์„ธ ๋ช…์˜ ๊ฐœ๋ฐœ์ž๊ฐ€ ๊ฐ™์€ ํ”„๋กœ์ ํŠธ ํŒŒ์ผ์„ ์ˆ˜์ •ํ•ด์•ผ ํ•œ๋‹ค๊ณ  ํ•ฉ์‹œ๋‹ค. ํŒŒ์ผ ์†Œ์œ ์ž๋Š” ํ•œ ๋ช…๋งŒ ๋  ์ˆ˜ ์žˆ์œผ๋‹ˆ๊นŒ, ๋‚˜๋จธ์ง€ ๋‘ ๋ช…์€ ๊ธฐํƒ€ ์‚ฌ์šฉ์ž(others) ๊ถŒํ•œ์œผ๋กœ ์ ‘๊ทผํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ others ๊ถŒํ•œ์„ ์—ด์–ด๋‘๋ฉด ์„œ๋ฒ„์— ์ ‘์† ๊ฐ€๋Šฅํ•œ ๋ชจ๋“  ์‚ฌ์šฉ์ž์—๊ฒŒ ์—ด๋ฆฌ๋Š” ๊ฒ๋‹ˆ๋‹ค. ์ด๋•Œ ์„ธ ๋ช…์„ ๊ฐ™์€ ๊ทธ๋ฃน์— ๋„ฃ๊ณ  ๊ทธ๋ฃน ๊ถŒํ•œ์„ ์„ค์ •ํ•˜๋ฉด ํ•ด๋‹น ๊ทธ๋ฃน์— ์†ํ•œ ์‚ฌ๋žŒ๋งŒ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    chmod โ€” ๊ถŒํ•œ ๋ณ€๊ฒฝํ•˜๊ธฐ

    chmod๋Š” ํŒŒ์ผ์˜ ๊ถŒํ•œ์„ ๋ณ€๊ฒฝํ•˜๋Š” ๋ช…๋ น์–ด์ž…๋‹ˆ๋‹ค. change mode์˜ ์ค„์ž„๋ง์ž…๋‹ˆ๋‹ค. ์‚ฌ์šฉ๋ฒ•์€ ํฌ๊ฒŒ ๋‘ ๊ฐ€์ง€๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

    ์ฒซ ๋ฒˆ์งธ๋Š” ์ˆซ์ž๋กœ ์„ค์ •ํ•˜๋Š” ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค. ์ด๊ฒŒ ๋” ์ž์ฃผ ์“ฐ์ž…๋‹ˆ๋‹ค.

    chmod 755 deploy.sh

    ์—ฌ๊ธฐ์„œ 755๋Š” ์„ธ ์ž๋ฆฌ ์ˆซ์ž์ธ๋ฐ, ๊ฐ ์ž๋ฆฌ๊ฐ€ ์†Œ์œ ์ž, ๊ทธ๋ฃน, ๊ธฐํƒ€ ์‚ฌ์šฉ์ž์˜ ๊ถŒํ•œ์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค. ๊ฐ ์ˆซ์ž๋Š” r, w, x ๊ถŒํ•œ์˜ ํ•ฉ์‚ฐ์ž…๋‹ˆ๋‹ค. r์€ 4, w๋Š” 2, x๋Š” 1์ž…๋‹ˆ๋‹ค.

    7์€ 4+2+1์ด๋‹ˆ๊นŒ ์ฝ๊ธฐ, ์“ฐ๊ธฐ, ์‹คํ–‰ ์ „๋ถ€ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. 5๋Š” 4+0+1์ด๋‹ˆ๊นŒ ์ฝ๊ธฐ์™€ ์‹คํ–‰๋งŒ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. 0์ด๋ฉด ์•„๋ฌด ๊ถŒํ•œ์ด ์—†์Šต๋‹ˆ๋‹ค.

    ๊ทธ๋ž˜์„œ chmod 755 deploy.sh๋Š” ์†Œ์œ ์ž์—๊ฒŒ ๋ชจ๋“  ๊ถŒํ•œ์„ ์ฃผ๊ณ , ๊ทธ๋ฃน๊ณผ ๊ธฐํƒ€ ์‚ฌ์šฉ์ž์—๊ฒŒ๋Š” ์ฝ๊ธฐ์™€ ์‹คํ–‰ ๊ถŒํ•œ๋งŒ ์ฃผ๊ฒ ๋‹ค๋Š” ๋œป์ž…๋‹ˆ๋‹ค.

    ์ž์ฃผ ์‚ฌ์šฉํ•˜๋Š” ์ˆซ์ž ์กฐํ•ฉ์„ ์ •๋ฆฌํ•˜๋ฉด ์ด๋ ‡์Šต๋‹ˆ๋‹ค. 644๋Š” ์†Œ์œ ์ž๊ฐ€ ์ฝ๊ธฐ ์“ฐ๊ธฐ, ๋‚˜๋จธ์ง€๋Š” ์ฝ๊ธฐ๋งŒ ๊ฐ€๋Šฅํ•œ ์„ค์ •์ด๊ณ  ์ผ๋ฐ˜ ํŒŒ์ผ์— ๋งŽ์ด ์”๋‹ˆ๋‹ค. 755๋Š” ์†Œ์œ ์ž๊ฐ€ ์ „๋ถ€ ๊ฐ€๋Šฅํ•˜๊ณ  ๋‚˜๋จธ์ง€๋Š” ์ฝ๊ธฐ ์‹คํ–‰๋งŒ ๊ฐ€๋Šฅํ•œ ์„ค์ •์ด๊ณ  ์Šคํฌ๋ฆฝํŠธ๋‚˜ ๋””๋ ‰ํ† ๋ฆฌ์— ๋งŽ์ด ์”๋‹ˆ๋‹ค. 600์€ ์†Œ์œ ์ž๋งŒ ์ฝ๊ธฐ ์“ฐ๊ธฐ ๊ฐ€๋Šฅํ•˜๊ณ  ๋‚˜๋จธ์ง€๋Š” ์ ‘๊ทผ ๋ถˆ๊ฐ€์ธ ์„ค์ •์ด๊ณ  SSH ํ‚ค ๊ฐ™์€ ๋ฏผ๊ฐํ•œ ํŒŒ์ผ์— ์”๋‹ˆ๋‹ค. 700์€ ์†Œ์œ ์ž๋งŒ ์ „๋ถ€ ๊ฐ€๋Šฅํ•˜๊ณ  ๋‚˜๋จธ์ง€๋Š” ์ ‘๊ทผ ๋ถˆ๊ฐ€์ธ ์„ค์ •์ด๊ณ  ๊ฐœ์ธ ๋””๋ ‰ํ† ๋ฆฌ์— ์”๋‹ˆ๋‹ค.

    ๋‘ ๋ฒˆ์งธ๋Š” ๋ฌธ์ž๋กœ ์„ค์ •ํ•˜๋Š” ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค.

    chmod u+x deploy.sh

    u๋Š” ์†Œ์œ ์ž(user), g๋Š” ๊ทธ๋ฃน(group), o๋Š” ๊ธฐํƒ€(others), a๋Š” ์ „์ฒด(all)์ž…๋‹ˆ๋‹ค. +๋Š” ๊ถŒํ•œ ์ถ”๊ฐ€, -๋Š” ๊ถŒํ•œ ์ œ๊ฑฐ์ž…๋‹ˆ๋‹ค. ์œ„ ๋ช…๋ น์–ด๋Š” ์†Œ์œ ์ž์—๊ฒŒ ์‹คํ–‰ ๊ถŒํ•œ์„ ์ถ”๊ฐ€ํ•˜๋ผ๋Š” ๋œป์ž…๋‹ˆ๋‹ค.

    ํŠน์ • ๊ถŒํ•œ ํ•˜๋‚˜๋งŒ ๋ฐ”๊พธ๊ณ  ์‹ถ์„ ๋•Œ๋Š” ๋ฌธ์ž ๋ฐฉ์‹์ด ํŽธํ•ฉ๋‹ˆ๋‹ค. ์ „์ฒด ๊ถŒํ•œ์„ ํ•œ ๋ฒˆ์— ์„ค์ •ํ•  ๋•Œ๋Š” ์ˆซ์ž ๋ฐฉ์‹์ด ๊น”๋”ํ•ฉ๋‹ˆ๋‹ค.

    chown โ€” ์†Œ์œ ์ž ๋ณ€๊ฒฝํ•˜๊ธฐ

    chown์€ ํŒŒ์ผ์˜ ์†Œ์œ ์ž์™€ ๊ทธ๋ฃน์„ ๋ณ€๊ฒฝํ•˜๋Š” ๋ช…๋ น์–ด์ž…๋‹ˆ๋‹ค. change owner์˜ ์ค„์ž„๋ง์ž…๋‹ˆ๋‹ค.

    sudo chown www-data:www-data /var/www/today-play/index.html

    ์ฝœ๋ก  ์•ž์ด ์†Œ์œ ์ž, ๋’ค๊ฐ€ ๊ทธ๋ฃน์ž…๋‹ˆ๋‹ค. ์ด ๋ช…๋ น์–ด๋Š” index.html ํŒŒ์ผ์˜ ์†Œ์œ ์ž์™€ ๊ทธ๋ฃน์„ ๋‘˜ ๋‹ค www-data๋กœ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค. ์›น ์„œ๋ฒ„๊ฐ€ ์ด ํŒŒ์ผ์„ ์ฝ์–ด์•ผ ํ•˜๋Š”๋ฐ ์†Œ์œ ์ž๊ฐ€ ๋‹ค๋ฅธ ์‚ฌ์šฉ์ž๋กœ ๋˜์–ด ์žˆ์œผ๋ฉด ๊ถŒํ•œ ๋ฌธ์ œ๊ฐ€ ์ƒ๊ธฐ๊ธฐ ๋•Œ๋ฌธ์—, ์›น ์„œ๋ฒ„ ์‚ฌ์šฉ์ž๋กœ ์†Œ์œ ๊ถŒ์„ ๋„˜๊ธฐ๋Š” ๊ฒ๋‹ˆ๋‹ค.

    ์†Œ์œ ์ž๋งŒ ๋ฐ”๊พธ๊ณ  ์‹ถ์œผ๋ฉด ์ฝœ๋ก ๊ณผ ๊ทธ๋ฃน์„ ์ƒ๋žตํ•ฉ๋‹ˆ๋‹ค.

    sudo chown www-data /var/www/today-play/index.html

    ๊ทธ๋ฃน๋งŒ ๋ฐ”๊พธ๊ณ  ์‹ถ์œผ๋ฉด ์ฝœ๋ก  ์•ž์„ ๋น„์šฐ๋ฉด ๋ฉ๋‹ˆ๋‹ค.

    sudo chown :developers /var/www/today-play/index.html

    ๋””๋ ‰ํ† ๋ฆฌ์™€ ๊ทธ ์•ˆ์˜ ๋ชจ๋“  ํŒŒ์ผ์˜ ์†Œ์œ ์ž๋ฅผ ํ•œ ๋ฒˆ์— ๋ฐ”๊พธ๋ ค๋ฉด -R ์˜ต์…˜์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

    sudo chown -R www-data:www-data /var/www/today-play/

    -R์€ ์žฌ๊ท€์ (recursive)์œผ๋กœ ํ•˜์œ„ ํŒŒ์ผ๊ณผ ํด๋”๋ฅผ ์ „๋ถ€ ํฌํ•จํ•œ๋‹ค๋Š” ๋œป์ž…๋‹ˆ๋‹ค. ์›น ์‚ฌ์ดํŠธ ๋””๋ ‰ํ† ๋ฆฌ ์ „์ฒด์˜ ์†Œ์œ ์ž๋ฅผ ๋ฐ”๊ฟ€ ๋•Œ ์ž์ฃผ ์”๋‹ˆ๋‹ค. chmod์—๋„ -R ์˜ต์…˜์ด ์žˆ๊ณ  ๊ฐ™์€ ๋ฐฉ์‹์œผ๋กœ ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค.

    chown์€ ๋ณดํ†ต sudo๋ฅผ ๋ถ™์—ฌ์•ผ ํ•ฉ๋‹ˆ๋‹ค. ํŒŒ์ผ ์†Œ์œ ๊ถŒ์„ ๋ฐ”๊พธ๋Š” ๊ฑด ์‹œ์Šคํ…œ ๊ด€๋ฆฌ์ž ๊ถŒํ•œ์ด ํ•„์š”ํ•œ ์ž‘์—…์ด๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

    ๋””๋ ‰ํ† ๋ฆฌ ๊ถŒํ•œ์€ ํŒŒ์ผ๊ณผ ๋‹ค๋ฅด๋‹ค

    ๋””๋ ‰ํ† ๋ฆฌ์—์„œ r, w, x ๊ถŒํ•œ์˜ ์˜๋ฏธ๋Š” ํŒŒ์ผ๊ณผ ์กฐ๊ธˆ ๋‹ค๋ฆ…๋‹ˆ๋‹ค.

    ๋””๋ ‰ํ† ๋ฆฌ์—์„œ r์€ ๋””๋ ‰ํ† ๋ฆฌ ์•ˆ์˜ ํŒŒ์ผ ๋ชฉ๋ก์„ ๋ณผ ์ˆ˜ ์žˆ๋Š” ๊ถŒํ•œ์ž…๋‹ˆ๋‹ค. ls ๋ช…๋ น์–ด๋กœ ๋‚ด์šฉ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋А๋ƒ์˜ ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค.

    w๋Š” ๋””๋ ‰ํ† ๋ฆฌ ์•ˆ์—์„œ ํŒŒ์ผ์„ ์ƒ์„ฑํ•˜๊ฑฐ๋‚˜ ์‚ญ์ œํ•  ์ˆ˜ ์žˆ๋Š” ๊ถŒํ•œ์ž…๋‹ˆ๋‹ค. ํŒŒ์ผ ๋‚ด์šฉ์„ ์ˆ˜์ •ํ•˜๋Š” ๊ฒƒ๊ณผ๋Š” ๋ณ„๊ฐœ์ž…๋‹ˆ๋‹ค. ๋””๋ ‰ํ† ๋ฆฌ์— w ๊ถŒํ•œ์ด ์žˆ์œผ๋ฉด ๊ทธ ์•ˆ์— ํŒŒ์ผ์„ ๋งŒ๋“ค๊ฑฐ๋‚˜ ์ง€์šธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    x๋Š” ๋””๋ ‰ํ† ๋ฆฌ์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋Š” ๊ถŒํ•œ์ž…๋‹ˆ๋‹ค. cd ๋ช…๋ น์–ด๋กœ ๋””๋ ‰ํ† ๋ฆฌ ์•ˆ์— ๋“ค์–ด๊ฐ€๋ ค๋ฉด x ๊ถŒํ•œ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ๋””๋ ‰ํ† ๋ฆฌ์— r์€ ์žˆ๋Š”๋ฐ x๊ฐ€ ์—†์œผ๋ฉด ํŒŒ์ผ ๋ชฉ๋ก์€ ๋ณผ ์ˆ˜ ์žˆ์ง€๋งŒ ๊ทธ ํŒŒ์ผ์— ์‹ค์ œ๋กœ ์ ‘๊ทผํ•˜์ง€๋Š” ๋ชปํ•˜๋Š” ์–ด์ค‘๊ฐ„ํ•œ ์ƒํƒœ๊ฐ€ ๋ฉ๋‹ˆ๋‹ค.

    ๊ทธ๋ž˜์„œ ๋””๋ ‰ํ† ๋ฆฌ ๊ถŒํ•œ์€ ๋ณดํ†ต 755๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. ์†Œ์œ ์ž๋Š” ์ „๋ถ€ ๊ฐ€๋Šฅํ•˜๊ณ  ๋‹ค๋ฅธ ์‚ฌ์šฉ์ž๋Š” ๋ชฉ๋ก ํ™•์ธ๊ณผ ์ ‘๊ทผ๋งŒ ๊ฐ€๋Šฅํ•œ ์ƒํƒœ์ž…๋‹ˆ๋‹ค.

    ์‹ค๋ฌด์—์„œ ์ž์ฃผ ๋งŒ๋‚˜๋Š” ์ƒํ™ฉ๋“ค

    ์›น ์„œ๋ฒ„๊ฐ€ ํŒŒ์ผ์„ ๋ชป ์ฝ๋Š” ๊ฒฝ์šฐ๊ฐ€ ๊ฐ€์žฅ ํ”ํ•ฉ๋‹ˆ๋‹ค. Nginx๊ฐ€ www-data ์‚ฌ์šฉ์ž๋กœ ์‹คํ–‰๋˜๋Š”๋ฐ, ์›น ์‚ฌ์ดํŠธ ํŒŒ์ผ์˜ ์†Œ์œ ์ž๊ฐ€ ubuntu์ด๊ณ  ๊ถŒํ•œ์ด 700์ด๋ฉด www-data๋Š” ํ•ด๋‹น ํŒŒ์ผ์— ์ ‘๊ทผํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์ด๋Ÿด ๋•Œ ํŒŒ์ผ์˜ ์†Œ์œ ์ž๋ฅผ www-data๋กœ ๋ฐ”๊พธ๊ฑฐ๋‚˜, ๊ธฐํƒ€ ์‚ฌ์šฉ์ž์—๊ฒŒ ์ฝ๊ธฐ ๊ถŒํ•œ์„ ์ฃผ๋ฉด ํ•ด๊ฒฐ๋ฉ๋‹ˆ๋‹ค.

    SSH ํ‚ค ํŒŒ์ผ์˜ ๊ถŒํ•œ์ด ๋„ˆ๋ฌด ์—ด๋ ค ์žˆ๋Š” ๊ฒฝ์šฐ๋„ ๋งŽ์ด ๊ฒช์Šต๋‹ˆ๋‹ค. SSH ์ ‘์†์— ์‚ฌ์šฉํ•˜๋Š” ๊ฐœ์ธ ํ‚ค ํŒŒ์ผ(.pem์ด๋‚˜ id_rsa)์€ ์†Œ์œ ์ž๋งŒ ์ฝ์„ ์ˆ˜ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ถŒํ•œ์ด 644 ์ด์ƒ์œผ๋กœ ์—ด๋ ค ์žˆ์œผ๋ฉด SSH๊ฐ€ ์•„์˜ˆ ์ ‘์†์„ ๊ฑฐ๋ถ€ํ•ฉ๋‹ˆ๋‹ค. “WARNING: UNPROTECTED PRIVATE KEY FILE!”์ด๋ผ๋Š” ๊ฒฝ๊ณ ๊ฐ€ ๋‚˜์˜ค๋ฉด์„œ ์—ฐ๊ฒฐ์ด ์•ˆ ๋ฉ๋‹ˆ๋‹ค. ์ด๋•Œ chmod 600์œผ๋กœ ์„ค์ •ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

    chmod 600 ~/.ssh/id_rsa

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

    chmod 777์€ ์™œ ์“ฐ๋ฉด ์•ˆ ๋˜๋Š”๊ฐ€

    ๊ถŒํ•œ ๋ฌธ์ œ๊ฐ€ ์ƒ๊ธฐ๋ฉด ์ธํ„ฐ๋„ท์—์„œ “chmod 777 ํ•ด๋ผ”๋ผ๋Š” ๋‹ต๋ณ€์„ ์‰ฝ๊ฒŒ ์ฐพ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. 777์€ ๋ชจ๋“  ์‚ฌ์šฉ์ž์—๊ฒŒ ๋ชจ๋“  ๊ถŒํ•œ์„ ์ฃผ๋Š” ์„ค์ •์ž…๋‹ˆ๋‹ค. ๋‹น์žฅ์€ ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋˜์ง€๋งŒ ๋ณด์•ˆ ๊ด€์ ์—์„œ ๋งค์šฐ ์œ„ํ—˜ํ•ฉ๋‹ˆ๋‹ค.

    ์„œ๋ฒ„์— ์ ‘์†ํ•  ์ˆ˜ ์žˆ๋Š” ๋ˆ„๊ตฌ๋ผ๋„ ํ•ด๋‹น ํŒŒ์ผ์„ ์ฝ๊ณ , ์ˆ˜์ •ํ•˜๊ณ , ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ๋งŒ์•ฝ ์›น ์„œ๋ฒ„์— ์ทจ์•ฝ์ ์ด ์žˆ์–ด์„œ ๊ณต๊ฒฉ์ž๊ฐ€ ์‹œ์Šคํ…œ์— ์ ‘๊ทผํ–ˆ์„ ๋•Œ, 777๋กœ ์„ค์ •๋œ ํŒŒ์ผ์€ ๋งˆ์Œ๋Œ€๋กœ ์กฐ์ž‘ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    ๊ถŒํ•œ ๋ฌธ์ œ๊ฐ€ ์ƒ๊ธฐ๋ฉด ๋ฌด์กฐ๊ฑด 777๋กœ ์—ด์ง€ ๋ง๊ณ , ์–ด๋–ค ์‚ฌ์šฉ์ž๊ฐ€ ์–ด๋–ค ๊ถŒํ•œ์ด ํ•„์š”ํ•œ์ง€๋ฅผ ๋จผ์ € ํŒŒ์•…ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋Œ€๋ถ€๋ถ„์˜ ๊ฒฝ์šฐ ์†Œ์œ ์ž๋ฅผ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์„ค์ •ํ•˜๊ฑฐ๋‚˜ ๊ทธ๋ฃน ๊ถŒํ•œ์„ ์กฐ์ •ํ•˜๋Š” ๊ฒƒ๋งŒ์œผ๋กœ ํ•ด๊ฒฐ๋ฉ๋‹ˆ๋‹ค.

    umask โ€” ๊ธฐ๋ณธ ๊ถŒํ•œ์„ ๊ฒฐ์ •ํ•˜๋Š” ๊ฐ’

    ํŒŒ์ผ์„ ์ƒˆ๋กœ ๋งŒ๋“ค๋ฉด ๊ธฐ๋ณธ ๊ถŒํ•œ์ด ์ž๋™์œผ๋กœ ์„ค์ •๋ฉ๋‹ˆ๋‹ค. ์ด ๊ธฐ๋ณธ ๊ถŒํ•œ์„ ๊ฒฐ์ •ํ•˜๋Š” ๊ฒŒ umask ๊ฐ’์ž…๋‹ˆ๋‹ค.

    ํ„ฐ๋ฏธ๋„์—์„œ umask๋ฅผ ์ž…๋ ฅํ•˜๋ฉด ํ˜„์žฌ ๊ฐ’์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    umask
    0022

    umask๋Š” “์ด ๊ถŒํ•œ์€ ๋นผ๊ฒ ๋‹ค”๋ผ๋Š” ์˜๋ฏธ์ž…๋‹ˆ๋‹ค. ํŒŒ์ผ์˜ ์ตœ๋Œ€ ๊ธฐ๋ณธ ๊ถŒํ•œ์€ 666์ด๊ณ  ๋””๋ ‰ํ† ๋ฆฌ๋Š” 777์ž…๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ umask ๊ฐ’์„ ๋นผ๋ฉด ์‹ค์ œ ๊ธฐ๋ณธ ๊ถŒํ•œ์ด ๋ฉ๋‹ˆ๋‹ค.

    umask๊ฐ€ 0022์ด๋ฉด ํŒŒ์ผ์€ 666์—์„œ 022๋ฅผ ๋บ€ 644๊ฐ€ ๊ธฐ๋ณธ ๊ถŒํ•œ์ด ๋ฉ๋‹ˆ๋‹ค. ๋””๋ ‰ํ† ๋ฆฌ๋Š” 777์—์„œ 022๋ฅผ ๋บ€ 755๊ฐ€ ๋ฉ๋‹ˆ๋‹ค. ํŒŒ์ผ์„ ๋งŒ๋“ค ๋•Œ๋งˆ๋‹ค ๋งค๋ฒˆ chmod๋ฅผ ํ•˜์ง€ ์•Š์•„๋„ ๋˜๋Š” ์ด์œ ๊ฐ€ ์ด๊ฒƒ์ž…๋‹ˆ๋‹ค.

    ๋ณด์•ˆ์„ ๊ฐ•ํ™”ํ•˜๊ณ  ์‹ถ์œผ๋ฉด umask๋ฅผ 0077๋กœ ์„ค์ •ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด ์ƒˆ๋กœ ๋งŒ๋“  ํŒŒ์ผ์€ 600, ๋””๋ ‰ํ† ๋ฆฌ๋Š” 700์ด ๋˜์–ด์„œ ์†Œ์œ ์ž๋งŒ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    ๋งˆ๋ฌด๋ฆฌ

    ๋ฆฌ๋ˆ…์Šค ํŒŒ์ผ ๊ถŒํ•œ์€ ์†Œ์œ ์ž, ๊ทธ๋ฃน, ๊ธฐํƒ€ ์‚ฌ์šฉ์ž ์„ธ ๋ฒ”์œ„์— ๋Œ€ํ•ด ์ฝ๊ธฐ, ์“ฐ๊ธฐ, ์‹คํ–‰ ๊ถŒํ•œ์„ ๊ฐ๊ฐ ์„ค์ •ํ•˜๋Š” ๊ตฌ์กฐ์ž…๋‹ˆ๋‹ค. chmod๋กœ ๊ถŒํ•œ์„ ๋ฐ”๊พธ๊ณ  chown์œผ๋กœ ์†Œ์œ ์ž๋ฅผ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค. ์ฒ˜์Œ์—๋Š” ์ˆซ์ž ์กฐํ•ฉ์ด ํ—ท๊ฐˆ๋ฆฌ์ง€๋งŒ 644, 755, 600 ์ด ์„ธ ๊ฐ€์ง€๋งŒ ๊ธฐ์–ตํ•ด๋„ ๋Œ€๋ถ€๋ถ„์˜ ์ƒํ™ฉ์— ๋Œ€์‘ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•ต์‹ฌ์€ ํ•„์š”ํ•œ ๋งŒํผ๋งŒ ๊ถŒํ•œ์„ ์—ด๊ณ  ๋‚˜๋จธ์ง€๋Š” ๋‹ซ์•„๋‘๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋‹ค์Œ ๊ธ€์—์„œ๋Š” ์„œ๋ฒ„์—์„œ ๋ฐ˜๋ณต ์ž‘์—…์„ ์ž๋™์œผ๋กœ ์‹คํ–‰ํ•ด์ฃผ๋Š” ํฌ๋ก ํƒญ(Crontab) ์‚ฌ์šฉ๋ฒ•์„ ๋‹ค๋ค„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

  • Nginx ๊ธฐ๋ณธ ์„ค์ • ํŒŒ์ผ ๊ตฌ์กฐ ์ดํ•ดํ•˜๊ธฐ

    Nginx ๊ธฐ๋ณธ ์„ค์ • ํŒŒ์ผ ๊ตฌ์กฐ ์ดํ•ดํ•˜๊ธฐ

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

    ์„ค์ • ํŒŒ์ผ ์œ„์น˜๋ถ€ํ„ฐ ํ™•์ธํ•˜๊ธฐ

    Ubuntu ๊ธฐ์ค€์œผ๋กœ Nginx๋ฅผ ์„ค์น˜ํ•˜๋ฉด ์„ค์ • ํŒŒ์ผ๋“ค์ด /etc/nginx/ ๋””๋ ‰ํ† ๋ฆฌ์— ์ƒ๊น๋‹ˆ๋‹ค. ํ„ฐ๋ฏธ๋„์—์„œ ์ด ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ์—ด์–ด๋ณด๋ฉด ์—ฌ๋Ÿฌ ํŒŒ์ผ๊ณผ ํด๋”๊ฐ€ ๋ณด์ž…๋‹ˆ๋‹ค.

    ls /etc/nginx/

    ์—ฌ๊ธฐ์„œ ์ค‘์š”ํ•œ ๊ฒƒ๋“ค๋งŒ ์ถ”๋ฆฌ๋ฉด ์ด๋ ‡์Šต๋‹ˆ๋‹ค.

    nginx.conf๊ฐ€ ๋ฉ”์ธ ์„ค์ • ํŒŒ์ผ์ž…๋‹ˆ๋‹ค. Nginx๊ฐ€ ์‹คํ–‰๋  ๋•Œ ๊ฐ€์žฅ ๋จผ์ € ์ฝ๋Š” ํŒŒ์ผ์ด๊ณ , ์ „์ฒด ๋™์ž‘์˜ ๋ผˆ๋Œ€๊ฐ€ ์—ฌ๊ธฐ์— ์ •์˜๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

    sites-available ํด๋”์—๋Š” ์‚ฌ์ดํŠธ๋ณ„ ์„ค์ • ํŒŒ์ผ์„ ๋งŒ๋“ค์–ด๋‘ก๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด today-play.com ์„ค์ • ํŒŒ์ผ์„ ์—ฌ๊ธฐ์— ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค.

    sites-enabled ํด๋”์—๋Š” ์‹ค์ œ๋กœ ํ™œ์„ฑํ™”ํ•  ์‚ฌ์ดํŠธ์˜ ์‹ฌ๋ณผ๋ฆญ ๋งํฌ๋ฅผ ๋„ฃ์Šต๋‹ˆ๋‹ค. sites-available์— ํŒŒ์ผ์„ ๋งŒ๋“ค์—ˆ๋‹ค๊ณ  ๋ฐ”๋กœ ์ ์šฉ๋˜๋Š” ๊ฒŒ ์•„๋‹ˆ๋ผ, sites-enabled์— ๋งํฌ๋ฅผ ๊ฑธ์–ด์•ผ Nginx๊ฐ€ ์ธ์‹ํ•ฉ๋‹ˆ๋‹ค.

    conf.d ํด๋”๋„ ์žˆ๋Š”๋ฐ, ์ด๊ฑด sites-available/sites-enabled ๊ตฌ์กฐ ๋Œ€์‹  ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋Œ€์•ˆ์ž…๋‹ˆ๋‹ค. ์ด ํด๋”์— .conf ํ™•์žฅ์ž๋กœ ํŒŒ์ผ์„ ๋„ฃ์œผ๋ฉด ์ž๋™์œผ๋กœ ๋กœ๋“œ๋ฉ๋‹ˆ๋‹ค. ๋ฐฐํฌํŒ์— ๋”ฐ๋ผ ๋‘˜ ์ค‘ ํ•˜๋‚˜๋งŒ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

    mime.types ํŒŒ์ผ์€ ํŒŒ์ผ ํ™•์žฅ์ž์™€ Content-Type์„ ๋งคํ•‘ํ•˜๋Š” ํŒŒ์ผ์ž…๋‹ˆ๋‹ค. .html ํŒŒ์ผ์„ ์š”์ฒญํ•˜๋ฉด text/html๋กœ ์‘๋‹ตํ•˜๊ณ , .jpg ํŒŒ์ผ์„ ์š”์ฒญํ•˜๋ฉด image/jpeg๋กœ ์‘๋‹ตํ•˜๋Š” ๊ฒŒ ์ด ํŒŒ์ผ ๋•๋ถ„์ž…๋‹ˆ๋‹ค. ๋ณดํ†ต ๊ฑด๋“œ๋ฆด ์ผ์ด ์—†์Šต๋‹ˆ๋‹ค.

    nginx.conf ํŒŒ์ผ ์—ด์–ด๋ณด๊ธฐ

    ํ•ต์‹ฌ์€ nginx.conf์ž…๋‹ˆ๋‹ค. ์ด ํŒŒ์ผ์„ ์—ด์–ด๋ณด๋ฉด ๋Œ€๋žต ์ด๋Ÿฐ ๊ตฌ์กฐ๋กœ ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

    user www-data;
    worker_processes auto;
    pid /run/nginx.pid;
    
    events {
        worker_connections 1024;
    }
    
    http {
        include /etc/nginx/mime.types;
        default_type application/octet-stream;
    
        sendfile on;
        keepalive_timeout 65;
    
        include /etc/nginx/conf.d/*.conf;
        include /etc/nginx/sites-enabled/*;
    }

    ์ฒ˜์Œ ๋ณด๋ฉด ๋ณต์žกํ•ด ๋ณด์ด์ง€๋งŒ ํฌ๊ฒŒ ์„ธ ๋ถ€๋ถ„์œผ๋กœ ๋‚˜๋‰ฉ๋‹ˆ๋‹ค. ์ตœ์ƒ์œ„ ์ปจํ…์ŠคํŠธ, events ๋ธ”๋ก, http ๋ธ”๋ก์ž…๋‹ˆ๋‹ค. Nginx ์„ค์ •์€ ์ด ๋ธ”๋ก ๊ตฌ์กฐ๋ฅผ ์ดํ•ดํ•˜๋Š” ๊ฒŒ ์ „๋ถ€๋ผ๊ณ  ํ•ด๋„ ๊ณผ์–ธ์ด ์•„๋‹™๋‹ˆ๋‹ค.

    ์ตœ์ƒ์œ„ ์ปจํ…์ŠคํŠธ

    ํŒŒ์ผ ๋งจ ์œ„์— ์žˆ๋Š” ๋ถ€๋ถ„์œผ๋กœ, ์–ด๋–ค ๋ธ”๋ก์—๋„ ์†ํ•˜์ง€ ์•Š๋Š” ์ง€์‹œ์–ด๋“ค์ž…๋‹ˆ๋‹ค.

    user www-data๋Š” Nginx ์›Œ์ปค ํ”„๋กœ์„ธ์Šค๊ฐ€ ์–ด๋–ค ์‹œ์Šคํ…œ ์‚ฌ์šฉ์ž ๊ถŒํ•œ์œผ๋กœ ์‹คํ–‰๋ ์ง€ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค. www-data๋Š” Ubuntu์—์„œ ์›น ์„œ๋ฒ„์šฉ์œผ๋กœ ๊ธฐ๋ณธ ์ƒ์„ฑ๋˜๋Š” ์‚ฌ์šฉ์ž์ž…๋‹ˆ๋‹ค. ๋ณด์•ˆ์ƒ root๋กœ ์‹คํ–‰ํ•˜๋ฉด ์•ˆ ๋˜๊ธฐ ๋•Œ๋ฌธ์— ๊ถŒํ•œ์ด ๋‚ฎ์€ ์‚ฌ์šฉ์ž๋ฅผ ์ง€์ •ํ•˜๋Š” ๊ฒ๋‹ˆ๋‹ค.

    worker_processes auto๋Š” ์›Œ์ปค ํ”„๋กœ์„ธ์Šค ์ˆ˜๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. auto๋กœ ๋‘๋ฉด ์„œ๋ฒ„์˜ CPU ์ฝ”์–ด ์ˆ˜์— ๋งž์ถฐ์„œ ์ž๋™์œผ๋กœ ์„ค์ •๋ฉ๋‹ˆ๋‹ค. ์ฝ”์–ด๊ฐ€ 4๊ฐœ๋ฉด ์›Œ์ปค ํ”„๋กœ์„ธ์Šค๋„ 4๊ฐœ๊ฐ€ ๋œน๋‹ˆ๋‹ค. ์ด์ „ ๊ธ€์—์„œ Nginx๊ฐ€ ์ ์€ ์ˆ˜์˜ ํ”„๋กœ์„ธ์Šค๋กœ ๋งŽ์€ ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•œ๋‹ค๊ณ  ํ–ˆ๋Š”๋ฐ, ์—ฌ๊ธฐ์„œ ๊ทธ ํ”„๋กœ์„ธ์Šค ์ˆ˜๊ฐ€ ๊ฒฐ์ •๋ฉ๋‹ˆ๋‹ค.

    pid /run/nginx.pid๋Š” Nginx ๋งˆ์Šคํ„ฐ ํ”„๋กœ์„ธ์Šค์˜ PID๋ฅผ ์ €์žฅํ•  ํŒŒ์ผ ๊ฒฝ๋กœ์ž…๋‹ˆ๋‹ค. ์‹œ์Šคํ…œ์ด Nginx๋ฅผ ๊ด€๋ฆฌํ•  ๋•Œ ์ด ํŒŒ์ผ์„ ์ฐธ์กฐํ•ฉ๋‹ˆ๋‹ค. ๊ฑด๋“œ๋ฆด ์ผ์ด ๊ฑฐ์˜ ์—†์Šต๋‹ˆ๋‹ค.

    events ๋ธ”๋ก

    events ๋ธ”๋ก์€ Nginx์˜ ์—ฐ๊ฒฐ ์ฒ˜๋ฆฌ ๋ฐฉ์‹์„ ์„ค์ •ํ•˜๋Š” ๊ณณ์ž…๋‹ˆ๋‹ค.

    events {
        worker_connections 1024;
    }

    worker_connections 1024๋Š” ๊ฐ ์›Œ์ปค ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋™์‹œ์— ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ์ตœ๋Œ€ ์—ฐ๊ฒฐ ์ˆ˜์ž…๋‹ˆ๋‹ค. ์›Œ์ปค ํ”„๋กœ์„ธ์Šค๊ฐ€ 4๊ฐœ์ด๊ณ  worker_connections๊ฐ€ 1024๋ฉด ์ด๋ก ์ƒ ๋™์‹œ ์—ฐ๊ฒฐ 4096๊ฐœ๊นŒ์ง€ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๋œป์ž…๋‹ˆ๋‹ค. ํŠธ๋ž˜ํ”ฝ์ด ๋งŽ์€ ์„œ๋น„์Šค๋ผ๋ฉด ์ด ์ˆซ์ž๋ฅผ ๋Š˜๋ ค์•ผ ํ•  ์ˆ˜๋„ ์žˆ์ง€๋งŒ, ์ผ๋ฐ˜์ ์ธ ์‚ฌ์ดํŠธ์—์„œ๋Š” ๊ธฐ๋ณธ๊ฐ’์œผ๋กœ ์ถฉ๋ถ„ํ•ฉ๋‹ˆ๋‹ค.

    ์ด ๋ธ”๋ก์— multi_accept on์„ ์ถ”๊ฐ€ํ•˜๋ฉด ์›Œ์ปค ํ”„๋กœ์„ธ์Šค๊ฐ€ ํ•œ ๋ฒˆ์— ์—ฌ๋Ÿฌ ์—ฐ๊ฒฐ์„ ๋ฐ›์•„๋“ค์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ธฐ๋ณธ๊ฐ’์€ off์ธ๋ฐ, ํŠธ๋ž˜ํ”ฝ์ด ๋งŽ๋‹ค๋ฉด ์ผœ๋Š” ๊ฒŒ ์ข‹์Šต๋‹ˆ๋‹ค.

    http ๋ธ”๋ก

    http ๋ธ”๋ก์ด ๊ฐ€์žฅ ํฐ ๋ธ”๋ก์ด๊ณ , ์›น ์„œ๋ฒ„๋กœ์„œ์˜ ํ•ต์‹ฌ ์„ค์ •์ด ์—ฌ๊ธฐ์— ๋“ค์–ด๊ฐ‘๋‹ˆ๋‹ค.

    http {
        include /etc/nginx/mime.types;
        default_type application/octet-stream;
    
        sendfile on;
        keepalive_timeout 65;
    
        include /etc/nginx/conf.d/*.conf;
        include /etc/nginx/sites-enabled/*;
    }

    include /etc/nginx/mime.types๋Š” ์•„๊นŒ ๋งํ•œ MIME ํƒ€์ž… ๋งคํ•‘ ํŒŒ์ผ์„ ๋ถˆ๋Ÿฌ์˜ค๋Š” ๊ฒ๋‹ˆ๋‹ค. include๋Š” ๋‹ค๋ฅธ ํŒŒ์ผ์˜ ๋‚ด์šฉ์„ ๊ทธ ์ž๋ฆฌ์— ์‚ฝ์ž…ํ•˜๋Š” ์ง€์‹œ์–ด์ž…๋‹ˆ๋‹ค.

    default_type application/octet-stream์€ MIME ํƒ€์ž…์„ ํŒ๋ณ„ํ•  ์ˆ˜ ์—†๋Š” ํŒŒ์ผ์˜ ๊ธฐ๋ณธ ํƒ€์ž…์ž…๋‹ˆ๋‹ค. octet-stream์œผ๋กœ ์„ค์ •ํ•˜๋ฉด ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ํ•ด๋‹น ํŒŒ์ผ์„ ๋‹ค์šด๋กœ๋“œํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

    sendfile on์€ ํŒŒ์ผ ์ „์†ก ์‹œ ์ปค๋„์—์„œ ์ง์ ‘ ์ฒ˜๋ฆฌํ•˜๊ฒŒ ํ•˜๋Š” ์˜ต์…˜์ž…๋‹ˆ๋‹ค. ์œ ์ € ๊ณต๊ฐ„์„ ๊ฑฐ์น˜์ง€ ์•Š๊ณ  ์ปค๋„ ๋ ˆ๋ฒจ์—์„œ ํŒŒ์ผ์„ ๋ณด๋‚ด๊ธฐ ๋•Œ๋ฌธ์— ์ •์  ํŒŒ์ผ ์ „์†ก ์„ฑ๋Šฅ์ด ์ข‹์•„์ง‘๋‹ˆ๋‹ค.

    keepalive_timeout 65๋Š” ํด๋ผ์ด์–ธํŠธ์™€์˜ ์—ฐ๊ฒฐ์„ ์œ ์ง€ํ•˜๋Š” ์‹œ๊ฐ„์ž…๋‹ˆ๋‹ค. ์ดˆ ๋‹จ์œ„์ด๊ณ , ์ด ์‹œ๊ฐ„ ๋™์•ˆ ์ถ”๊ฐ€ ์š”์ฒญ์ด ์—†์œผ๋ฉด ์—ฐ๊ฒฐ์„ ๋‹ซ์Šต๋‹ˆ๋‹ค.

    ๋งจ ์•„๋ž˜์— ์žˆ๋Š” ๋‘ ์ค„์˜ include๊ฐ€ ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค. conf.d ํด๋”์˜ .conf ํŒŒ์ผ๊ณผ sites-enabled ํด๋”์˜ ํŒŒ์ผ์„ ์ „๋ถ€ ๋ถˆ๋Ÿฌ์˜ต๋‹ˆ๋‹ค. ์ฆ‰ ์‚ฌ์ดํŠธ๋ณ„ ์„ค์ • ํŒŒ์ผ์€ ์ด include๋ฅผ ํ†ตํ•ด http ๋ธ”๋ก ์•ˆ์— ํฌํ•จ๋˜๋Š” ๊ตฌ์กฐ์ž…๋‹ˆ๋‹ค.

    server ๋ธ”๋ก โ€” ์‚ฌ์ดํŠธ๋ณ„ ์„ค์ •

    server ๋ธ”๋ก์€ http ๋ธ”๋ก ์•ˆ์— ๋“ค์–ด๊ฐ€๊ณ , ๊ฐ ์‚ฌ์ดํŠธ(๋˜๋Š” ๊ฐ€์ƒ ํ˜ธ์ŠคํŠธ)์˜ ์„ค์ •์„ ๋‹ด๋‹นํ•ฉ๋‹ˆ๋‹ค. ๋ณดํ†ต sites-available ํด๋”์— ๋ณ„๋„ ํŒŒ์ผ๋กœ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

    server {
        listen 80;
        server_name today-play.com www.today-play.com;
        root /var/www/today-play;
        index index.html;
    
        location / {
            try_files $uri $uri/ =404;
        }
    }

    listen 80์€ ์ด ์„œ๋ฒ„ ๋ธ”๋ก์ด 80๋ฒˆ ํฌํŠธ์—์„œ ์š”์ฒญ์„ ๋ฐ›๊ฒ ๋‹ค๋Š” ๋œป์ž…๋‹ˆ๋‹ค. HTTPS๋ฅผ ์ ์šฉํ–ˆ๋‹ค๋ฉด listen 443 ssl๋„ ์ถ”๊ฐ€๋ฉ๋‹ˆ๋‹ค.

    server_name์€ ์ด ์„œ๋ฒ„ ๋ธ”๋ก์ด ์–ด๋–ค ๋„๋ฉ”์ธ์˜ ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ• ์ง€ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค. ํ•˜๋‚˜์˜ ์„œ๋ฒ„์— ์—ฌ๋Ÿฌ ๋„๋ฉ”์ธ์„ ์—ฐ๊ฒฐํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ, server_name์ด ๋‹ค๋ฅธ server ๋ธ”๋ก์„ ์—ฌ๋Ÿฌ ๊ฐœ ๋งŒ๋“ค๋ฉด ๋ฉ๋‹ˆ๋‹ค. Nginx๊ฐ€ ์š”์ฒญ์ด ๋“ค์–ด์˜ฌ ๋•Œ Host ํ—ค๋”๋ฅผ ๋ณด๊ณ  ์–ด๋–ค server ๋ธ”๋ก์œผ๋กœ ๋ณด๋‚ผ์ง€ ๊ฒฐ์ •ํ•ฉ๋‹ˆ๋‹ค.

    root๋Š” ์›น ์‚ฌ์ดํŠธ์˜ ๋ฃจํŠธ ๋””๋ ‰ํ† ๋ฆฌ์ž…๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž๊ฐ€ today-play.com/about.html์„ ์š”์ฒญํ•˜๋ฉด /var/www/today-play/about.html ํŒŒ์ผ์„ ์ฐพ์•„์„œ ๋ณด๋‚ด์ค๋‹ˆ๋‹ค.

    index๋Š” ๋””๋ ‰ํ† ๋ฆฌ์— ์ ‘๊ทผํ–ˆ์„ ๋•Œ ๊ธฐ๋ณธ์œผ๋กœ ๋ณด์—ฌ์ค„ ํŒŒ์ผ์ž…๋‹ˆ๋‹ค. today-play.com์œผ๋กœ ์ ‘์†ํ•˜๋ฉด /var/www/today-play/index.html์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค.

    location ๋ธ”๋ก โ€” URL ๊ฒฝ๋กœ๋ณ„ ์ฒ˜๋ฆฌ

    location ๋ธ”๋ก์€ server ๋ธ”๋ก ์•ˆ์— ๋“ค์–ด๊ฐ€๊ณ , ํŠน์ • URL ๊ฒฝ๋กœ์— ๋Œ€ํ•œ ์ฒ˜๋ฆฌ ๋ฐฉ์‹์„ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค.

    location / {
        try_files $uri $uri/ =404;
    }

    ์ด๊ฑด ๋ชจ๋“  ๊ฒฝ๋กœ์— ๋Œ€ํ•ด ํŒŒ์ผ์ด ์žˆ์œผ๋ฉด ๋ณด์—ฌ์ฃผ๊ณ , ๋””๋ ‰ํ† ๋ฆฌ๋ฉด ๋””๋ ‰ํ† ๋ฆฌ ์•ˆ์˜ index ํŒŒ์ผ์„ ๋ณด์—ฌ์ฃผ๊ณ , ๋‘˜ ๋‹ค ์•„๋‹ˆ๋ฉด 404 ์—๋Ÿฌ๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋ผ๋Š” ๋œป์ž…๋‹ˆ๋‹ค.

    location ๋ธ”๋ก์€ ์—ฌ๋Ÿฌ ๊ฐœ ๋งŒ๋“ค ์ˆ˜ ์žˆ๊ณ  ๊ฒฝ๋กœ๋ณ„๋กœ ๋‹ค๋ฅธ ๋™์ž‘์„ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    location /images/ {
        alias /var/www/static/images/;
    }
    
    location /api/ {
        proxy_pass http://localhost:3000;
    }

    ์ฒซ ๋ฒˆ์งธ๋Š” /images/ ๊ฒฝ๋กœ๋กœ ๋“ค์–ด์˜ค๋Š” ์š”์ฒญ์„ /var/www/static/images/ ๋””๋ ‰ํ† ๋ฆฌ์—์„œ ์ฐพ์œผ๋ผ๋Š” ์„ค์ •์ž…๋‹ˆ๋‹ค. ๋‘ ๋ฒˆ์งธ๋Š” /api/๋กœ ์‹œ์ž‘ํ•˜๋Š” ์š”์ฒญ์„ ๋กœ์ปฌ์˜ 3000๋ฒˆ ํฌํŠธ์—์„œ ๋Œ์•„๊ฐ€๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„œ๋ฒ„๋กœ ๋„˜๊ธฐ๋ผ๋Š” ์„ค์ •์ž…๋‹ˆ๋‹ค. ์ด๊ฒŒ ๋ฆฌ๋ฒ„์Šค ํ”„๋ก์‹œ ์„ค์ •์ž…๋‹ˆ๋‹ค. Node.js๋‚˜ Django ๊ฐ™์€ ๋ฐฑ์—”๋“œ ์„œ๋ฒ„๋ฅผ Nginx ๋’ค์— ๋‘๊ณ  ์‹ถ์„ ๋•Œ ์ด๋ ‡๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค.

    location ๋ธ”๋ก์˜ ๋งค์นญ ๋ฐฉ์‹๋„ ์•Œ์•„๋‘๋ฉด ์ข‹์Šต๋‹ˆ๋‹ค. ๊ธฐ๋ณธ์ ์œผ๋กœ ์•ž์—์„œ๋ถ€ํ„ฐ ์ผ์น˜ํ•˜๋Š” ๊ฒฝ๋กœ๋ฅผ ์ฐพ๋Š”๋ฐ, ์ •ํ™•ํžˆ ์ผ์น˜ํ•˜๋Š” ๊ฒฝ๋กœ๋ฅผ ์ง€์ •ํ•˜๊ณ  ์‹ถ์œผ๋ฉด ๋“ฑํ˜ธ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

    location = /favicon.ico {
        log_not_found off;
        access_log off;
    }

    ์ด๊ฑด ์ •ํ™•ํžˆ /favicon.ico ์š”์ฒญ์—๋งŒ ์ ์šฉ๋˜๊ณ , ํ•ด๋‹น ํŒŒ์ผ์ด ์—†์–ด๋„ ๋กœ๊ทธ๋ฅผ ๋‚จ๊ธฐ์ง€ ์•Š๊ฒ ๋‹ค๋Š” ์„ค์ •์ž…๋‹ˆ๋‹ค. ํŒŒ๋น„์ฝ˜์ด ์—†์„ ๋•Œ ๋กœ๊ทธ๊ฐ€ ๊ณ„์† ์Œ“์ด๋Š” ๊ฑธ ๋ฐฉ์ง€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    ์ „์ฒด ๊ตฌ์กฐ๋ฅผ ํ•œ๋ˆˆ์— ๋ณด๋ฉด

    Nginx ์„ค์ • ํŒŒ์ผ์€ ๋ธ”๋ก์ด ์ค‘์ฒฉ๋˜๋Š” ๊ตฌ์กฐ์ž…๋‹ˆ๋‹ค. ์ •๋ฆฌํ•˜๋ฉด ์ด๋ ‡์Šต๋‹ˆ๋‹ค.

    nginx.conf ํŒŒ์ผ ์•ˆ์— ์ตœ์ƒ์œ„ ์ง€์‹œ์–ด๋“ค์ด ์žˆ๊ณ , ๊ทธ ์•ˆ์— events ๋ธ”๋ก์ด ์žˆ๊ณ , http ๋ธ”๋ก์ด ์žˆ์Šต๋‹ˆ๋‹ค. http ๋ธ”๋ก ์•ˆ์— server ๋ธ”๋ก์ด ๋“ค์–ด๊ฐ€๊ณ , server ๋ธ”๋ก ์•ˆ์— location ๋ธ”๋ก์ด ๋“ค์–ด๊ฐ‘๋‹ˆ๋‹ค. ๋ฐ”๊นฅ์ชฝ ๋ธ”๋ก์—์„œ ์„ค์ •ํ•œ ๊ฐ’์€ ์•ˆ์ชฝ ๋ธ”๋ก์œผ๋กœ ์ƒ์†๋ฉ๋‹ˆ๋‹ค. ์•ˆ์ชฝ์—์„œ ๊ฐ™์€ ์ง€์‹œ์–ด๋ฅผ ๋‹ค์‹œ ์„ค์ •ํ•˜๋ฉด ๋ฎ์–ด์”Œ์›Œ์ง‘๋‹ˆ๋‹ค.

    nginx.conf
    โ”œโ”€โ”€ ์ตœ์ƒ์œ„ (user, worker_processes, pid)
    โ”œโ”€โ”€ events { ... }
    โ””โ”€โ”€ http { ... }
        โ”œโ”€โ”€ ๊ณตํ†ต ์„ค์ • (mime.types, sendfile, keepalive)
        โ”œโ”€โ”€ include conf.d/*.conf
        โ””โ”€โ”€ include sites-enabled/*
            โ””โ”€โ”€ server { ... }
                โ”œโ”€โ”€ listen, server_name, root
                โ””โ”€โ”€ location / { ... }
                โ””โ”€โ”€ location /api/ { ... }

    ์‹ค๋ฌด์—์„œ nginx.conf ์ž์ฒด๋ฅผ ์ง์ ‘ ๋งŽ์ด ์ˆ˜์ •ํ•˜๋Š” ๊ฒฝ์šฐ๋Š” ๋“œ๋ญ…๋‹ˆ๋‹ค. ๋Œ€๋ถ€๋ถ„ sites-available์— ์‚ฌ์ดํŠธ๋ณ„ ์„ค์ • ํŒŒ์ผ์„ ๋งŒ๋“ค๊ณ , sites-enabled์— ๋งํฌ๋ฅผ ๊ฑธ์–ด์„œ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค. nginx.conf์—๋Š” ์ „์ฒด ์„œ๋ฒ„์— ๊ณตํ†ต์œผ๋กœ ์ ์šฉ๋˜๋Š” ์„ค์ •๋งŒ ๋‘๋Š” ๊ฒŒ ๊น”๋”ํ•ฉ๋‹ˆ๋‹ค.

    ์„ค์ • ํŒŒ์ผ ์ˆ˜์ • ํ›„ ํ™•์ธํ•˜๋Š” ๋ฐฉ๋ฒ•

    ์„ค์ • ํŒŒ์ผ์„ ์ˆ˜์ •ํ–ˆ์œผ๋ฉด ๋ฐ”๋กœ ๋ฆฌ๋กœ๋“œํ•˜๊ธฐ ์ „์— ๋ฌธ๋ฒ• ์˜ค๋ฅ˜๊ฐ€ ์—†๋Š”์ง€ ํ™•์ธํ•˜๋Š” ๊ฒŒ ์ข‹์Šต๋‹ˆ๋‹ค.

    sudo nginx -t

    ์ด ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•˜๋ฉด ์„ค์ • ํŒŒ์ผ ๋ฌธ๋ฒ•์„ ๊ฒ€์‚ฌํ•ฉ๋‹ˆ๋‹ค. “syntax is ok”์™€ “test is successful”์ด ๋‚˜์˜ค๋ฉด ๋ฌธ์ œ๊ฐ€ ์—†๋Š” ๊ฒ๋‹ˆ๋‹ค. ์—๋Ÿฌ๊ฐ€ ์žˆ์œผ๋ฉด ์–ด๋А ํŒŒ์ผ ๋ช‡ ๋ฒˆ์งธ ์ค„์—์„œ ๋ฌธ์ œ๊ฐ€ ์ƒ๊ฒผ๋Š”์ง€ ์•Œ๋ ค์ค๋‹ˆ๋‹ค.

    ๋ฌธ๋ฒ• ํ™•์ธ์ด ๋๋‚ฌ์œผ๋ฉด ์„ค์ •์„ ๋ฐ˜์˜ํ•ฉ๋‹ˆ๋‹ค.

    sudo nginx -s reload

    reload๋Š” ์‹คํ–‰ ์ค‘์ธ Nginx๋ฅผ ์ค‘๋‹จํ•˜์ง€ ์•Š๊ณ  ์„ค์ •๋งŒ ๋‹ค์‹œ ์ฝ์–ด๋“ค์ž…๋‹ˆ๋‹ค. ์‚ฌ์ดํŠธ๊ฐ€ ์šด์˜ ์ค‘์ด์–ด๋„ ์•ˆ์ „ํ•˜๊ฒŒ ์ ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. restart์™€ ๋‹ค๋ฅธ ์ ์€, reload๋Š” ๊ธฐ์กด ์—ฐ๊ฒฐ์„ ๋Š์ง€ ์•Š๊ณ  ์ƒˆ ์„ค์ •์„ ์ ์šฉํ•œ๋‹ค๋Š” ๊ฒ๋‹ˆ๋‹ค.

    ์„ค์ •ํ•  ๋•Œ ์ž์ฃผ ์‹ค์ˆ˜ํ•˜๋Š” ๊ฒƒ๋“ค

    ๊ฐ€์žฅ ํ”ํ•œ ์‹ค์ˆ˜๋Š” ์„ธ๋ฏธ์ฝœ๋ก ์„ ๋น ๋œจ๋ฆฌ๋Š” ๊ฒ๋‹ˆ๋‹ค. Nginx ์„ค์ •์—์„œ ๊ฐ ์ง€์‹œ์–ด๋Š” ๋ฐ˜๋“œ์‹œ ์„ธ๋ฏธ์ฝœ๋ก ์œผ๋กœ ๋๋‚˜์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋น ๋œจ๋ฆฌ๋ฉด nginx -t์—์„œ ๋ฐ”๋กœ ์—๋Ÿฌ๊ฐ€ ๋‚˜๋Š”๋ฐ, ์—๋Ÿฌ ๋ฉ”์‹œ์ง€๊ฐ€ ๊ฐ€๋ฆฌํ‚ค๋Š” ์ค„์ด ์‹ค์ œ ์‹ค์ˆ˜ํ•œ ์ค„๊ณผ ๋‹ค๋ฅผ ์ˆ˜ ์žˆ์–ด์„œ ํ—ท๊ฐˆ๋ฆด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    ๋‘ ๋ฒˆ์งธ๋Š” sites-available์— ํŒŒ์ผ๋งŒ ๋งŒ๋“ค๊ณ  sites-enabled์— ๋งํฌ๋ฅผ ์•ˆ ๊ฑฐ๋Š” ๊ฒฝ์šฐ์ž…๋‹ˆ๋‹ค. ์‹ฌ๋ณผ๋ฆญ ๋งํฌ๋ฅผ ๋งŒ๋“œ๋Š” ๋ช…๋ น์–ด๋Š” ์ด๋ ‡์Šต๋‹ˆ๋‹ค.

    sudo ln -s /etc/nginx/sites-available/today-play.com /etc/nginx/sites-enabled/

    ์„ธ ๋ฒˆ์งธ๋Š” default ์„ค์ • ํŒŒ์ผ๊ณผ ์ถฉ๋Œํ•˜๋Š” ๊ฒฝ์šฐ์ž…๋‹ˆ๋‹ค. sites-enabled์— default ํŒŒ์ผ์ด ๋‚จ์•„์žˆ์œผ๋ฉด ๋‚ด ์‚ฌ์ดํŠธ ์„ค์ •๊ณผ ์ถฉ๋Œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‚ด ์‚ฌ์ดํŠธ ์„ค์ •์ด ์ œ๋Œ€๋กœ ์•ˆ ๋จนํžŒ๋‹ค๋ฉด default ๋งํฌ๋ฅผ ์‚ญ์ œํ•˜๊ณ  ๋‹ค์‹œ reloadํ•ด๋ณด๋ฉด ํ•ด๊ฒฐ๋˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์Šต๋‹ˆ๋‹ค.

    ๋งˆ๋ฌด๋ฆฌ

    Nginx ์„ค์ • ํŒŒ์ผ์€ ๋ธ”๋ก ๊ตฌ์กฐ๋งŒ ์ดํ•ดํ•˜๋ฉด ์ ˆ๋ฐ˜์€ ๋๋‚œ ๊ฒ๋‹ˆ๋‹ค. nginx.conf๊ฐ€ ์ „์ฒด ๋ผˆ๋Œ€๋ฅผ ์žก๊ณ , server ๋ธ”๋ก์ด ์‚ฌ์ดํŠธ๋ฅผ ์ •์˜ํ•˜๊ณ , location ๋ธ”๋ก์ด ๊ฒฝ๋กœ๋ณ„ ๋™์ž‘์„ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค. ์ฒ˜์Œ์—๋Š” ์„ค์ • ํŒŒ์ผ์ด ๋‚ฏ์„ค์ง€๋งŒ ์‹ค์ œ๋กœ ๊ฑด๋“œ๋ฆฌ๋Š” ๋ถ€๋ถ„์€ server์™€ location ๋ธ”๋ก์ด ๋Œ€๋ถ€๋ถ„์ด๋ผ ๋ช‡ ๋ฒˆ ํ•ด๋ณด๋ฉด ๊ธˆ๋ฐฉ ์ต์ˆ™ํ•ด์ง‘๋‹ˆ๋‹ค. ๋‹ค์Œ ๊ธ€์—์„œ๋Š” ๋ฆฌ๋ˆ…์Šค ์„œ๋ฒ„์—์„œ ์ž์ฃผ ๋‹ค๋ฃจ๊ฒŒ ๋˜๋Š” ํŒŒ์ผ ๊ถŒํ•œ ์„ค์ •์— ๋Œ€ํ•ด ๋‹ค๋ค„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

  • Nginx์™€ Apache ์ฐจ์ด ๋ฐ ์„ ํƒ ๊ธฐ์ค€

    Nginx์™€ Apache ์ฐจ์ด ๋ฐ ์„ ํƒ ๊ธฐ์ค€

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

    Apache โ€” ์˜ค๋ž˜๋œ ๋งŒํผ ์•ˆ์ •์ ์ธ ์›น ์„œ๋ฒ„

    Apache HTTP Server๋Š” 1995๋…„์— ์ฒ˜์Œ ๋‚˜์™”์Šต๋‹ˆ๋‹ค. ์›น์ด ๋ณธ๊ฒฉ์ ์œผ๋กœ ํผ์ง€๋˜ ์‹œ๊ธฐ์— ๋“ฑ์žฅํ•ด์„œ ์˜ค๋žซ๋™์•ˆ ์›น ์„œ๋ฒ„ ์ ์œ ์œจ 1์œ„๋ฅผ ์œ ์ง€ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ง€๊ธˆ๋„ ์ „์ฒด ์›น ์„œ๋ฒ„ ์ค‘ ์ƒ๋‹นํ•œ ๋น„์œจ์„ ์ฐจ์ง€ํ•˜๊ณ  ์žˆ๊ณ , ํŠนํžˆ ์›Œ๋“œํ”„๋ ˆ์Šค ๊ฐ™์€ PHP ๊ธฐ๋ฐ˜ ์„œ๋น„์Šค์—์„œ ๋งŽ์ด ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

    Apache์˜ ๊ฐ€์žฅ ํฐ ํŠน์ง•์€ ์š”์ฒญ ํ•˜๋‚˜๋‹น ํ”„๋กœ์„ธ์Šค ๋˜๋Š” ์Šค๋ ˆ๋“œ๋ฅผ ํ• ๋‹นํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ๋™์ž‘ํ•œ๋‹ค๋Š” ์ ์ž…๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž๊ฐ€ ์ ‘์†ํ•˜๋ฉด ๊ทธ ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•  ํ”„๋กœ์„ธ์Šค๊ฐ€ ํ•˜๋‚˜ ์ƒ๊ธฐ๊ณ , ์ฒ˜๋ฆฌ๊ฐ€ ๋๋‚˜๋ฉด ๋ฐ˜ํ™˜๋ฉ๋‹ˆ๋‹ค. ์ด ๋ฐฉ์‹์„ MPM(Multi-Processing Module)์ด๋ผ๊ณ  ํ•˜๋Š”๋ฐ, prefork, worker, event ์„ธ ๊ฐ€์ง€ ๋ชจ๋“œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ธฐ๋ณธ๊ฐ’์ธ prefork ๋ชจ๋“œ๋Š” ํ”„๋กœ์„ธ์Šค ํ•˜๋‚˜๊ฐ€ ์š”์ฒญ ํ•˜๋‚˜๋ฅผ ๋‹ด๋‹นํ•ฉ๋‹ˆ๋‹ค. ์ง๊ด€์ ์ด๊ณ  ์•ˆ์ •์ ์ด์ง€๋งŒ ๋™์‹œ ์ ‘์†์ด ๋งŽ์•„์ง€๋ฉด ํ”„๋กœ์„ธ์Šค ์ˆ˜๊ฐ€ ๊ธ‰๊ฒฉํžˆ ๋Š˜์–ด๋‚˜๋ฉด์„œ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๋งŽ์ด ์žก์•„๋จน๋Š”๋‹ค๋Š” ๋‹จ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

    Apache์˜ ๋˜ ๋‹ค๋ฅธ ํŠน์ง•์€ .htaccess ํŒŒ์ผ์ž…๋‹ˆ๋‹ค. ๋””๋ ‰ํ† ๋ฆฌ๋ณ„๋กœ .htaccess ํŒŒ์ผ์„ ๋‘๋ฉด ์„œ๋ฒ„ ์ „์ฒด ์„ค์ •์„ ๊ฑด๋“œ๋ฆฌ์ง€ ์•Š๊ณ  ํ•ด๋‹น ๋””๋ ‰ํ† ๋ฆฌ์˜ ๋™์ž‘๋งŒ ๋ฐ”๊ฟ€ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. URL ๋ฆฌ๋‹ค์ด๋ ‰ํŠธ, ์ ‘๊ทผ ์ œํ•œ, ์ธ์ฆ ์„ค์ • ๊ฐ™์€ ๊ฑธ ๋””๋ ‰ํ† ๋ฆฌ ๋‹จ์œ„๋กœ ์ œ์–ดํ•  ์ˆ˜ ์žˆ์–ด์„œ ๊ณต์œ  ํ˜ธ์ŠคํŒ… ํ™˜๊ฒฝ์—์„œ ํŠนํžˆ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค. ๋‹ค๋งŒ Apache๊ฐ€ ์š”์ฒญ๋งˆ๋‹ค .htaccess ํŒŒ์ผ์„ ์ฝ์–ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์„ฑ๋Šฅ์—๋Š” ์•ฝ๊ฐ„์˜ ๋ถ€๋‹ด์ด ๋ฉ๋‹ˆ๋‹ค.

    ๋ชจ๋“ˆ ์‹œ์Šคํ…œ๋„ ๊ฐ•์ ์ž…๋‹ˆ๋‹ค. mod_rewrite, mod_security, mod_php ๊ฐ™์€ ๋ชจ๋“ˆ์„ ๋™์ ์œผ๋กœ ๋กœ๋“œํ•  ์ˆ˜ ์žˆ์–ด์„œ ๊ธฐ๋Šฅ ํ™•์žฅ์ด ์œ ์—ฐํ•ฉ๋‹ˆ๋‹ค. PHP๋ฅผ ๋ชจ๋“ˆ ํ˜•ํƒœ๋กœ ๋ฐ”๋กœ ๋ถ™์ผ ์ˆ˜ ์žˆ๋‹ค๋Š” ์  ๋•Œ๋ฌธ์— PHP ๊ธฐ๋ฐ˜ ํ”„๋กœ์ ํŠธ์—์„œ๋Š” Apache๊ฐ€ ์—ฌ์ „ํžˆ ํŽธ๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

    Nginx โ€” ๋Œ€๋Ÿ‰ ํŠธ๋ž˜ํ”ฝ์— ๊ฐ•ํ•œ ์›น ์„œ๋ฒ„

    Nginx๋Š” 2004๋…„์— ๋Ÿฌ์‹œ์•„ ๊ฐœ๋ฐœ์ž ์ด๊ณ ๋ฅด ์‹œ์‡ผํ”„๊ฐ€ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค. ๋‹น์‹œ Apache๊ฐ€ ๋™์‹œ ์ ‘์† 1๋งŒ ๊ฐœ๋ฅผ ๋„˜๊ธฐ๋ฉด ์„ฑ๋Šฅ์ด ๊ธ‰๊ฒฉํžˆ ๋–จ์–ด์ง€๋Š” ๋ฌธ์ œ๊ฐ€ ์žˆ์—ˆ๋Š”๋ฐ, ์ด๊ฑธ ํ•ด๊ฒฐํ•˜๋ ค๋Š” ๋ชฉ์ ์œผ๋กœ ๊ฐœ๋ฐœ๋œ ๊ฒ๋‹ˆ๋‹ค. ์ด๋ฅธ๋ฐ” C10K ๋ฌธ์ œ๋ผ๊ณ  ๋ถˆ๋ฆฌ๋˜ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

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

    ์ •์  ํŒŒ์ผ ์ฒ˜๋ฆฌ ์†๋„๋„ Nginx๊ฐ€ ๋น ๋ฆ…๋‹ˆ๋‹ค. HTML, CSS, JavaScript, ์ด๋ฏธ์ง€ ๊ฐ™์€ ์ •์  ํŒŒ์ผ์„ ์„œ๋น™ํ•  ๋•Œ Apache๋ณด๋‹ค ๋ˆˆ์— ๋„๊ฒŒ ์ข‹์€ ์„ฑ๋Šฅ์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ์ •์  ํŒŒ์ผ์ด ๋งŽ์€ ์‚ฌ์ดํŠธ์—์„œ๋Š” Nginx๊ฐ€ ํ™•์‹คํžˆ ์œ ๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

    Nginx๋Š” ์›น ์„œ๋ฒ„ ์—ญํ• ๋งŒ ํ•˜๋Š” ๊ฒŒ ์•„๋‹ˆ๋ผ ๋ฆฌ๋ฒ„์Šค ํ”„๋ก์‹œ, ๋กœ๋“œ ๋ฐธ๋Ÿฐ์„œ ์—ญํ• ๋„ ํ•ฉ๋‹ˆ๋‹ค. ์•ž๋‹จ์— Nginx๋ฅผ ๋‘๊ณ  ๋’ค์— Node.js, Django, Spring ๊ฐ™์€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„œ๋ฒ„๋ฅผ ๋ฐฐ์น˜ํ•˜๋Š” ๊ตฌ์„ฑ์ด ๋งค์šฐ ํ”ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฐ ๊ตฌ์กฐ์—์„œ Nginx๋Š” ํด๋ผ์ด์–ธํŠธ ์š”์ฒญ์„ ๋ฐ›์•„์„œ ๋’ค์ชฝ ์„œ๋ฒ„๋กœ ์ „๋‹ฌํ•˜๊ณ  ์‘๋‹ต์„ ๋Œ๋ ค์ฃผ๋Š” ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค. ์‹ค๋ฌด์—์„œ Nginx๋ฅผ ๋ฆฌ๋ฒ„์Šค ํ”„๋ก์‹œ ์šฉ๋„๋กœ ์“ฐ๋Š” ๊ฒฝ์šฐ๊ฐ€ ์ƒ๋‹นํžˆ ๋งŽ์Šต๋‹ˆ๋‹ค.

    ๋‹ค๋งŒ Nginx๋Š” .htaccess ๊ฐ™์€ ๋””๋ ‰ํ† ๋ฆฌ๋ณ„ ์„ค์ • ๊ธฐ๋Šฅ์ด ์—†์Šต๋‹ˆ๋‹ค. ๋ชจ๋“  ์„ค์ •์„ ๋ฉ”์ธ ์„ค์ • ํŒŒ์ผ์—์„œ ๊ด€๋ฆฌํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์„ค์ •์„ ๋ฐ”๊พธ๋ฉด Nginx๋ฅผ ๋ฆฌ๋กœ๋“œํ•ด์•ผ ๋ฐ˜์˜๋˜๊ธฐ ๋•Œ๋ฌธ์— ๊ณต์œ  ํ˜ธ์ŠคํŒ… ํ™˜๊ฒฝ์—์„œ๋Š” ๋ถˆํŽธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ง์ ‘ ์„œ๋ฒ„๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ํ™˜๊ฒฝ์—์„œ๋Š” ์˜คํžˆ๋ ค ์„ค์ •์ด ํ•œ ๊ณณ์— ๋ชจ์—ฌ ์žˆ์–ด์„œ ๊ด€๋ฆฌํ•˜๊ธฐ ํŽธํ•˜๋‹ค๋Š” ์˜๊ฒฌ๋„ ๋งŽ์Šต๋‹ˆ๋‹ค.

    ๋™์ž‘ ๋ฐฉ์‹ ๋น„๊ต

    Apache์™€ Nginx์˜ ์ฐจ์ด๋ฅผ ๊ฐ€์žฅ ์‰ฝ๊ฒŒ ์ดํ•ดํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ์‹๋‹น์— ๋น„์œ ํ•˜๋Š” ๊ฒ๋‹ˆ๋‹ค.

    Apache์˜ prefork ๋ฐฉ์‹์€ ์†๋‹˜์ด ์˜ฌ ๋•Œ๋งˆ๋‹ค ์ „๋‹ด ์›จ์ดํ„ฐ๋ฅผ ํ•œ ๋ช…์”ฉ ๋ถ™์—ฌ์ฃผ๋Š” ์‹๋‹น์ž…๋‹ˆ๋‹ค. ์†๋‹˜์ด 10๋ช…์ด๋ฉด ์›จ์ดํ„ฐ 10๋ช…, 100๋ช…์ด๋ฉด ์›จ์ดํ„ฐ 100๋ช…์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ์†๋‹˜ ํ•˜๋‚˜ํ•˜๋‚˜ํ•œํ…Œ ์„ธ์‹ฌํ•˜๊ฒŒ ๋Œ€์‘ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ, ์†๋‹˜์ด ๊ฐ‘์ž๊ธฐ ๋ชฐ๋ฆฌ๋ฉด ์›จ์ดํ„ฐ๊ฐ€ ๋ถ€์กฑํ•ด์ง€๊ณ  ์‹๋‹น์ด ๋น„์ข์•„์ง‘๋‹ˆ๋‹ค.

    Nginx๋Š” ์›จ์ดํ„ฐ ํ•œ๋‘ ๋ช…์ด ํ™€ ์ „์ฒด๋ฅผ ๋‹ด๋‹นํ•˜๋Š” ์‹๋‹น์ž…๋‹ˆ๋‹ค. ์ฃผ๋ฌธ์„ ๋ฐ›์•„๋†“๊ณ  ์Œ์‹์ด ์ค€๋น„๋˜๋ฉด ๊ฐ€์ ธ๋‹ค์ฃผ๊ณ , ๊ทธ ์‚ฌ์ด์— ๋‹ค๋ฅธ ํ…Œ์ด๋ธ” ์ฃผ๋ฌธ๋„ ๋ฐ›์Šต๋‹ˆ๋‹ค. ์†๋‹˜์ด 100๋ช…์ด๋“  1000๋ช…์ด๋“  ์›จ์ดํ„ฐ ์ˆ˜๋Š” ํฌ๊ฒŒ ๋Š˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋‹ค๋งŒ ์š”๋ฆฌ๊ฐ€ ์˜ค๋ž˜ ๊ฑธ๋ฆฌ๋Š” ๋ณต์žกํ•œ ์ฃผ๋ฌธ์ด ๋งŽ์œผ๋ฉด ๊ทธ๊ฑด ์ฃผ๋ฐฉ(๋ฐฑ์—”๋“œ ์„œ๋ฒ„)์—์„œ ์ฒ˜๋ฆฌํ•ด์•ผ ํ•˜๊ณ , Nginx๋Š” ์„œ๋น™์— ์ง‘์ค‘ํ•ฉ๋‹ˆ๋‹ค.

    ์ด ์ฐจ์ด๊ฐ€ ์‹ค์ œ ์„ฑ๋Šฅ์— ๊ทธ๋Œ€๋กœ ๋ฐ˜์˜๋ฉ๋‹ˆ๋‹ค. ๋™์‹œ ์ ‘์†์ด ์ ์„ ๋•Œ๋Š” ๋‘˜ ๋‹ค ํฐ ์ฐจ์ด๊ฐ€ ์—†์ง€๋งŒ, ์ ‘์†์ด ์ˆ˜์ฒœ ๋‹จ์œ„๋กœ ์˜ฌ๋ผ๊ฐ€๋ฉด Nginx๊ฐ€ ํ›จ์”ฌ ์ ์€ ๋ฆฌ์†Œ์Šค๋กœ ๋ฒ„ํ‹ธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    PHP ์ฒ˜๋ฆฌ ๋ฐฉ์‹์˜ ์ฐจ์ด

    PHP๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ๋‘˜์˜ ์ฐจ์ด๊ฐ€ ์ข€ ๋” ๋ช…ํ™•ํ•ด์ง‘๋‹ˆ๋‹ค.

    Apache๋Š” mod_php ๋ชจ๋“ˆ์„ ํ†ตํ•ด PHP๋ฅผ ์ž์ฒด์ ์œผ๋กœ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Apache ํ”„๋กœ์„ธ์Šค ์•ˆ์—์„œ PHP๊ฐ€ ๋ฐ”๋กœ ์‹คํ–‰๋˜๊ธฐ ๋•Œ๋ฌธ์— ๋ณ„๋„์˜ ์„ค์ • ์—†์ด PHP ํŒŒ์ผ์„ ์š”์ฒญํ•˜๋ฉด ๋ฐ”๋กœ ์ฒ˜๋ฆฌ๋ฉ๋‹ˆ๋‹ค. ์›Œ๋“œํ”„๋ ˆ์Šค๋ฅผ Apache์—์„œ ๋Œ๋ฆฌ๋Š” ๊ฒŒ ๊ฐ„ํŽธํ•œ ์ด์œ ๊ฐ€ ์ด๊ฒƒ์ž…๋‹ˆ๋‹ค.

    Nginx๋Š” PHP๋ฅผ ์ง์ ‘ ์ฒ˜๋ฆฌํ•˜์ง€ ๋ชปํ•ฉ๋‹ˆ๋‹ค. ๋Œ€์‹  PHP-FPM์ด๋ผ๋Š” ๋ณ„๋„์˜ ํ”„๋กœ์„ธ์Šค ๋งค๋‹ˆ์ €๋ฅผ ํ†ตํ•ด ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค. Nginx๊ฐ€ PHP ์š”์ฒญ์„ ๋ฐ›์œผ๋ฉด PHP-FPM์—๊ฒŒ ๋„˜๊ธฐ๊ณ , ๊ฒฐ๊ณผ๋ฅผ ๋ฐ›์•„์„œ ์‚ฌ์šฉ์ž์—๊ฒŒ ๋Œ๋ ค์ฃผ๋Š” ๊ตฌ์กฐ์ž…๋‹ˆ๋‹ค. ์ดˆ๊ธฐ ์„ค์ •์ด Apache๋ณด๋‹ค ํ•œ ๋‹จ๊ณ„ ๋” ํ•„์š”ํ•˜์ง€๋งŒ, PHP-FPM์ด ํ”„๋กœ์„ธ์Šค๋ฅผ ํšจ์œจ์ ์œผ๋กœ ๊ด€๋ฆฌํ•˜๊ธฐ ๋•Œ๋ฌธ์— ํŠธ๋ž˜ํ”ฝ์ด ๋งŽ์„ ๋•Œ๋Š” ์˜คํžˆ๋ ค ์ด ๊ตฌ์กฐ๊ฐ€ ๋” ์•ˆ์ •์ ์ž…๋‹ˆ๋‹ค.

    ์„ค์ • ํŒŒ์ผ ๊ตฌ์กฐ ๋น„๊ต

    Apache์˜ ์„ค์ •์€ ๋ณดํ†ต /etc/apache2/ ๋””๋ ‰ํ† ๋ฆฌ์— ์žˆ์Šต๋‹ˆ๋‹ค. apache2.conf๊ฐ€ ๋ฉ”์ธ ์„ค์ • ํŒŒ์ผ์ด๊ณ , sites-available ํด๋”์— ๊ฐ€์ƒ ํ˜ธ์ŠคํŠธ ์„ค์ •์„ ๋งŒ๋“ค์–ด์„œ sites-enabled์— ์‹ฌ๋ณผ๋ฆญ ๋งํฌ๋กœ ์—ฐ๊ฒฐํ•˜๋Š” ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์— ๋””๋ ‰ํ† ๋ฆฌ๋ณ„ .htaccess๊นŒ์ง€ ์žˆ์œผ๋‹ˆ ์„ค์ •์ด ์—ฌ๋Ÿฌ ๊ณณ์— ๋ถ„์‚ฐ๋˜์–ด ์žˆ๋Š” ์…ˆ์ž…๋‹ˆ๋‹ค.

    Nginx์˜ ์„ค์ •์€ /etc/nginx/ ๋””๋ ‰ํ† ๋ฆฌ์— ์žˆ์Šต๋‹ˆ๋‹ค. nginx.conf๊ฐ€ ๋ฉ”์ธ ํŒŒ์ผ์ด๊ณ , ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ sites-available๊ณผ sites-enabled ๊ตฌ์กฐ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ๋‹ค๋งŒ .htaccess๊ฐ€ ์—†๊ธฐ ๋•Œ๋ฌธ์— ๋ชจ๋“  ์„ค์ •์ด ์ด ํŒŒ์ผ๋“ค ์•ˆ์— ๋‹ค ๋“ค์–ด๊ฐ‘๋‹ˆ๋‹ค. ์„ค์ • ๋ฌธ๋ฒ•๋„ Apache์™€ ๋‹ค๋ฆ…๋‹ˆ๋‹ค. Apache๋Š” XML ๋น„์Šทํ•œ ๋ฌธ๋ฒ•์„ ์“ฐ๊ณ , Nginx๋Š” ์ค‘๊ด„ํ˜ธ ๊ธฐ๋ฐ˜์˜ ์ž์ฒด ๋ฌธ๋ฒ•์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

    ์„ค์ •์„ ๋ฐ”๊พผ ๋’ค์—๋„ ์ฐจ์ด๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. Apache๋Š” graceful restart๋กœ ๋ฌด์ค‘๋‹จ ๋ฐ˜์˜์ด ๊ฐ€๋Šฅํ•˜๊ณ , Nginx๋Š” nginx -s reload ๋ช…๋ น์–ด๋กœ ์„ค์ •์„ ๋ฆฌ๋กœ๋“œํ•ฉ๋‹ˆ๋‹ค. ๋‘˜ ๋‹ค ์„œ๋น„์Šค ์ค‘๋‹จ ์—†์ด ์„ค์ •์„ ๋ฐ˜์˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    ์–ด๋–ค ์ƒํ™ฉ์—์„œ ๋ญ˜ ์„ ํƒํ• ๊นŒ

    ์›Œ๋“œํ”„๋ ˆ์Šค๋‚˜ PHP ๊ธฐ๋ฐ˜ ์‚ฌ์ดํŠธ๋ฅผ ๊ณต์œ  ํ˜ธ์ŠคํŒ… ํ™˜๊ฒฝ์—์„œ ์šด์˜ํ•œ๋‹ค๋ฉด Apache๊ฐ€ ํŽธํ•ฉ๋‹ˆ๋‹ค. .htaccess๋ฅผ ํ†ตํ•ด ๋””๋ ‰ํ† ๋ฆฌ๋ณ„ ์„ค์ •์ด ๊ฐ€๋Šฅํ•˜๊ณ  PHP ๋ชจ๋“ˆ์„ ๋ฐ”๋กœ ๋ถ™์ผ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ๋Œ€๋ถ€๋ถ„์˜ ์›น ํ˜ธ์ŠคํŒ… ์—…์ฒด๊ฐ€ Apache๋ฅผ ๊ธฐ๋ณธ์œผ๋กœ ์ œ๊ณตํ•˜๋Š” ์ด์œ ์ด๊ธฐ๋„ ํ•ฉ๋‹ˆ๋‹ค.

    Node.js, Python, Java ๊ฐ™์€ ๋ฐฑ์—”๋“œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์•ž์— ์›น ์„œ๋ฒ„๋ฅผ ๋‘˜ ๊ฑฐ๋ผ๋ฉด Nginx๊ฐ€ ์ ํ•ฉํ•ฉ๋‹ˆ๋‹ค. ๋ฆฌ๋ฒ„์Šค ํ”„๋ก์‹œ ์„ค์ •์ด ๊ฐ„๋‹จํ•˜๊ณ  ์ •์  ํŒŒ์ผ ์ฒ˜๋ฆฌ ์„ฑ๋Šฅ์ด ์ข‹๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ์š”์ฆ˜ ๋ฐฐํฌ ๊ตฌ์กฐ์—์„œ ๊ฐ€์žฅ ํ”ํ•˜๊ฒŒ ๋ณด์ด๋Š” ์กฐํ•ฉ์ด Nginx + ๋ฐฑ์—”๋“œ ์„œ๋ฒ„ ๊ตฌ์„ฑ์ž…๋‹ˆ๋‹ค.

    ํŠธ๋ž˜ํ”ฝ์ด ๋งŽ๊ฑฐ๋‚˜ ๋™์‹œ ์ ‘์†์ด ์ค‘์š”ํ•œ ์„œ๋น„์Šค๋ผ๋ฉด Nginx๊ฐ€ ์œ ๋ฆฌํ•ฉ๋‹ˆ๋‹ค. ๋ฉ”๋ชจ๋ฆฌ ํšจ์œจ์ด ์ข‹๊ณ  ๋™์‹œ ์ฒ˜๋ฆฌ ์„ฑ๋Šฅ์ด ๋†’๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

    ์‚ฌ์‹ค ์ตœ๊ทผ ์ถ”์„ธ๋ฅผ ๋ณด๋ฉด ์‹ ๊ทœ ํ”„๋กœ์ ํŠธ์—์„œ๋Š” Nginx๋ฅผ ์„ ํƒํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋” ๋งŽ์Šต๋‹ˆ๋‹ค. ํด๋ผ์šฐ๋“œ ํ™˜๊ฒฝ๊ณผ ์ปจํ…Œ์ด๋„ˆ ๊ธฐ๋ฐ˜ ๋ฐฐํฌ๊ฐ€ ๋Š˜๋ฉด์„œ ๊ฐ€๋ณ๊ณ  ๋น ๋ฅธ ์›น ์„œ๋ฒ„๊ฐ€ ์„ ํ˜ธ๋˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ Apache๊ฐ€ ๋‚˜์œ ์„ ํƒ์ด๋ผ๋Š” ๋œป์€ ์•„๋‹™๋‹ˆ๋‹ค. ์ด๋ฏธ Apache๋กœ ์ž˜ ๋Œ์•„๊ฐ€๊ณ  ์žˆ๋Š” ์„œ๋น„์Šค๋ฅผ ๊ตณ์ด Nginx๋กœ ๋ฐ”๊ฟ€ ์ด์œ ๋Š” ์—†์Šต๋‹ˆ๋‹ค.

    ๋‘˜ ๋‹ค ์“ฐ๋Š” ๊ฒฝ์šฐ๋„ ์žˆ๋‹ค

    ์žฌ๋ฏธ์žˆ๋Š” ๊ฑด Apache์™€ Nginx๋ฅผ ๊ฐ™์ด ์“ฐ๋Š” ๊ตฌ์„ฑ๋„ ์žˆ๋‹ค๋Š” ๊ฒ๋‹ˆ๋‹ค. ์•ž๋‹จ์— Nginx๋ฅผ ๋ฆฌ๋ฒ„์Šค ํ”„๋ก์‹œ๋กœ ๋‘๊ณ  ๋’ค์— Apache๋ฅผ ๋ฐฐ์น˜ํ•˜๋Š” ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค. Nginx๊ฐ€ ์ •์  ํŒŒ์ผ ์ฒ˜๋ฆฌ์™€ SSL ์ข…๋ฃŒ๋ฅผ ๋‹ด๋‹นํ•˜๊ณ , ๋™์  ์š”์ฒญ์€ Apache๋กœ ๋„˜๊ธฐ๋Š” ๊ตฌ์กฐ์ž…๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด Nginx์˜ ์„ฑ๋Šฅ๊ณผ Apache์˜ ๋ชจ๋“ˆ ํ˜ธํ™˜์„ฑ์„ ๋‘˜ ๋‹ค ํ™œ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋Œ€๊ทœ๋ชจ ์„œ๋น„์Šค์—์„œ ๊ฐ€๋” ์ด๋Ÿฐ ๊ตฌ์„ฑ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

    ๋งˆ๋ฌด๋ฆฌ

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

  • ๋ฌด๋ฃŒ SSL ์ธ์ฆ์„œ ์ ์šฉํ•˜๊ธฐ โ€” Let’s Encrypt ์‚ฌ์šฉ๋ฒ•

    ๋ฌด๋ฃŒ SSL ์ธ์ฆ์„œ ์ ์šฉํ•˜๊ธฐ โ€” Let’s Encrypt ์‚ฌ์šฉ๋ฒ•

    ์‚ฌ์ดํŠธ์— ๋„๋ฉ”์ธ๊นŒ์ง€ ์—ฐ๊ฒฐํ–ˆ์œผ๋ฉด ๊ทธ๋‹ค์Œ์œผ๋กœ ํ•ด์•ผ ํ•  ์ผ์ด SSL ์ธ์ฆ์„œ ์ ์šฉ์ž…๋‹ˆ๋‹ค. SSL์ด ์—†์œผ๋ฉด ๋ธŒ๋ผ์šฐ์ € ์ฃผ์†Œ์ฐฝ์— “์ฃผ์˜ ์š”ํ•จ”์ด๋ผ๋Š” ๊ฒฝ๊ณ ๊ฐ€ ๋œจ๊ณ , ์‚ฌ์šฉ์ž ์ž…์žฅ์—์„œ๋Š” ์ด ์‚ฌ์ดํŠธ๊ฐ€ ์•ˆ์ „ํ•˜์ง€ ์•Š๋‹ค๋Š” ์ธ์ƒ์„ ๋ฐ›๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ๊ตฌ๊ธ€ ๊ฒ€์ƒ‰ ์ˆœ์œ„์—๋„ ์˜ํ–ฅ์„ ์ฃผ๊ธฐ ๋•Œ๋ฌธ์— ์‚ฌ์‹ค์ƒ ์„ ํƒ์ด ์•„๋‹ˆ๋ผ ํ•„์ˆ˜์ž…๋‹ˆ๋‹ค. ์˜ˆ์ „์—๋Š” SSL ์ธ์ฆ์„œ๊ฐ€ ์œ ๋ฃŒ์˜€๋Š”๋ฐ ์ง€๊ธˆ์€ Let’s Encrypt ๋•๋ถ„์— ๋ฌด๋ฃŒ๋กœ ์ ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฒˆ ๊ธ€์—์„œ๋Š” Let’s Encrypt๊ฐ€ ๋ฌด์—‡์ธ์ง€, ๊ทธ๋ฆฌ๊ณ  ์‹ค์ œ ์„œ๋ฒ„์— ์–ด๋–ป๊ฒŒ ์ ์šฉํ•˜๋Š”์ง€๋ฅผ ์ •๋ฆฌํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

    SSL ์ธ์ฆ์„œ๊ฐ€ ํ•„์š”ํ•œ ์ด์œ 

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

    ๋ˆˆ์— ๋ณด์ด๋Š” ์ฐจ์ด๋„ ์žˆ์Šต๋‹ˆ๋‹ค. SSL์ด ์ ์šฉ๋œ ์‚ฌ์ดํŠธ๋Š” ์ฃผ์†Œ๊ฐ€ https๋กœ ์‹œ์ž‘ํ•˜๊ณ  ์ฃผ์†Œ์ฐฝ์— ์ž๋ฌผ์‡  ์•„์ด์ฝ˜์ด ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค. ๋ฐ˜๋Œ€๋กœ SSL์ด ์—†์œผ๋ฉด http๋กœ ์‹œ์ž‘ํ•˜๊ณ  ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ๊ฒฝ๊ณ ๋ฅผ ๋„์›๋‹ˆ๋‹ค. ํŠนํžˆ ํฌ๋กฌ์€ ๊ฝค ๋ˆˆ์— ๋„๊ฒŒ ๊ฒฝ๊ณ ๋ฅผ ๋ณด์—ฌ์ฃผ๊ธฐ ๋•Œ๋ฌธ์— ๋ฐฉ๋ฌธ์ž๊ฐ€ ๋ฐ”๋กœ ๋’ค๋กœ๊ฐ€๊ธฐ๋ฅผ ๋ˆ„๋ฅผ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

    Let’s Encrypt๋ž€ ๋ฌด์—‡์ธ๊ฐ€

    Let’s Encrypt๋Š” ๋น„์˜๋ฆฌ ๊ธฐ๊ด€์ธ ISRG(Internet Security Research Group)์—์„œ ์šด์˜ํ•˜๋Š” ๋ฌด๋ฃŒ SSL ์ธ์ฆ์„œ ๋ฐœ๊ธ‰ ์„œ๋น„์Šค์ž…๋‹ˆ๋‹ค. 2016๋…„์— ์ •์‹ ์ถœ์‹œ๋๊ณ  ์ง€๊ธˆ์€ ์ „ ์„ธ๊ณ„ ์ˆ˜์–ต ๊ฐœ ์‚ฌ์ดํŠธ์—์„œ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

    ์œ ๋ฃŒ ์ธ์ฆ์„œ์™€ ์•”ํ˜ธํ™” ์ˆ˜์ค€ ์ฐจ์ด๋Š” ์—†์Šต๋‹ˆ๋‹ค. ๋‹ค๋งŒ ์œ ํšจ๊ธฐ๊ฐ„์ด 90์ผ์ด๋ผ์„œ ์ฃผ๊ธฐ์ ์œผ๋กœ ๊ฐฑ์‹ ํ•ด์•ผ ํ•œ๋‹ค๋Š” ์ฐจ์ด๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ๋„ ์ž๋™ ๊ฐฑ์‹  ์„ค์ •์„ ํ•ด๋‘๋ฉด ์‹ ๊ฒฝ ์“ธ ์ผ์ด ์—†์Šต๋‹ˆ๋‹ค.

    Let’s Encrypt ์ธ์ฆ์„œ๋ฅผ ๋ฐœ๊ธ‰๋ฐ›์œผ๋ ค๋ฉด Certbot์ด๋ผ๋Š” ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. Certbot์€ Let’s Encrypt์—์„œ ๊ณต์‹์œผ๋กœ ๊ถŒ์žฅํ•˜๋Š” ํด๋ผ์ด์–ธํŠธ ํ”„๋กœ๊ทธ๋žจ์ด๊ณ , ๋ช…๋ น์–ด ๋ช‡ ์ค„์ด๋ฉด ์ธ์ฆ์„œ ๋ฐœ๊ธ‰๋ถ€ํ„ฐ ์›น ์„œ๋ฒ„ ์„ค์ •๊นŒ์ง€ ์ž๋™์œผ๋กœ ์ฒ˜๋ฆฌํ•ด์ค๋‹ˆ๋‹ค.

    ์‚ฌ์ „ ์ค€๋น„ ์‚ฌํ•ญ

    Certbot์„ ์‹คํ–‰ํ•˜๊ธฐ ์ „์— ํ™•์ธํ•ด์•ผ ํ•  ๊ฒƒ๋“ค์ด ์žˆ์Šต๋‹ˆ๋‹ค.

    ์ฒซ์งธ, ๋„๋ฉ”์ธ์ด ์„œ๋ฒ„ IP์— ์ •์ƒ์ ์œผ๋กœ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. Let’s Encrypt๋Š” ์ธ์ฆ์„œ๋ฅผ ๋ฐœ๊ธ‰ํ•˜๊ธฐ ์ „์— “์ด ๋„๋ฉ”์ธ์ด ์ •๋ง ์ด ์„œ๋ฒ„์˜ ๊ฒƒ์ด ๋งž๋Š”์ง€” ๊ฒ€์ฆํ•˜๋Š” ๊ณผ์ •์„ ๊ฑฐ์นฉ๋‹ˆ๋‹ค. ๋„๋ฉ”์ธ์œผ๋กœ ์ ‘์†ํ–ˆ์„ ๋•Œ ์„œ๋ฒ„์— ๋„๋‹ฌํ•  ์ˆ˜ ์žˆ์–ด์•ผ ๊ฒ€์ฆ์ด ํ†ต๊ณผ๋ฉ๋‹ˆ๋‹ค. ์ด์ „ ๊ธ€์—์„œ ๋‹ค๋ฃฌ A๋ ˆ์ฝ”๋“œ ์„ค์ •์ด ์™„๋ฃŒ๋˜์–ด ์žˆ์–ด์•ผ ํ•œ๋‹ค๋Š” ๋œป์ž…๋‹ˆ๋‹ค.

    ๋‘˜์งธ, ์„œ๋ฒ„์— ์›น ์„œ๋ฒ„๊ฐ€ ์„ค์น˜๋˜์–ด ์žˆ๊ณ  80๋ฒˆ ํฌํŠธ๊ฐ€ ์—ด๋ ค ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. Certbot์ด ๊ฒ€์ฆํ•  ๋•Œ 80๋ฒˆ ํฌํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. Nginx๋“  Apache๋“  ํ•˜๋‚˜๋Š” ์„ค์น˜๋˜์–ด ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

    ์…‹์งธ, ์„œ๋ฒ„์— SSH๋กœ ์ ‘์†ํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. Certbot์€ ์„œ๋ฒ„ ๋‚ด๋ถ€์—์„œ ์ง์ ‘ ์‹คํ–‰ํ•˜๋Š” ๋„๊ตฌ์ด๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

    Certbot ์„ค์น˜ ๋ฐฉ๋ฒ•

    Ubuntu ์„œ๋ฒ„๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์„ค๋ช…ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ๋Œ€๋ถ€๋ถ„์˜ ํด๋ผ์šฐ๋“œ ์„œ๋ฒ„๊ฐ€ Ubuntu๋ฅผ ์‚ฌ์šฉํ•˜๋‹ˆ๊นŒ ๊ฑฐ์˜ ๊ทธ๋Œ€๋กœ ๋”ฐ๋ผ ํ•˜์‹ค ์ˆ˜ ์žˆ์„ ๊ฒ๋‹ˆ๋‹ค.

    ๋จผ์ € ์„œ๋ฒ„์— SSH๋กœ ์ ‘์†ํ•œ ๋‹ค์Œ Certbot๊ณผ Nginx ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค.

    sudo apt update
    sudo apt install certbot python3-certbot-nginx

    Apache๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋‹ค๋ฉด python3-certbot-nginx ๋Œ€์‹  python3-certbot-apache๋ฅผ ์„ค์น˜ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. ์ด ๊ธ€์—์„œ๋Š” Nginx ๊ธฐ์ค€์œผ๋กœ ์ง„ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

    ์„ค์น˜๊ฐ€ ๋๋‚˜๋ฉด certbot ๋ช…๋ น์–ด๊ฐ€ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์ƒํƒœ๊ฐ€ ๋ฉ๋‹ˆ๋‹ค.

    ์ธ์ฆ์„œ ๋ฐœ๊ธ‰ ์‹คํ–‰

    ์„ค์น˜๊ฐ€ ๋๋‚ฌ์œผ๋ฉด ๋‹ค์Œ ๋ช…๋ น์–ด ํ•˜๋‚˜๋กœ ์ธ์ฆ์„œ ๋ฐœ๊ธ‰๊ณผ Nginx ์„ค์ •์„ ๋™์‹œ์— ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    sudo certbot --nginx -d today-play.com -d www.today-play.com

    ์—ฌ๊ธฐ์„œ -d ์˜ต์…˜ ๋’ค์— ์˜ค๋Š” ๊ฒŒ ์ธ์ฆ์„œ๋ฅผ ์ ์šฉํ•  ๋„๋ฉ”์ธ์ž…๋‹ˆ๋‹ค. ๋ฃจํŠธ ๋„๋ฉ”์ธ๊ณผ www ๋„๋ฉ”์ธ์„ ๊ฐ™์ด ๋„ฃ์–ด์ฃผ๋Š” ๊ฒŒ ์ข‹์Šต๋‹ˆ๋‹ค. ๋‘˜ ๋‹ค ๋„ฃ์–ด์•ผ ์–ด๋–ค ์ฃผ์†Œ๋กœ ์ ‘์†ํ•˜๋“  https๊ฐ€ ์ ์šฉ๋ฉ๋‹ˆ๋‹ค.

    ์ฒ˜์Œ ์‹คํ–‰ํ•˜๋ฉด ์ด๋ฉ”์ผ ์ฃผ์†Œ๋ฅผ ์ž…๋ ฅํ•˜๋ผ๊ณ  ๋‚˜์˜ต๋‹ˆ๋‹ค. ์ธ์ฆ์„œ ๋งŒ๋ฃŒ ์•Œ๋ฆผ์„ ๋ฐ›์„ ์ฃผ์†Œ๋ฅผ ์ž…๋ ฅํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋‹ค์Œ ์ด์šฉ์•ฝ๊ด€ ๋™์˜ ์—ฌ๋ถ€๋ฅผ ๋ฌผ์–ด๋ณด๊ณ , HTTP ์ ‘์†์„ HTTPS๋กœ ์ž๋™ ๋ฆฌ๋‹ค์ด๋ ‰ํŠธํ• ์ง€ ๋ฌผ์–ด๋ด…๋‹ˆ๋‹ค. ๋ฆฌ๋‹ค์ด๋ ‰ํŠธ๋Š” ์„ค์ •ํ•˜๋Š” ๊ฒŒ ์ข‹์Šต๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž๊ฐ€ http๋กœ ์ ‘์†ํ•ด๋„ ์ž๋™์œผ๋กœ https๋กœ ๋„˜์–ด๊ฐ€๊ฒŒ ํ•ด์ค๋‹ˆ๋‹ค.

    ๋ชจ๋“  ๊ณผ์ •์ด ๋๋‚˜๋ฉด “Congratulations!”๋ผ๋Š” ๋ฉ”์‹œ์ง€๊ฐ€ ๋‚˜์˜ค๊ณ  ์ธ์ฆ์„œ๊ฐ€ ์ ์šฉ๋ฉ๋‹ˆ๋‹ค. ๋ธŒ๋ผ์šฐ์ €์—์„œ https://todayfunplay.com์œผ๋กœ ์ ‘์†ํ•ด์„œ ์ž๋ฌผ์‡  ์•„์ด์ฝ˜์ด ๋œจ๋Š”์ง€ ํ™•์ธํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

    Certbot์ด ์‹ค์ œ๋กœ ํ•˜๋Š” ์ผ

    ๋ช…๋ น์–ด ํ•œ ์ค„์ด๋ฉด ๋๋‚˜๊ธฐ ๋•Œ๋ฌธ์— ๋‚ด๋ถ€์—์„œ ๋ญ˜ ํ•˜๋Š” ๊ฑด์ง€ ๊ถ๊ธˆํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Certbot์€ ํฌ๊ฒŒ ์„ธ ๊ฐ€์ง€๋ฅผ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

    ๋จผ์ € ๋„๋ฉ”์ธ ์†Œ์œ ๊ถŒ ๊ฒ€์ฆ์„ ํ•ฉ๋‹ˆ๋‹ค. Let’s Encrypt ์„œ๋ฒ„๊ฐ€ ๋‚ด ๋„๋ฉ”์ธ์œผ๋กœ HTTP ์š”์ฒญ์„ ๋ณด๋‚ด์„œ Certbot์ด ๋ฏธ๋ฆฌ ๋งŒ๋“ค์–ด๋‘” ์ž„์‹œ ํŒŒ์ผ์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. ์ ‘๊ทผ์ด ๋˜๋ฉด “์ด ์„œ๋ฒ„๊ฐ€ ์ด ๋„๋ฉ”์ธ์„ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค”๊ณ  ํŒ๋‹จํ•ฉ๋‹ˆ๋‹ค.

    ๊ฒ€์ฆ์ด ํ†ต๊ณผ๋˜๋ฉด ์ธ์ฆ์„œ ํŒŒ์ผ์„ ๋ฐœ๊ธ‰๋ฐ›์•„์„œ ์„œ๋ฒ„์— ์ €์žฅํ•ฉ๋‹ˆ๋‹ค. ๋ณดํ†ต /etc/letsencrypt/live/๋„๋ฉ”์ธ๋ช…/ ๊ฒฝ๋กœ์— ์ €์žฅ๋ฉ๋‹ˆ๋‹ค.

    ๋งˆ์ง€๋ง‰์œผ๋กœ Nginx ์„ค์ • ํŒŒ์ผ์„ ์ˆ˜์ •ํ•ด์„œ SSL ๊ด€๋ จ ์„ค์ •์„ ์ž๋™์œผ๋กœ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค. ์ธ์ฆ์„œ ํŒŒ์ผ ๊ฒฝ๋กœ, SSL ํ”„๋กœํ† ์ฝœ ๋ฒ„์ „, ๋ฆฌ๋‹ค์ด๋ ‰ํŠธ ๊ทœ์น™ ๊ฐ™์€ ๊ฒƒ๋“ค์„ ์•Œ์•„์„œ ๋„ฃ์–ด์ค๋‹ˆ๋‹ค.

    ์ž๋™ ๊ฐฑ์‹  ์„ค์ •

    Let’s Encrypt ์ธ์ฆ์„œ๋Š” 90์ผ๋งˆ๋‹ค ๋งŒ๋ฃŒ๋ฉ๋‹ˆ๋‹ค. ๋งŒ๋ฃŒ๋˜๋ฉด ๋‹ค์‹œ “์ฃผ์˜ ์š”ํ•จ” ๊ฒฝ๊ณ ๊ฐ€ ๋œจ๊ธฐ ๋•Œ๋ฌธ์— ๊ฐฑ์‹ ์„ ๊นŒ๋จน์œผ๋ฉด ์•ˆ ๋ฉ๋‹ˆ๋‹ค.

    ๋‹คํ–‰ํžˆ Certbot์„ ์„ค์น˜ํ•˜๋ฉด ์ž๋™ ๊ฐฑ์‹  ํƒ€์ด๋จธ๊ฐ€ ๊ฐ™์ด ์„ค์ •๋˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์Šต๋‹ˆ๋‹ค. ํ™•์ธํ•˜๋ ค๋ฉด ์ด๋ ‡๊ฒŒ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค.

    sudo systemctl status certbot.timer

    active ์ƒํƒœ๋กœ ๋‚˜์˜ค๋ฉด ์ž๋™ ๊ฐฑ์‹ ์ด ์ด๋ฏธ ๋™์ž‘ํ•˜๊ณ  ์žˆ๋Š” ๊ฒ๋‹ˆ๋‹ค. ๋งŒ์•ฝ ๋น„ํ™œ์„ฑํ™”๋˜์–ด ์žˆ๋‹ค๋ฉด ์ง์ ‘ ํฌ๋ก ํƒญ์— ๋“ฑ๋กํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    sudo crontab -e

    ํŒŒ์ผ์ด ์—ด๋ฆฌ๋ฉด ๋งจ ์•„๋ž˜์— ๋‹ค์Œ ์ค„์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

    0 3 * * * certbot renew --quiet

    ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ๋งค์ผ ์ƒˆ๋ฒฝ 3์‹œ์— ์ธ์ฆ์„œ ๋งŒ๋ฃŒ ์—ฌ๋ถ€๋ฅผ ํ™•์ธํ•˜๊ณ , ๋งŒ๋ฃŒ๊ฐ€ ๊ฐ€๊นŒ์šฐ๋ฉด ์ž๋™์œผ๋กœ ๊ฐฑ์‹ ํ•ฉ๋‹ˆ๋‹ค. –quiet ์˜ต์…˜์€ ๊ฐฑ์‹ ํ•  ๊ฒŒ ์—†์„ ๋•Œ ์•„๋ฌด ์ถœ๋ ฅ๋„ ํ•˜์ง€ ์•Š๊ฒŒ ํ•˜๋Š” ์˜ต์…˜์ž…๋‹ˆ๋‹ค.

    ๊ฐฑ์‹ ์ด ์ œ๋Œ€๋กœ ๋˜๋Š”์ง€ ๋ฏธ๋ฆฌ ํ…Œ์ŠคํŠธํ•ด๋ณด๊ณ  ์‹ถ์œผ๋ฉด ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

    sudo certbot renew --dry-run

    dry-run์€ ์‹ค์ œ๋กœ ๊ฐฑ์‹ ํ•˜์ง€ ์•Š๊ณ  ๊ณผ์ •๋งŒ ์‹œ๋ฎฌ๋ ˆ์ด์…˜ํ•˜๋Š” ๊ฒ๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ ์—๋Ÿฌ๊ฐ€ ๋‚˜์ง€ ์•Š์œผ๋ฉด ์‹ค์ œ ๊ฐฑ์‹ ๋„ ๋ฌธ์ œ์—†์ด ๋  ๊ฒ๋‹ˆ๋‹ค.

    ์ ์šฉ ํ›„ ํ™•์ธํ•˜๋Š” ๋ฐฉ๋ฒ•

    ์ธ์ฆ์„œ๋ฅผ ์ ์šฉํ–ˆ์œผ๋ฉด ์ œ๋Œ€๋กœ ๋™์ž‘ํ•˜๋Š”์ง€ ํ™•์ธํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ฐ€์žฅ ๊ฐ„๋‹จํ•œ ๋ฐฉ๋ฒ•์€ ๋ธŒ๋ผ์šฐ์ €์—์„œ ์ง์ ‘ ์ ‘์†ํ•ด๋ณด๋Š” ๊ฒ๋‹ˆ๋‹ค. ์ฃผ์†Œ์ฐฝ์— ์ž๋ฌผ์‡  ์•„์ด์ฝ˜์ด ๋œจ๊ณ  ์ธ์ฆ์„œ ์ •๋ณด๋ฅผ ํด๋ฆญํ–ˆ์„ ๋•Œ Let’s Encrypt๊ฐ€ ๋ฐœ๊ธ‰ํ•œ ์ธ์ฆ์„œ๋กœ ๋‚˜์˜ค๋ฉด ์ •์ƒ์ž…๋‹ˆ๋‹ค.

    ํ„ฐ๋ฏธ๋„์—์„œ ํ™•์ธํ•˜๊ณ  ์‹ถ์œผ๋ฉด ์ด๋ ‡๊ฒŒ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค.

    curl -I https://todayfunplay.com

    ์‘๋‹ต ํ—ค๋”์— HTTP/2 200์ด ๋‚˜์˜ค๋ฉด SSL์ด ์ •์ƒ ๋™์ž‘ํ•˜๊ณ  ์žˆ๋Š” ๊ฒ๋‹ˆ๋‹ค. ๋งŒ์•ฝ ์—ฐ๊ฒฐ์ด ์•ˆ ๋˜๋ฉด 443๋ฒˆ ํฌํŠธ๊ฐ€ ์—ด๋ ค ์žˆ๋Š”์ง€ ๋จผ์ € ํ™•์ธํ•ด๋ณด์„ธ์š”.

    ์ข€ ๋” ์ž์„ธํ•œ ์ธ์ฆ์„œ ์ƒํƒœ๋ฅผ ๋ณด๊ณ  ์‹ถ์œผ๋ฉด SSL Labs(ssllabs.com/ssltest)์—์„œ ๋„๋ฉ”์ธ์„ ์ž…๋ ฅํ•˜๋ฉด ์ธ์ฆ์„œ ๋“ฑ๊ธ‰๋ถ€ํ„ฐ ๋ณด์•ˆ ์„ค์ •๊นŒ์ง€ ์ƒ์„ธํ•˜๊ฒŒ ๋ถ„์„ํ•ด์ค๋‹ˆ๋‹ค.

    ์ž์ฃผ ๊ฒช๋Š” ๋ฌธ์ œ์™€ ํ•ด๊ฒฐ๋ฒ•

    Certbot ์‹คํ–‰ ์ค‘์— ์—๋Ÿฌ๊ฐ€ ๋‚˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์ข…์ข… ์žˆ์Šต๋‹ˆ๋‹ค.

    ๊ฐ€์žฅ ํ”ํ•œ ๊ฑด “Could not automatically find a matching server block”์ด๋ผ๋Š” ์—๋Ÿฌ์ž…๋‹ˆ๋‹ค. ์ด๊ฑด Nginx ์„ค์ • ํŒŒ์ผ์— server_name์ด ๋„๋ฉ”์ธ๊ณผ ์ผ์น˜ํ•˜์ง€ ์•Š์„ ๋•Œ ๋‚˜์˜ต๋‹ˆ๋‹ค. /etc/nginx/sites-available/default ํŒŒ์ผ์„ ์—ด์–ด์„œ server_name ๋ถ€๋ถ„์— ์ž๊ธฐ ๋„๋ฉ”์ธ์ด ๋“ค์–ด๊ฐ€ ์žˆ๋Š”์ง€ ํ™•์ธํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

    ๋‘ ๋ฒˆ์งธ๋กœ ํ”ํ•œ ๊ฑด ๊ฒ€์ฆ ์‹คํŒจ์ž…๋‹ˆ๋‹ค. “Challenge failed” ๊ฐ™์€ ๋ฉ”์‹œ์ง€๊ฐ€ ๋‚˜์˜ค๋ฉด ๋„๋ฉ”์ธ์ด ์„œ๋ฒ„ IP๋ฅผ ์ œ๋Œ€๋กœ ๊ฐ€๋ฆฌํ‚ค๊ณ  ์žˆ๋Š”์ง€, 80๋ฒˆ ํฌํŠธ๊ฐ€ ์—ด๋ ค ์žˆ๋Š”์ง€, Nginx๊ฐ€ ์‹คํ–‰ ์ค‘์ธ์ง€๋ฅผ ํ™•์ธํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. DNS ์„ค์ •์„ ๋ฐฉ๊ธˆ ๋ณ€๊ฒฝํ–ˆ๋‹ค๋ฉด ์•„์ง ์ „ํŒŒ๊ฐ€ ์•ˆ ๋์„ ์ˆ˜๋„ ์žˆ์œผ๋‹ˆ ์ข€ ๊ธฐ๋‹ค๋ ธ๋‹ค๊ฐ€ ๋‹ค์‹œ ์‹œ๋„ํ•ด๋ณด๋Š” ๊ฒƒ๋„ ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค.

    ์„ธ ๋ฒˆ์งธ๋Š” “Too many requests” ์—๋Ÿฌ์ž…๋‹ˆ๋‹ค. Let’s Encrypt๋Š” ๊ฐ™์€ ๋„๋ฉ”์ธ์— ๋Œ€ํ•ด ์ผ์ฃผ์ผ์— ๋ฐœ๊ธ‰ํ•  ์ˆ˜ ์žˆ๋Š” ์ธ์ฆ์„œ ์ˆ˜์— ์ œํ•œ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ํ…Œ์ŠคํŠธ๋ฅผ ๋ฐ˜๋ณตํ•˜๋‹ค๊ฐ€ ์ด ์ œํ•œ์— ๊ฑธ๋ฆฌ๋ฉด ์ผ์ฃผ์ผ ์ •๋„ ๊ธฐ๋‹ค๋ ค์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ํ…Œ์ŠคํŠธํ•  ๋•Œ๋Š” –staging ์˜ต์…˜์„ ๋ถ™์—ฌ์„œ ํ…Œ์ŠคํŠธ์šฉ ์ธ์ฆ์„œ๋กœ ๋จผ์ € ํ™•์ธํ•˜๋Š” ๊ฒŒ ์ข‹์Šต๋‹ˆ๋‹ค.

    ๋งˆ๋ฌด๋ฆฌ

    Let’s Encrypt์™€ Certbot ๋•๋ถ„์— SSL ์ธ์ฆ์„œ ์ ์šฉ์ด ์ •๋ง ์‰ฌ์›Œ์กŒ์Šต๋‹ˆ๋‹ค. ์„œ๋ฒ„์— ์ ‘์†ํ•ด์„œ ๋ช…๋ น์–ด ๋‘์„ธ ์ค„์ด๋ฉด ๋๋‚˜๊ณ , ์ž๋™ ๊ฐฑ์‹ ๊นŒ์ง€ ์„ค์ •ํ•ด๋‘๋ฉด ๊ทธ ์ดํ›„๋กœ๋Š” ์‹ ๊ฒฝ ์“ธ ์ผ์ด ๊ฑฐ์˜ ์—†์Šต๋‹ˆ๋‹ค. ๋„๋ฉ”์ธ ์—ฐ๊ฒฐ๊นŒ์ง€ ๋๋‚ธ ์ƒํƒœ๋ผ๋ฉด ๋ฐ”๋กœ ์ ์šฉํ•ด๋ณด์‹œ๊ธธ ๊ถŒํ•ฉ๋‹ˆ๋‹ค. ๋‹ค์Œ ๊ธ€์—์„œ๋Š” ์›น ์„œ๋ฒ„๋ฅผ ์„ ํƒํ•  ๋•Œ ๋งŽ์ด ๋น„๊ตํ•˜๊ฒŒ ๋˜๋Š” Nginx์™€ Apache์˜ ์ฐจ์ด๋ฅผ ์ •๋ฆฌํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

  • ์„œ๋ฒ„์— ๋„๋ฉ”์ธ์„ ์—ฐ๊ฒฐํ•˜๋Š” ๋ฐฉ๋ฒ• (A๋ ˆ์ฝ”๋“œ, CNAME ์„ค์ •)

    ์„œ๋ฒ„์— ๋„๋ฉ”์ธ์„ ์—ฐ๊ฒฐํ•˜๋Š” ๋ฐฉ๋ฒ• โ€” A๋ ˆ์ฝ”๋“œ์™€ CNAME ์„ค์ •

    ์„œ๋ฒ„๋ฅผ ํ•˜๋‚˜ ๊ตฌํ–ˆ๋‹ค๊ณ  ํ•ด์„œ ๋ฐ”๋กœ ์‚ฌ์ดํŠธ๊ฐ€ ์—ด๋ฆฌ๋Š” ๊ฑด ์•„๋‹™๋‹ˆ๋‹ค. ๋ธŒ๋ผ์šฐ์ €์— IP ์ฃผ์†Œ๋ฅผ ์ง์ ‘ ์น˜๋ฉด ์ ‘์†์ด ๋˜๊ธด ํ•˜์ง€๋งŒ, ์‚ฌ์šฉ์ž์—๊ฒŒ “143.198.241.73์œผ๋กœ ์ ‘์†ํ•˜์„ธ์š””๋ผ๊ณ  ์•ˆ๋‚ดํ•  ์ˆ˜๋Š” ์—†์ž–์•„์š”. ๊ทธ๋ž˜์„œ ๋„๋ฉ”์ธ์„ ์—ฐ๊ฒฐํ•˜๋Š” ๊ณผ์ •์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฒˆ ๊ธ€์—์„œ๋Š” ๋„๋ฉ”์ธ์„ ์„œ๋ฒ„์— ์—ฐ๊ฒฐํ•  ๋•Œ ๋ฐ˜๋“œ์‹œ ์•Œ์•„์•ผ ํ•˜๋Š” A๋ ˆ์ฝ”๋“œ์™€ CNAME ์„ค์ • ๋ฐฉ๋ฒ•์„ ์‹ค์ œ ๊ณผ์ • ์œ„์ฃผ๋กœ ์ •๋ฆฌํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

    ๋„๋ฉ”์ธ๊ณผ ์„œ๋ฒ„๋Š” ์›๋ž˜ ๋‚จ๋‚จ์ด๋‹ค

    ๋„๋ฉ”์ธ์„ ๊ตฌ๋งคํ–ˆ๋‹ค๊ณ  ํ•ด์„œ ์ž๋™์œผ๋กœ ๋‚ด ์„œ๋ฒ„์™€ ์—ฐ๊ฒฐ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋„๋ฉ”์ธ์€ ๊ฐ€๋น„์•„, Cloudflare, Namecheap ๊ฐ™์€ ๋„๋ฉ”์ธ ๋“ฑ๋ก์—…์ฒด์—์„œ ์‚ฌ๊ณ , ์„œ๋ฒ„๋Š” AWS, Vultr, Oracle Cloud ๊ฐ™์€ ํ˜ธ์ŠคํŒ… ์—…์ฒด์—์„œ ๋”ฐ๋กœ ๋งŒ๋“ค์ฃ . ์ด ๋‘˜์€ ์™„์ „ํžˆ ๋ณ„๊ฐœ์˜ ์„œ๋น„์Šค์ž…๋‹ˆ๋‹ค.

    ๋‘˜์„ ์ด์–ด์ฃผ๋Š” ์—ญํ• ์„ ํ•˜๋Š” ๊ฒŒ DNS ์„ค์ •์ž…๋‹ˆ๋‹ค. DNS ๊ด€๋ฆฌ ํŽ˜์ด์ง€์— ๋“ค์–ด๊ฐ€์„œ “์ด ๋„๋ฉ”์ธ์œผ๋กœ ๋“ค์–ด์˜ค๋ฉด ์ด IP๋กœ ๋ณด๋‚ด์ค˜”๋ผ๊ณ  ๋“ฑ๋กํ•˜๋Š” ๊ฒ๋‹ˆ๋‹ค. ์ด๋•Œ ์‚ฌ์šฉํ•˜๋Š” ๊ฒŒ ๋ฐ”๋กœ A๋ ˆ์ฝ”๋“œ์™€ CNAME์ž…๋‹ˆ๋‹ค.

    A๋ ˆ์ฝ”๋“œ โ€” ๋„๋ฉ”์ธ์„ IP ์ฃผ์†Œ์— ์ง์ ‘ ์—ฐ๊ฒฐ

    A๋ ˆ์ฝ”๋“œ๋Š” ๊ฐ€์žฅ ๊ธฐ๋ณธ์ ์ธ DNS ๋ ˆ์ฝ”๋“œ์ž…๋‹ˆ๋‹ค. ๋„๋ฉ”์ธ ์ด๋ฆ„์„ IPv4 ์ฃผ์†Œ์— ์ง์ ‘ ๋งคํ•‘ํ•ฉ๋‹ˆ๋‹ค.

    ์˜ˆ๋ฅผ ๋“ค์–ด ๋‚ด ์„œ๋ฒ„์˜ IP๊ฐ€ 143.198.241.73์ด๊ณ , ๋„๋ฉ”์ธ์ด today-play.com์ด๋ผ๋ฉด ์ด๋ ‡๊ฒŒ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

    ํƒ€์ž…ํ˜ธ์ŠคํŠธ๊ฐ’TTL
    A@143.198.241.733600

    ํ˜ธ์ŠคํŠธ์— @๋ฅผ ๋„ฃ์œผ๋ฉด ๋„๋ฉ”์ธ ์ž์ฒด(today-play.com)๋ฅผ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ์„ค์ •ํ•˜๋ฉด ๋ˆ„๊ตฐ๊ฐ€ ๋ธŒ๋ผ์šฐ์ €์— today-play.com์„ ์ž…๋ ฅํ–ˆ์„ ๋•Œ, DNS ์„œ๋ฒ„๊ฐ€ 143.198.241.73์„ ์•Œ๋ ค์ฃผ๊ณ , ๋ธŒ๋ผ์šฐ์ €๋Š” ๊ทธ IP๋กœ ์ ‘์†ํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

    ์ฒ˜์Œ ์„œ๋ฒ„์— ๋„๋ฉ”์ธ์„ ์—ฐ๊ฒฐํ•  ๋•Œ๋Š” ๊ฑฐ์˜ ๋Œ€๋ถ€๋ถ„ A๋ ˆ์ฝ”๋“œ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์„œ๋ฒ„ IP๊ฐ€ ๊ณ ์ •๋˜์–ด ์žˆ๋‹ค๋ฉด A๋ ˆ์ฝ”๋“œ๋งŒ์œผ๋กœ ์ถฉ๋ถ„ํ•ฉ๋‹ˆ๋‹ค.

    CNAME โ€” ๋„๋ฉ”์ธ์„ ๋‹ค๋ฅธ ๋„๋ฉ”์ธ์— ์—ฐ๊ฒฐ

    CNAME์€ IP๊ฐ€ ์•„๋‹ˆ๋ผ ๋‹ค๋ฅธ ๋„๋ฉ”์ธ ์ด๋ฆ„์„ ๊ฐ€๋ฆฌํ‚ต๋‹ˆ๋‹ค. ์‰ฝ๊ฒŒ ๋งํ•ด์„œ “๋ณ„๋ช…”์„ ๋งŒ๋“œ๋Š” ๊ฒ๋‹ˆ๋‹ค.

    ๊ฐ€์žฅ ํ”ํ•˜๊ฒŒ ์“ฐ๋Š” ๊ฒฝ์šฐ๊ฐ€ www ์ฒ˜๋ฆฌ์ž…๋‹ˆ๋‹ค.

    ํƒ€์ž…ํ˜ธ์ŠคํŠธ๊ฐ’TTL
    CNAMEwwwtoday-play.com3600

    ์ด๋ ‡๊ฒŒ ์„ค์ •ํ•˜๋ฉด www.today-play.com์œผ๋กœ ์ ‘์†ํ•œ ์‚ฌ๋žŒ๋„ today-play.com๊ณผ ๊ฐ™์€ ๊ณณ์œผ๋กœ ์—ฐ๊ฒฐ๋ฉ๋‹ˆ๋‹ค. CNAME์ด today-play.com์„ ๊ฐ€๋ฆฌํ‚ค๊ณ , today-play.com์˜ A๋ ˆ์ฝ”๋“œ๊ฐ€ ์„œ๋ฒ„ IP๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” ๊ตฌ์กฐ์ž…๋‹ˆ๋‹ค.

    CNAME์€ Vercel, Netlify, GitHub Pages ๊ฐ™์€ ํ”Œ๋žซํผ์—์„œ๋„ ์ž์ฃผ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฐ ์„œ๋น„์Šค๋“ค์€ IP๊ฐ€ ์ˆ˜์‹œ๋กœ ๋ฐ”๋€” ์ˆ˜ ์žˆ์–ด์„œ IP ๋Œ€์‹  ์ž์ฒด ๋„๋ฉ”์ธ ์ฃผ์†Œ๋ฅผ ์•ˆ๋‚ดํ•ด์ค๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด Vercel์—์„œ ์ปค์Šคํ…€ ๋„๋ฉ”์ธ์„ ์—ฐ๊ฒฐํ•˜๋ฉด cname.vercel-dns.com์„ CNAME์œผ๋กœ ๋“ฑ๋กํ•˜๋ผ๊ณ  ์•ˆ๋‚ดํ•˜๋Š” ์‹์ž…๋‹ˆ๋‹ค.

    A๋ ˆ์ฝ”๋“œ์™€ CNAME, ๋ญ˜ ์จ์•ผ ํ• ๊นŒ?

    ๊ฒฐ๋ก ๋ถ€ํ„ฐ ๋งํ•˜๋ฉด ์ƒํ™ฉ์— ๋”ฐ๋ผ ๋‹ค๋ฆ…๋‹ˆ๋‹ค.

    ์ง์ ‘ ์„œ๋ฒ„๋ฅผ ์šด์˜ํ•˜๊ณ  ์žˆ๊ณ  IP๊ฐ€ ๊ณ ์ •๋˜์–ด ์žˆ๋‹ค๋ฉด A๋ ˆ์ฝ”๋“œ๋ฅผ ์”๋‹ˆ๋‹ค. ๋ฐ˜๋ฉด์— ์™ธ๋ถ€ ํ˜ธ์ŠคํŒ… ์„œ๋น„์Šค์— ์—ฐ๊ฒฐํ•˜๋Š” ๊ฒฝ์šฐ, ๊ทธ ์„œ๋น„์Šค์—์„œ CNAME์„ ์“ฐ๋ผ๊ณ  ์•ˆ๋‚ดํ•˜๋ฉด CNAME์„ ์”๋‹ˆ๋‹ค.

    ์ฃผ์˜ํ•  ์ ์ด ํ•˜๋‚˜ ์žˆ๋Š”๋ฐ, ๋ฃจํŠธ ๋„๋ฉ”์ธ(@)์—๋Š” CNAME์„ ์„ค์ •ํ•˜์ง€ ๋ชปํ•˜๋Š” DNS ์—…์ฒด๊ฐ€ ๋งŽ์Šต๋‹ˆ๋‹ค. ์ด๊ฑด DNS ํ‘œ์ค€ ๋•Œ๋ฌธ์ธ๋ฐ, CNAME์€ ํ•ด๋‹น ์ด๋ฆ„์— ๋‹ค๋ฅธ ๋ ˆ์ฝ”๋“œ๊ฐ€ ์žˆ์œผ๋ฉด ์•ˆ ๋˜๊ฑฐ๋“ ์š”. ๋ฃจํŠธ ๋„๋ฉ”์ธ์—๋Š” ๋ณดํ†ต SOA, NS ๋ ˆ์ฝ”๋“œ๊ฐ€ ์ด๋ฏธ ์žˆ์–ด์„œ ์ถฉ๋Œ์ด ๋‚ฉ๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ Cloudflare ๊ฐ™์€ ์ผ๋ถ€ ์—…์ฒด๋Š” “CNAME Flattening”์ด๋ผ๋Š” ๊ธฐ์ˆ ๋กœ ์ด ๋ฌธ์ œ๋ฅผ ์šฐํšŒํ•˜๊ธฐ๋„ ํ•ฉ๋‹ˆ๋‹ค.

    ์‹ค์ œ ์„ค์ • ๊ณผ์ • ์˜ˆ์‹œ

    ๊ฐ€๋น„์•„์—์„œ ๋„๋ฉ”์ธ์„ ๊ตฌ๋งคํ•˜๊ณ  AWS EC2 ์„œ๋ฒ„์— ์—ฐ๊ฒฐํ•˜๋Š” ๊ณผ์ •์„ ๊ฐ„๋‹จํžˆ ์ •๋ฆฌํ•˜๋ฉด ์ด๋ ‡์Šต๋‹ˆ๋‹ค.

    ๋จผ์ € AWS EC2 ์ธ์Šคํ„ด์Šค์—์„œ ํƒ„๋ ฅ์  IP(Elastic IP)๋ฅผ ํ• ๋‹น๋ฐ›์Šต๋‹ˆ๋‹ค. EC2๋ฅผ ์ค‘์ง€ํ–ˆ๋‹ค ์ผœ๋ฉด IP๊ฐ€ ๋ฐ”๋€Œ๊ธฐ ๋•Œ๋ฌธ์—, ๊ณ ์ • IP๋ฅผ ๋จผ์ € ํ™•๋ณดํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋‹ค์Œ ๊ฐ€๋น„์•„ DNS ๊ด€๋ฆฌ ํŽ˜์ด์ง€์— ๋“ค์–ด๊ฐ€์„œ A๋ ˆ์ฝ”๋“œ์— ํ˜ธ์ŠคํŠธ @, ๊ฐ’์— ํ• ๋‹น๋ฐ›์€ IP๋ฅผ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค. www๋„ ์ฒ˜๋ฆฌํ•˜๊ณ  ์‹ถ์œผ๋ฉด CNAME ๋ ˆ์ฝ”๋“œ์— ํ˜ธ์ŠคํŠธ www, ๊ฐ’์— ๋‚ด ๋„๋ฉ”์ธ์„ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค.

    ์„ค์ •์„ ์ €์žฅํ•˜๊ณ  ๋‚˜๋ฉด ๋ณดํ†ต ์ˆ˜ ๋ถ„์—์„œ ์ตœ๋Œ€ 48์‹œ๊ฐ„ ์ •๋„ ๊ฑธ๋ฆด ์ˆ˜ ์žˆ๋‹ค๊ณ  ๋‚˜์˜ค๋Š”๋ฐ, ์‹ค์ œ๋กœ๋Š” ๋Œ€๋ถ€๋ถ„ 10๋ถ„ ์•ˆ์— ๋ฐ˜์˜๋ฉ๋‹ˆ๋‹ค. TTL ๊ฐ’์ด ๋‚ฎ์„์ˆ˜๋ก ๋นจ๋ฆฌ ํผ์ง‘๋‹ˆ๋‹ค.

    ๋ฐ˜์˜ ์—ฌ๋ถ€๋ฅผ ํ™•์ธํ•˜๊ณ  ์‹ถ์œผ๋ฉด ํ„ฐ๋ฏธ๋„์—์„œ ์ด๋ ‡๊ฒŒ ์ž…๋ ฅํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

    nslookup today-play.com

    ์—ฌ๊ธฐ์„œ ๋‚ด ์„œ๋ฒ„ IP๊ฐ€ ๋‚˜์˜ค๋ฉด ์—ฐ๊ฒฐ์ด ์ •์ƒ์ ์œผ๋กœ ๋œ ๊ฒ๋‹ˆ๋‹ค. ๋งŒ์•ฝ ์˜ˆ์ „ IP๊ฐ€ ๋‚˜์˜ค๊ฑฐ๋‚˜ ์‘๋‹ต์ด ์—†์œผ๋ฉด ์•„์ง ์ „ํŒŒ๊ฐ€ ์•ˆ ๋œ ๊ฒƒ์ด๋‹ˆ ์กฐ๊ธˆ ๊ธฐ๋‹ค๋ฆฌ๋ฉด ๋ฉ๋‹ˆ๋‹ค.

    ์„ค์ •ํ•  ๋•Œ ์ž์ฃผ ํ•˜๋Š” ์‹ค์ˆ˜๋“ค

    ์ฒ˜์Œ ๋„๋ฉ”์ธ ์—ฐ๊ฒฐํ•  ๋•Œ ์€๊ทผํžˆ ์‚ฝ์งˆํ•˜๋Š” ๋ถ€๋ถ„์ด ์žˆ์Šต๋‹ˆ๋‹ค.

    ์ฒซ ๋ฒˆ์งธ๋Š” IP๋ฅผ ์ž˜๋ชป ์ž…๋ ฅํ•˜๋Š” ๊ฒฝ์šฐ์ž…๋‹ˆ๋‹ค. ํŠนํžˆ AWS๋ฅผ ์“ธ ๋•Œ ํผ๋ธ”๋ฆญ IP์™€ ํ”„๋ผ์ด๋น— IP๋ฅผ ํ—ท๊ฐˆ๋ ค์„œ ํ”„๋ผ์ด๋น— IP๋ฅผ ์ž…๋ ฅํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. DNS์—๋Š” ๋ฐ˜๋“œ์‹œ ํผ๋ธ”๋ฆญ IP๋ฅผ ๋„ฃ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

    ๋‘ ๋ฒˆ์งธ๋Š” ์„œ๋ฒ„์—์„œ ํฌํŠธ๋ฅผ ์•ˆ ์—ด์–ด๋†“์€ ๊ฒฝ์šฐ์ž…๋‹ˆ๋‹ค. DNS ์—ฐ๊ฒฐ์€ ๋๋Š”๋ฐ ์‚ฌ์ดํŠธ๊ฐ€ ์•ˆ ๋œฌ๋‹ค๋ฉด ์„œ๋ฒ„์˜ ๋ณด์•ˆ ๊ทธ๋ฃน(AWS ๊ธฐ์ค€)์—์„œ 80๋ฒˆ, 443๋ฒˆ ํฌํŠธ๊ฐ€ ์—ด๋ ค ์žˆ๋Š”์ง€ ํ™•์ธํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

    ์„ธ ๋ฒˆ์งธ๋Š” ๋„๋ฉ”์ธ ๋“ฑ๋ก์—…์ฒด์™€ DNS ๊ด€๋ฆฌ ์œ„์น˜๊ฐ€ ๋‹ค๋ฅธ ๊ฒฝ์šฐ์ž…๋‹ˆ๋‹ค. ๋„๋ฉ”์ธ์€ ๊ฐ€๋น„์•„์—์„œ ์ƒ€๋Š”๋ฐ ๋„ค์ž„์„œ๋ฒ„๋ฅผ Cloudflare๋กœ ๋ณ€๊ฒฝํ–ˆ๋‹ค๋ฉด, DNS ๋ ˆ์ฝ”๋“œ ์„ค์ •์€ Cloudflare์—์„œ ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ฐ€๋น„์•„์—์„œ ์•„๋ฌด๋ฆฌ ์ˆ˜์ •ํ•ด๋„ ๋ฐ˜์˜์ด ์•ˆ ๋ฉ๋‹ˆ๋‹ค.

    ๋งˆ๋ฌด๋ฆฌ

    ๋„๋ฉ”์ธ ์—ฐ๊ฒฐ์€ ์„œ๋ฒ„ ์šด์˜์˜ ์ฒซ ๊ด€๋ฌธ ๊ฐ™์€ ๋‹จ๊ณ„์ž…๋‹ˆ๋‹ค. A๋ ˆ์ฝ”๋“œ๋กœ IP๋ฅผ ์ง์ ‘ ์ง€์ •ํ•˜๊ณ , ํ•„์š”ํ•˜๋ฉด CNAME์œผ๋กœ www๋‚˜ ์™ธ๋ถ€ ์„œ๋น„์Šค๋ฅผ ์—ฐ๊ฒฐํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. ๊ฐœ๋… ์ž์ฒด๋Š” ๋‹จ์ˆœํ•œ๋ฐ ์ฒ˜์Œ์— DNS ๊ด€๋ฆฌ ํ™”๋ฉด์„ ๋ณด๋ฉด ๋ญ๊ฐ€ ๋ญ”์ง€ ํ—ท๊ฐˆ๋ฆฌ๋Š” ๊ฒŒ ์ •์ƒ์ž…๋‹ˆ๋‹ค. ํ•œ ๋ฒˆ ์ง์ ‘ ํ•ด๋ณด๋ฉด ๊ทธ๋‹ค์Œ๋ถ€ํ„ฐ๋Š” ๊ธˆ๋ฐฉ ํ•ฉ๋‹ˆ๋‹ค.

    ๋‹ค์Œ ๊ธ€์—์„œ๋Š” ๋„๋ฉ”์ธ ์—ฐ๊ฒฐ ํ›„์— ๊ฑฐ์˜ ๋ฐ˜๋“œ์‹œ ํ•ด์•ผ ํ•˜๋Š” SSL ์ธ์ฆ์„œ ์ ์šฉ ๋ฐฉ๋ฒ•(Let’s Encrypt)์„ ๋‹ค๋ฃจ๊ฒ ์Šต๋‹ˆ๋‹ค.