ID : 2401301657
Tag : #code-server #linux #nginx
๊ฐ์
Code-Server๋ฅผ ํธ์คํ
ํ๊ณ ๋์ ๊ฐ์ฅ ํฐ ๊ฑธ๋ฆผ๋์ด ๋๋ ๋ถ๋ถ์ด ์์๋ค. SSL์ด ์ ์ฉ์ด ๋์ง ์์ ๊ฒฝ์ฐ ์น ๋ทฐ์ ์ด์ฉ์ด ์ ํ๋๋ ๊ฒ์ด๋ค. ์ด๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ์ฌ๋ฌ ๊ฐ์ง ์ฝ์ง์ ํ์๊ณ ๋ด๊ฐ ๋ฐ๊ฒฌํ ๊ฐ์ฅ ์ต์ ์ ๋ฐฉ๋ฒ์ code-server๋ฅผ nginx์ Proxy Pass๋ฅผ ์ ์ฉํ ํ SSL ์ธ์ฆ์๋ฅผ ์ถ๊ฐํ๋ ๊ฒ์ด๋ค.
์ด๋ฒ ํฌ์คํ
์์๋ Proxy_Pass๋ฅผ ์ ์ฉํ๋ ์ฒซ ๋ฒ์งธ ๋จ๊ณ๋ถํฐ ์งํํ๋ ค๊ณ ํ๋ค.
๊ตฌ์ฑ
์๋์ ํญ๋ชฉ์ ๋ด๊ฐ ์์
์ ์งํํ๊ธฐ ์ํด ์ฌ์ฉํ ํ๊ฒฝ ๊ตฌ์ฑ์ด๋ค.
๋ฒ์ ์ด ๋ง์ง ์๋๋ผ๋ ์๋์ ํญ๋ชฉ์ด ์ด๋ฏธ ์ค์น๋์ด ์๋ค๋ ๊ฐ์ ํ์ ์์
์ ์งํํ ์์ ์ด๋ค.
- OS : Ubuntu 20.04.5 LTS (GNU/Linux 5.4.0-1100-raspi aarch64)
- Code-Server : v4.20.1
- 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
๋ง์ฝ์ ์ ์ ์ฉ์ด ์ ๋๋ค๋ฉด ๋ธ๋ผ์ฐ์ ์ ์บ์๋ฅผ ์ญ์ ํ ๋ค์ ์๋ํด ๋ด์ผ ํ๋ค.