[๐Ÿ’ก] code-server์— HTTPS ์ ์šฉํ•˜๊ธฐ

์†Œ๋ฆฌยท2025๋…„ 7์›” 7์ผ
post-thumbnail

์•ˆ๋…•ํ•˜์„ธ์š”. ์†Œ๋ฆฌ์ž…๋‹ˆ๋‹ค ๐Ÿ‘‹
์ด๋ฒˆ ๊ธ€์—์„œ๋Š” ์„ค์น˜ํ•œ code-server์— TLS ์ธ์ฆ์„œ๋ฅผ ์ ์šฉํ•ด HTTPS๋กœ ์—ฐ๊ฒฐํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ด ๋ณผ๊ฒŒ์š”.

code-server ์„ค์น˜์™€ ๊ด€๋ จํ•œ ๋‚ด์šฉ์€ ์ง€๋‚œ ๊ธ€์„ ์ฐธ๊ณ ํ•ด ์ฃผ์„ธ์š”.


nginx๋กœ ๋„๋ฉ”์ธ๊ณผ HTTPS ์„ค์ •ํ•˜๊ธฐ

์ง€๊ธˆ๊นŒ์ง€ ์„ค์ •ํ•œ code-server๋Š” http ํ”„๋กœํ† ์ฝœ์„ ์‚ฌ์šฉํ•ด์š”.
http ํ”„๋กœํ† ์ฝœ์€ ์•”ํ˜ธํ™” ์—†๋Š” ํ†ต์‹  ๋ฐฉ๋ฒ•์ด์–ด์„œ ์™ธ๋ถ€๋ง์—์„œ ์‚ฌ์šฉํ•˜๊ธฐ์—๋Š” ์ ์ ˆํ•˜์ง€ ์•Š์ฃ .

nginx๋ฅผ ์ด์šฉํ•ด https๋ฅผ ์‚ฌ์šฉํ•˜๋„๋ก ๋งŒ๋“ค์–ด ๋ณผ๊ฒŒ์š”.

๐Ÿ“ฅ nginx ์„ค์น˜

nginx๋Š” ์›น ์„œ๋ฒ„ ์†Œํ”„ํŠธ์›จ์–ด์ž…๋‹ˆ๋‹ค.
์ด ํ”„๋กœ๊ทธ๋žจ์—๋Š” ๋ฆฌ๋ฒ„์Šค ํ”„๋ก์‹œ, ๋กœ๋“œ ๋ฐธ๋Ÿฐ์„œ ๋“ฑ์˜ ๋‹ค์–‘ํ•œ ๊ธฐ๋Šฅ์ด ์žˆ์–ด์š”.

code-server์— ์ด ๊ธฐ๋Šฅ์„ ์ ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ nginx๋ฅผ ์„ค์น˜ํ• ๊ฒŒ์š”.

# nginx ์„ค์น˜
> apt install nginx

# nginx ์ž‘๋™ ํ™•์ธ
> systemctl status nginx.service

์„ค์น˜๊ฐ€ ์™„๋ฃŒ๋˜๊ณ  ์ •์ƒ ๋™์ž‘ํ•œ๋‹ค๋ฉด, http๋กœ ์ ‘์† ์‹œ ๊ธฐ๋ณธ ํŽ˜์ด์ง€๋ฅผ ๋ณผ ์ˆ˜ ์žˆ์–ด์š”.

๐Ÿ”’ TLS ์ธ์ฆ์„œ ๋ฐœ๊ธ‰

nginx์˜ ๋ฆฌ๋ฒ„์Šค ํ”„๋ก์‹œ ๊ธฐ๋Šฅ์„ ์ด์šฉํ•ด ๋„๋ฉ”์ธ๊ณผ TLS ์ธ์ฆ์„œ ์ ์šฉ์„ ์ง„ํ–‰ํ• ๊ฒŒ์š”.
์ด ๊ธ€์—์„œ๋Š” Cloudflare์—์„œ ๋“ฑ๋กํ•œ ๋„๋ฉ”์ธ๊ณผ ๋ฐœ๊ธ‰๋œ ์ธ์ฆ์„œ๋กœ ์ง„ํ–‰ํ–ˆ์–ด์š”.

โ„น๏ธ ๋„๋ฉ”์ธ ์ œ๊ณต์ž์˜ TLS ์ธ์ฆ์„œ ์„œ๋น„์Šค ์ด์šฉ์ด ์–ด๋ ต๋‚˜์š”?

๋ฌด๋ฃŒ๋กœ TLS ์ธ์ฆ์„œ๋ฅผ ๋ฐœ๊ธ‰๋ฐ›์„ ์ˆ˜ ์žˆ๋Š” CertBot์„ ์ด์šฉํ•  ์ˆ˜ ์žˆ์–ด์š”.
๋น„์šฉ์ด ๋ถ€๋‹ด์Šค๋Ÿฝ๊ฑฐ๋‚˜ ์†๋„ ๋“ฑ์˜ ์ด์œ ๋กœ ํ”„๋ก์‹ฑ์„ ํ”ผํ•˜๊ณ  ์‹ถ์€ ๊ฒฝ์šฐ CertBot ์ด์šฉ์„ ์ถ”์ฒœํ•ด์š”.

Cloudflare ๋„๋ฉ”์ธ ๊ด€๋ฆฌ ํ™”๋ฉด์—์„œ DNS ๋ฉ”๋‰ด์—์„œ ์„œ๋ฒ„๋กœ ์ด์–ด์ง€๋Š” ๋ ˆ์ฝ”๋“œ๋ฅผ ๋งŒ๋“ค์–ด ์ฃผ์„ธ์š”.
๋ ˆ์ฝ”๋“œ๋ฅผ ๋งŒ๋“ค ๋•Œ, ๋ ˆ์ฝ”๋“œ์˜ ํ”„๋ก์‹ฑ ์˜ต์…˜์„ ์ผฌ์œผ๋กœ ์„ค์ •ํ•ด์•ผ ํ•ด์š”.

์ดํ›„ SSL/TLS ์•”ํ˜ธํ™”๋ฅผ ์ „์ฒด ๋˜๋Š” ์ „์ฒด(์—„๊ฒฉ)์œผ๋กœ ์„ค์ •ํ•ด ์ฃผ์„ธ์š”.

์ด์ œ ์›๋ณธ ์„œ๋ฒ„ ๋ฉ”๋‰ด์—์„œ ์ธ์ฆ์„œ๋ฅผ ์ƒ์„ฑํ• ๊ฒŒ์š”.
์›๋ณธ ์ธ์ฆ์„œ๋ฅผ ์ƒ์„ฑํ•˜๋ฉด ๋‹ค์Œ ์ด๋ฏธ์ง€์ฒ˜๋Ÿผ ์ธ์ฆ์„œ๊ฐ€ ๋ฐœ๊ธ‰๋ผ์š”.

์ด์ œ ์ธ์ฆ์„œ๋ฅผ ์„œ๋ฒ„์— ์ ์šฉํ•ด๋ณผ๊ฒŒ์š”.
์ €๋Š” nginx ๋””๋ ‰ํ„ฐ๋ฆฌ ๋‚ด๋ถ€์— ํ‚ค๋ฅผ ๋„ฃ์—ˆ์–ด์š”.

๐Ÿšจ ์ฃผ์˜!

ํ‚ค๋Š” ์ ˆ๋Œ€๋กœ ์œ ์ถœ๋˜๋ฉด ์•ˆ ๋ผ์š”!
๊ผญ ์†Œ์œ ์ž๋ฅผ ๋ฃจํŠธ ์œ ์ €๋กœ ํ•˜๊ณ , ๋ฃจํŠธ ๊ถŒํ•œ์ด ์—†์œผ๋ฉด ์ฝ์„ ์ˆ˜ ์—†๋„๋ก ๋งŒ๋“ค์–ด์•ผ ํ•ด์š”.

๐Ÿ”— TLS ์ธ์ฆ์„œ ์ ์šฉ

/etc/nginx/sites-available ๋””๋ ‰ํ„ฐ๋ฆฌ ๋‚ด๋ถ€์— ํŒŒ์ผ์„ ํ•˜๋‚˜ ๋งŒ๋“ค์–ด์š”.
์ €๋Š” code-server๋ผ๋Š” ์ด๋ฆ„์œผ๋กœ ๋งŒ๋“ค์—ˆ์–ด์š”.

server {
	listen 443 ssl;
	server_name example.com;  # ์‚ฌ์šฉํ•  ๋„๋ฉ”์ธ ์ž…๋ ฅ

	ssl_certificate /etc/nginx/.key/cert.pub;  # ํ‚ค ์ €์žฅํ•œ ์œ„์น˜ ์ž…๋ ฅ
	ssl_certificate_key /etc/nginx/.key/cert.priv;
	ssl_prefer_server_ciphers on;

	location / {
		proxy_pass http://localhost:8443;
		proxy_set_header Host $http_host;
		proxy_set_header X-Real-IP $remote_addr;
		proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

		proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
	}
}

/etc/nginx/sites-enabled๋กœ ์ด๋™ํ•ด์„œ ์•„๊นŒ ๋งŒ๋“  ํŒŒ์ผ์˜ ์‹ฌ๋ณผ๋ฆญ ๋งํฌ๋ฅผ ๋งŒ๋“ค์–ด์š”.

# sites-enabled ๋””๋ ‰ํ„ฐ๋ฆฌ์— ๋งํฌ ์ƒ์„ฑ
> cd ../sites-enabled
> ln -s ../sites-available/code-server

# ๊ธฐ๋ณธ ํŽ˜์ด์ง€ ๋งํฌ ์‚ญ์ œ
> rm default

์ง€๊ธˆ๊นŒ์ง€ ์ž…๋ ฅํ–ˆ๋˜ nginx ์„ค์ • ํŒŒ์ผ์ด ๋ฌธ์ œ ์—†๋Š”์ง€ ๊ฒ€์‚ฌํ•œ ํ›„ nginx๋ฅผ ์žฌ์‹œ์ž‘ํ•ด์š”.

> nginx -t
> systemctl restart nginx.service

์ด์ œ https์œผ๋กœ ์‹œ์ž‘ํ•˜๋Š” ๋„๋ฉ”์ธ ์ฃผ์†Œ๋กœ ์ ‘์†ํ•˜๋ฉด ์•”ํ˜ธํ™”๊ฐ€ ์ ์šฉ๋œ ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์–ด์š”.


๋‘ ์ฐจ๋ก€์— ๊ฑธ์ณ code-server ์„ค์ •์„ ์ง„ํ–‰ํ•ด ๋ณด์•˜์–ด์š”.
์ง€๊ธˆ๊นŒ์ง€ ์ž˜ ๋”ฐ๋ผ์˜ค์…จ๋‹ค๋ฉด, ์ด์ œ ์ธํ„ฐ๋„ท ์—ฐ๊ฒฐ๋งŒ ๋œ๋‹ค๋ฉด ์–ด๋””์„œ๋“  ๊ฐ™์€ ํ™˜๊ฒฝ์—์„œ ๊ฐœ๋ฐœํ•  ์ˆ˜ ์žˆ์„ ๊ฑฐ์˜ˆ์š”.

์—ฌ๋Ÿฌ๋ถ„๋“ค์ด code-server๋ฅผ ํ†ตํ•ด ๋”์šฑ ํŽธ๋ฆฌํ•œ ๊ฐœ๋ฐœ ์ƒํ™œ์„ ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋˜๊ธฐ๋ฅผ ๊ธฐ๋Œ€ํ• ๊ฒŒ์š”!

โœ… ์ง€๊ธˆ๊นŒ์ง€ ํ•œ ์ผ

  • docker-compose๋กœ code-server ์ปจํ…Œ์ด๋„ˆ ๊ตฌ์„ฑํ•˜๊ธฐ
  • ๋ฐฉํ™”๋ฒฝ ์„ค์ •์œผ๋กœ ์™ธ๋ถ€ ์ ‘์† ํ—ˆ์šฉํ•˜๊ธฐ
  • ์›น ๋ธŒ๋ผ์šฐ์ €์—์„œ code-server ์ ‘์† ํ™•์ธํ•˜๊ธฐ
  • TLS ์ธ์ฆ์„œ ์ ์šฉํ•˜๊ธฐ
  • HTTPS๋กœ ์ ‘์†ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋งŒ๋“ค๊ธฐ
profile
์†Œ๋ฆฌ์˜ ์šฐ๋‹นํƒ•ํƒ• ๋ธ”๋กœ๊ทธ

0๊ฐœ์˜ ๋Œ“๊ธ€