๐Ÿง Linux

[Code-Server] ์ฝ”๋“œ์„œ๋ฒ„๋ฅผ Nginx๋กœ ํ”„๋ก์‹œ ํ˜ธ์ŠคํŒ…ํ•˜๊ธฐ

Dogfoot_JW 2024. 1. 30. 18:08

ID : 2401301657

Tag : #code-server #linux #nginx

๊ฐœ์š”

Code-Server๋ฅผ ํ˜ธ์ŠคํŒ… ํ•˜๊ณ  ๋‚˜์„œ ๊ฐ€์žฅ ํฐ ๊ฑธ๋ฆผ๋Œ์ด ๋˜๋Š” ๋ถ€๋ถ„์ด ์žˆ์—ˆ๋‹ค. SSL์ด ์ ์šฉ์ด ๋˜์ง€ ์•Š์„ ๊ฒฝ์šฐ ์›น ๋ทฐ์˜ ์ด์šฉ์ด ์ œํ•œ๋˜๋Š” ๊ฒƒ์ด๋‹ค. ์ด๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ์‚ฝ์งˆ์„ ํ•˜์˜€๊ณ  ๋‚ด๊ฐ€ ๋ฐœ๊ฒฌํ•œ ๊ฐ€์žฅ ์ตœ์ ์˜ ๋ฐฉ๋ฒ•์€ code-server๋ฅผ nginx์— Proxy Pass๋ฅผ ์ ์šฉํ•œ ํ›„ SSL ์ธ์ฆ์„œ๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ์ด๋‹ค.
์ด๋ฒˆ ํฌ์ŠคํŒ…์—์„œ๋Š” Proxy_Pass๋ฅผ ์ ์šฉํ•˜๋Š” ์ฒซ ๋ฒˆ์งธ ๋‹จ๊ณ„๋ถ€ํ„ฐ ์ง„ํ–‰ํ•˜๋ ค๊ณ  ํ•œ๋‹ค.

 

๊ตฌ์„ฑ

 

์•„๋ž˜์˜ ํ•ญ๋ชฉ์€ ๋‚ด๊ฐ€ ์ž‘์—…์„ ์ง„ํ–‰ํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•œ ํ™˜๊ฒฝ ๊ตฌ์„ฑ์ด๋‹ค.
๋ฒ„์ „์ด ๋งž์ง€ ์•Š๋”๋ผ๋„ ์•„๋ž˜์˜ ํ•ญ๋ชฉ์ด ์ด๋ฏธ ์„ค์น˜๋˜์–ด ์žˆ๋‹ค๋Š” ๊ฐ€์ • ํ•˜์— ์ž‘์—…์„ ์ง„ํ–‰ํ•  ์˜ˆ์ •์ด๋‹ค.

  1. OS : Ubuntu 20.04.5 LTS (GNU/Linux 5.4.0-1100-raspi aarch64)
  2. Code-Server : v4.20.1
  3. Nginx : v1.18.0 (ubuntu)

 

์ง„ํ–‰

1. Code-Server ์„ค์ • ํ™•์ธ

Code-Server์˜ ์•„์ดํ”ผ์™€ ํฌํŠธ๋ฅผ ๋จผ์ € ํ™•์ธํ•ด์•ผ ํ•œ๋‹ค.

cat /home/<USER_USERNAME>/.config/code-server/config.yaml

 

<์ถœ๋ ฅ ๊ฒฐ๊ณผ>

bind-addr: 127.0.0.1:8080 
auth: password 
password: <MY_PASSWORD>
cert: false

 

์—ฌ๊ธฐ์„œ bind-addr์— ๋‚˜์˜จ ์•„์ดํ”ผ์™€ ํฌํŠธ๋ฅผ ์™ธ์›Œ๋‘์ž

 

2. Nginx ์„ค์ • ๋ณ€๊ฒฝ

Nginx๊ฐ€ ์„ค์น˜๋˜์–ด ์žˆ๋‹ค๋Š” ์ƒํ™ฉ์ด์ง€๋งŒ ๋งŒ์•ฝ ์„ค์น˜๊ฐ€ ํ•„์š”ํ•˜๋‹ค๋ฉด

sudo apt-get update
sudo apt-get install nginx

๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Nginx๋ฅผ ์„ค์น˜ํ•˜์ž.

์„ค์น˜๊ฐ€ ๋˜์–ด ์žˆ๋‹ค๋ฉด ๋‹ค์Œ๊ฐ™์ด ๊ตฌ์„ฑํŒŒ์ผ์„ ๋ณ€๊ฒฝํ•ด์•ผ ํ•œ๋‹ค.
์ตœ์‹  Nginx ๋ฒ„์ „์ด๋ผ๋ฉด ์ด๋ฏธ sites-enabled๋กœ ์ ์šฉ์ด ๋˜์–ด์žˆ์„ ๊ฒƒ์ด๋‹ค.
๋งŒ์•ฝ ์ ์šฉ์ด ์•ˆ๋˜์–ด ์žˆ๋‹ค๋ฉด ์•„๋ž˜์˜ ์˜ˆ์ œ์ฒ˜๋Ÿผ ๋ณ€๊ฒฝ์„ ํ•ด์•ผ ํ•œ๋‹ค.

sudo vi /etc/nginx/nginx.conf

 

 

<nginx.conf> ํŒŒ์ผ ๋ณ€๊ฒฝ ์ „

...

include /etc/nginx/conf.d/*.conf;

...

 

 

<nginx.conf> ํŒŒ์ผ ๋ณ€๊ฒฝ ํ›„

...

include /etc/nginx/sites-enabled/*.conf;

...

 

๊ทธ๋Ÿฐ ๋‹ค์Œ
/etc/nginx/ ํด๋” ์•ˆ์—
sites-available
sites-enabled
๋ผ๋Š” ํด๋”๊ฐ€ ์žˆ์–ด์•ผ ๋˜๋Š”๋ฐ ์—†๋‹ค๋ฉด ์•„๋ž˜์˜ ์ฝ”๋“œ๋กœ ์ƒ์„ฑํ•˜์ž

mkdir /etc/nginx/sites-available
mkdir /etc/nginx/sites-enabled

 

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

๊ทธ๋‹ค์Œ sites-available ํด๋” ์•ˆ์— ์„œ๋ฒ„ ๊ตฌ์„ฑํŒŒ์ผ์„ ๋งŒ๋“ค์–ด์•ผ ๋˜๋Š”๋ฐ ํŒŒ์ผ๋ช…์€ ์ž์œ ๋กญ๊ฒŒ ํ•ด๋„ ์ข‹๋‹ค.

 

vim /etc/nginx/sites-available/my-site.conf

 

 

</etc/nginx/sites-available/my-site.conf> ํŒŒ์ผ

server {
    listen 5500;  #์™ธ๋ถ€ ์ ‘๊ทผ์„ ์œ„ํ•œ port (ํฌํŠธํฌ์›Œ๋”ฉ๊ณผ ufw๋ฐฉํ™”๋ฒฝ ํ•ด์ œ๋ฅผ ํ•ด์•ผํ•จ.)
    server_name mydomain.com; #์™ธ๋ถ€์—์„œ ํ˜ธ์ถœํ•˜๋ฉด ์ด๋™์‹œํ‚ฌ ๋„๋ฉ”์ธ OR IP๋„ ๊ฐ€๋Šฅ

    location / {
        proxy_pass http://127.0.0.1:8080; #๋ฐฉ๊ธˆ ์™ธ์›Œ๋‘” ๋‚ด๋ถ€ ์•„์ดํ”ผ์˜ ์ฝ”๋“œ์„œ๋ฒ„ ์ฃผ์†Œ
        proxy_set_header Host mydoamin.com:5500; #(์ค‘์š”) ํ”„๋ก์‹œ ํŒจ์Šค๊ฐ€ ์ด๋ค„์งˆ๋•Œ ํ•ด๋‹น ํ˜ธ์ŠคํŠธ๋ช…์„ ๊ธฐ์ค€์œผ๋กœ ํ”„๋กœํ† ์ฝœ์„ ์—…๋ฐ์ดํŠธํ•˜๋Š”๋ฐ ์ด๋ถ€๋ถ„์ด ์ž˜๋ชป๋  ๊ฒฝ์šฐ WebSocket[1006] ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.
        proxy_set_header Upgrade $http_upgrade; #Code-Server์˜ WebSocket ํ”„๋กœํ† ์ฝœ ์—…๊ทธ๋ ˆ์ด๋“œ๋ฅผ ์œ„ํ•œ ํ—ค๋” ์ง€์ •
        proxy_set_header Connection upgrade;
        proxy_set_header Accept-Encoding gzip;
        #access_log /home/<USER_NAME>/access.log; 
        #error_log /home/<USER_NAME>/error.log; #๋กœ๊น…์„ ์›ํ•œ๋‹ค๋ฉด ์ฃผ์„์„ ํ•ด์ œํ•˜๊ณ  ์‚ฌ์šฉํ•˜๋ฉด ๋œ๋‹ค.
    }
}

# server {
# #๋‹ค๋ฅธ ์„œ๋ฒ„๋ฅผ ์ถ”๊ฐ€ํ•  ๊ฒฝ์šฐ ํฌํŠธ๊ฐ€ ๊ฒน์น˜์ง€ ์•Š๊ฒŒ ์ถ”๊ฐ€ํ•˜์ž.
#}

 

์ž‘์„ฑ์„ ์™„๋ฃŒํ–ˆ์œผ๋ฉด :wq๋ฅผ ์ž…๋ ฅ ํ›„ ์ €์žฅํ•˜์—ฌ ๋‚˜์˜ค์ž.

์ด์ œ sites-enabledํด๋”์— ๋ฐ”๋กœ๊ฐ€๊ธฐ๋ฅผ ์ƒ์„ฑํ•ด์ค˜์•ผ ํ•œ๋‹ค.

sudo ln -s /etc/nginx/sites-available/my-site.conf /etc/nginx/sites-enabled/my-site.conf

 

์ด์ œ /etc/nginx/sites-enabled ํด๋”์— ๊ฐ€๋ณด๋ฉด my-site.conf๋ผ๋Š” ๋˜‘๊ฐ™์€ ํŒŒ์ผ์ด ๋ฐ”๋กœ๊ฐ€๊ธฐ ํ˜•ํƒœ๋กœ ๋‚จ์•„์žˆ์„ ๊ฒƒ์ด๋‹ค. ๋งŒ์•ฝ ์‚ฌ์ดํŠธ๋ฅผ ์ผ์‹œ์ ์œผ๋กœ ๋‹ซ๊ณ  ์‹ถ์œผ๋ฉด sites-available ํด๋”์˜ ํŒŒ์ผ์„ ๊ฑด๋“ค์ง€ ๋ง๊ณ  sites-enabled ํด๋”์˜ ํ•ด๋‹น ๋ฐ”๋กœ๊ฐ€๊ธฐ๋ฅผ ์‚ญ์ œํ•˜๋ฉด ๋œ๋‹ค.

์ •์ƒ์ ์œผ๋กœ ์ž‘๋™์ด ๋˜๋Š”์ง€ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด ์•„๋ž˜์˜ ๋ช…๋ น์–ด๋ฅผ ์ž…๋ ฅํ•˜์ž.

sudo nginx -t

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok 
nginx: configuration file /etc/nginx/nginx.conf test is successful

 

OK๋ฌธ์ž๊ฐ€ ๋œจ๋ฉด my-site.conf ํŒŒ์ผ์— ๋ฌธ๋ฒ• ์˜ค๋ฅ˜๊ฐ€ ์—†๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.

 

๊ทธ๋‹ค์Œ nginx ์žฌ์‹œ๋™

sudo systemctl restart nginx

 

๋งŒ์•ฝ์— ์ž˜ ์ ์šฉ์ด ์•ˆ ๋๋‹ค๋ฉด ๋ธŒ๋ผ์šฐ์ €์˜ ์บ์‹œ๋ฅผ ์‚ญ์ œ ํ›„ ๋‹ค์‹œ ์‹œ๋„ํ•ด ๋ด์•ผ ํ•œ๋‹ค.