nginx๋ฅผ ํ†ตํ•œ ํ”„๋ก์‹œ๋กœ Webogram ์ธ์Šคํ„ด์Šค๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

ํ—ค์ด ํ•˜๋ธŒ๋ฅด!

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

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

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

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

์ปท ์•„๋ž˜์—๋Š” Webogram ๋ฏธ๋Ÿฌ์˜ ๋‹จ๊ณ„๋ณ„ ์„ค์ •๊ณผ nginx๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Telegram ์„œ๋ฒ„์— ์š”์ฒญ์„ ํ”„๋ก์‹œ ์„ค์ •ํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ๋‚˜์™€ ์žˆ์Šต๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด, ์ƒˆ๋กœ ์„ค์น˜๋˜๊ณ  ์—…๋ฐ์ดํŠธ๋œ Ubuntu Server 18.04.3์„ ์„ ํƒํ–ˆ์Šต๋‹ˆ๋‹ค.

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

์ด ์„œ๋ฒ„์˜ IP๊ฐ€ 10.23.0.3์ด๊ณ  ๋„๋ฉ”์ธ ์ด๋ฆ„์ด mywebogram.localhost๋ผ๊ณ  ๊ฐ€์ •ํ•ฉ๋‹ˆ๋‹ค.

์ด๋Ÿฌํ•œ ๊ทœ์น™์„ ๋ฐ”ํƒ•์œผ๋กœ ๊ตฌ์„ฑ์˜ ์˜ˆ๋ฅผ ์ œ์‹œํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ๊ฐ’์„ ์ž์‹ ์˜ ๊ฒƒ์œผ๋กœ ๋ณ€๊ฒฝํ•˜๋Š” ๊ฒƒ์„ ์žŠ์ง€ ๋งˆ์‹ญ์‹œ์˜ค.

์ž, ์‹œ์ž‘ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

Webogram์„ ์‹คํ–‰ํ•˜๋ ค๋ฉด nodejs๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ๋ณธ์ ์œผ๋กœ Ubuntu ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์—์„œ ์„ค์น˜ํ•˜๋ฉด nodejs ๋ฒ„์ „ 8.x๋ฅผ ์–ป๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. 12.x๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

curl -sL https://deb.nodesource.com/setup_12.x | sudo -E bash - 
sudo apt update && sudo apt -y install nodejs

์šฐ๋ฆฌ๋Š” ์›น๊ทธ๋žจ์˜ ๊ธฐ๋ฐ˜์ด ๋  ์žฅ์†Œ๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด ํ™ˆ ๋””๋ ‰ํ„ฐ๋ฆฌ์˜ ๋ฃจํŠธ์— ๋ฐฐ์น˜ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๋ ค๋ฉด ๊ณต์‹ ์ €์žฅ์†Œ๋ฅผ ์„œ๋ฒ„์— ๋ณต์ œํ•˜์„ธ์š”.

cd ~ && git clone https://github.com/zhukov/webogram.git

๋‹ค์Œ ๋‹จ๊ณ„๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์‹คํ–‰ํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ๋ชจ๋“  ์ข…์†์„ฑ์„ ์„ค์น˜ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

cd webogram && npm install

ํ…Œ์ŠคํŠธ ์‹คํ–‰์„ ํ•ด๋ณด์ž. ๋‹ค์Œ ๋ช…๋ น์„ ์‹คํ–‰ํ•˜์‹ญ์‹œ์˜ค.

npm start

๊ทธ ํ›„ ๋ธŒ๋ผ์šฐ์ €์—์„œ ์—ด๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

 http://10.23.0.3:8000/app/index.html

์ง€๊ธˆ๊นŒ์ง€ ๋ชจ๋“  ์ž‘์—…์„ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์ˆ˜ํ–‰ํ–ˆ๋‹ค๋ฉด Webogram ์ธ์ฆ ํŽ˜์ด์ง€๊ฐ€ ์—ด๋ฆฝ๋‹ˆ๋‹ค.

์ด์ œ ์„œ๋น„์Šค๋กœ ์‹คํ–‰๋˜๋„๋ก ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ตฌ์„ฑํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ์œ„ํ•ด ํŒŒ์ผ์„ ๋งŒ๋“ค์–ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

sudo touch /lib/systemd/system/webogram.service

์•„๋ฌด ํŽธ์ง‘๊ธฐ์—์„œ๋‚˜ ์—ด๊ณ  ๋‹ค์Œ๊ณผ ๊ฐ™์ด ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค(WorkDirectory ๊ฒฝ๋กœ ์ž…๋ ฅ).

[Unit]
Description=Webogram mirror
[Service]
WorkingDirectory=/home/tg/webogram
ExecStart=/usr/bin/npm start
SuccessExitStatus=143
TimeoutStopSec=10
Restart=on-failure
RestartSec=5
[Install]
WantedBy=multi-user.target

๊ทธ๋Ÿฐ ๋‹ค์Œ ๋‹ค์Œ ๋ช…๋ น์„ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

๋ณ€๊ฒฝ ์‚ฌํ•ญ ์ ์šฉ

sudo systemctl daemon-reload

์ž๋™ ์‹คํ–‰ ํ™œ์„ฑํ™”:

sudo systemctl enable webogram.service

์„œ๋น„์Šค๋ฅผ ์‹œ์ž‘ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

sudo systemctl start webogram.service

๋‹จ๊ณ„๋ฅผ ์™„๋ฃŒํ•œ ํ›„์—๋„ Webogram์€ ํฌํŠธ 8000์—์„œ ๊ณ„์† ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

nginx๋ฅผ ํ†ตํ•ด Webogram์— ๋Œ€ํ•œ ์•ก์„ธ์Šค๋ฅผ ์„ค์ •ํ•˜๋ฏ€๋กœ ์™ธ๋ถ€ ์š”์ฒญ์— ๋Œ€ํ•ด ํฌํŠธ 8000์„ ๋‹ซ์Šต๋‹ˆ๋‹ค.

์ด๋ฅผ ์œ„ํ•ด(๋˜๋Š” ๊ท€ํ•˜์—๊ฒŒ ํŽธ๋ฆฌํ•œ ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•) udf ์œ ํ‹ธ๋ฆฌํ‹ฐ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

sudo ufw deny 8000

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

sudo ufw allow ssh
sudo ufw allow 80
sudo ufw allow 443
sudo ufw enable

๋‹ค์Œ์œผ๋กœ nginx ๊ตฌ์„ฑ ๋ณ€๊ฒฝ์„ ์‹œ์ž‘ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

์œ„์—์„œ ๊ฒฝ๊ณ ํ–ˆ๋“ฏ์ด SSL์ด ํฌํ•จ๋œ ๋„๋ฉ”์ธ์ด ์ด๋ฏธ ์„œ๋ฒ„์— ๊ตฌ์„ฑ๋˜์–ด ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•ฉ๋‹ˆ๋‹ค. ๋„๋ฉ”์ธ ๊ตฌ์„ฑ ํŒŒ์ผ์ด ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์ž‘๋™ํ•˜๋ ค๋ฉด ๋ฌด์—‡์ด ์ถ”๊ฐ€๋˜์–ด์•ผ ํ•˜๋Š”์ง€์—๋งŒ ์ฃผ์˜๋ฅผ ๊ธฐ์šธ์ด๊ฒ ์Šต๋‹ˆ๋‹ค.


server {
...
  location ^~ /pluto/apiw1/ {
    proxy_pass https://pluto.web.telegram.org/apiw1/;
  }
  location ^~ /venus/apiw1/ {
    proxy_pass https://venus.web.telegram.org/apiw1/;
  }
  location ^~ /aurora/apiw1/ {
    proxy_pass https://aurora.web.telegram.org/apiw1/;
  }
  location ^~ /vesta/apiw1/ {
    proxy_pass https://vesta.web.telegram.org/apiw1/;
  }
  location ^~ /flora/apiw1/ {
    proxy_pass https://flora.web.telegram.org/apiw1/;
  }
  location ^~ /pluto-1/apiw1/ {
    proxy_pass https://pluto-1.web.telegram.org/apiw1/;
  }
  location ^~ /venus-1/apiw1/ {
    proxy_pass https://venus-1.web.telegram.org/apiw1/;
  }
  location ^~ /aurora-1/apiw1/ {
    proxy_pass https://aurora-1.web.telegram.org/apiw1/;
  }
  location ^~ /vesta-1/apiw1/ {
    proxy_pass https://vesta-1.web.telegram.org/apiw1/;
  }
  location ^~ /flora-1/apiw1/ {
    proxy_pass https://flora-1.web.telegram.org/apiw1/;
  }
  location ^~ /DC1/ {
    proxy_pass http://149.154.175.10:80/;
  }
  location ^~ /DC2/ {
    proxy_pass http://149.154.167.40:80/;
  }
  location ^~ /DC3/ {
    proxy_pass http://149.154.175.117:80/;
  }
  location ^~ /DC4/ {
    proxy_pass http://149.154.175.50:80/;
  }
  location ^~ /DC5/ {
    proxy_pass http://149.154.167.51:80/;
  }
  location ^~ /DC6/ {
    proxy_pass http://149.154.175.100:80/;
  }
  location ^~ /DC7/ {
    proxy_pass http://149.154.167.91:80/;
  }
  location ^~ /DC8/ {
    proxy_pass http://149.154.171.5:80/;
  }
 location / {
    auth_basic "tg";
    auth_basic_user_file /etc/nginx/passwd.htpasswd;
    proxy_pass http://localhost:8000/;
    proxy_read_timeout 90s;
    proxy_connect_timeout 90s;
    proxy_send_timeout 90s;
    proxy_set_header Host $http_host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $remote_addr;
  }
}

nginx ๊ตฌ์„ฑ์— ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ:

  • Webogram์ด ์‘๋‹ตํ•˜๋Š” ํฌํŠธ 8000์œผ๋กœ ์š”์ฒญ์„ ํ”„๋ก์‹œํ•˜๋Š” ๋ฃจํŠธ ์œ„์น˜๋ฅผ ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค.
  • basic-auth๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฃจํŠธ ์œ„์น˜๋ฅผ ๋‹ซ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ์—ฟ๋ณด๋Š” ๋ˆˆ๊ณผ ๋ด‡์œผ๋กœ๋ถ€ํ„ฐ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์ข…๋ฃŒํ•˜๋Š” ์ˆœ์ „ํžˆ ์ƒ์ง•์ ์ธ ๋‹จ๊ณ„์ž…๋‹ˆ๋‹ค. (๋˜ํ•œ ์ฐจ๋‹จ ๋ฌธ์ œ๋ฅผ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด)
  • Telegram ์„œ๋ฒ„์˜ Proxy_path๊ฐ€ ์žˆ๋Š” ์—ฌ๋Ÿฌ ์œ„์น˜๋Š” ์ •ํ™•ํžˆ ์šฐ๋ฆฌ๊ฐ€ ์š”์ฒญ์„ ํ”„๋ก์‹œํ•  ์—”๋“œํฌ์ธํŠธ์ž…๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ํŒŒ์ผ์„ ๋งŒ๋“ค์–ด๋ณด์ž /etc/nginx/passwd.htpasswd;nginx์—๋Š” ์‚ฌ์šฉ์ž ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

sudo apt install apache2-utils
sudo htpasswd -c /etc/nginx/passwd.htpasswd tg

nginx๋ฅผ ํ†ตํ•œ ํ”„๋ก์‹œ๋กœ Webogram ์ธ์Šคํ„ด์Šค๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

nginx๋ฅผ ๋‹ค์‹œ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค:

sudo systemctl restart nginx

์ด์ œ Webogram์€ ๋‹ค์Œ์—์„œ๋งŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. mywebogram.localhost/app/index.html htpasswd ๋ช…๋ น์„ ์ƒ์„ฑํ•  ๋•Œ ์ •์˜ํ•œ ๋กœ๊ทธ์ธ ๋ฐ ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์ž…๋ ฅํ•œ ํ›„.

๋‚จ์€ ๊ฒƒ์ด ๊ฑฐ์˜ ์—†์Šต๋‹ˆ๋‹ค. ํ”„๋กœ์ ํŠธ ์ž์ฒด๋ฅผ ์•ฝ๊ฐ„ ๋ณ€๊ฒฝํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

ํŽธ์ง‘๊ธฐ์—์„œ ํŒŒ์ผ ์—ด๊ธฐ ~/webogram/app/js/lib/mtproto.js

๊ทธ๋ฆฌ๊ณ  ์‹œ์ž‘์„ ๋‹ค์Œ ํ˜•์‹์œผ๋กœ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค.

/*!
 * Webogram v0.7.0 - messaging web application for MTProto
 * https://github.com/zhukov/webogram
 * Copyright (C) 2014 Igor Zhukov <[email protected]>
 * https://github.com/zhukov/webogram/blob/master/LICENSE
 */

angular.module('izhukov.mtproto', ['izhukov.utils'])

  .factory('MtpDcConfigurator', function () {
    var sslSubdomains = ['pluto', 'venus', 'aurora', 'vesta', 'flora']

    var dcOptions = Config.Modes.test
      ? [
        {id: 1, host: 'mywebogram.localhost/DC1',  port: 80},
        {id: 2, host: 'mywebogram.localhost/DC2',  port: 80},
        {id: 3, host: 'mywebogram.localhost/DC3', port: 80}
      ]
      : [
        {id: 1, host: 'mywebogram.localhost/DC4',  port: 80},
        {id: 2, host: 'mywebogram.localhost/DC5',  port: 80},
        {id: 3, host: 'mywebogram.localhost/DC6', port: 80},
        {id: 4, host: 'mywebogram.localhost/DC7',  port: 80},
        {id: 5, host: 'mywebogram.localhost/DC8',   port: 80}
      ]

    var chosenServers = {}

    function chooseServer (dcID, upload) {
      if (chosenServers[dcID] === undefined) {
        var chosenServer = false,
          i, dcOption

        if (Config.Modes.ssl || !Config.Modes.http) {
          var subdomain = sslSubdomains[dcID - 1] + (upload ? '-1' : '')
          var path = Config.Modes.test ? 'apiw_test1' : '/apiw1/'
          chosenServer = 'https://mywebogram.localhost/' + subdomain + path
          return chosenServer
        }
       for (i = 0; i < dcOptions.length; i++) {
          dcOption = dcOptions[i]
          if (dcOption.id == dcID) {
            chosenServer = 'http://' + dcOption.host + '/apiw1'
            break
          }
        }
        chosenServers[dcID] = chosenServer
      }
...
 

๊ทธ๋Ÿฐ ๋‹ค์Œ ๋ธŒ๋ผ์šฐ์ €์—์„œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ํŽ˜์ด์ง€๋ฅผ ์ƒˆ๋กœ ๊ณ ์ณ์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋ธŒ๋ผ์šฐ์ € ์ฝ˜์†”์„ ์—ด๊ณ  ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๋„คํŠธ์›Œํฌ ์š”์ฒญ์„ ์‚ดํŽด๋ณด์„ธ์š”. ๋ชจ๋“  ๊ฒƒ์ด ์ž‘๋™ํ•˜๊ณ  XHR ์š”์ฒญ์ด ์„œ๋ฒ„๋กœ ์ด๋™ํ•˜๋ฉด ๋ชจ๋“  ๊ฒƒ์ด ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์™„๋ฃŒ๋œ ๊ฒƒ์ด๋ฉฐ Webogram์€ ์ด์ œ nginx๋ฅผ ํ†ตํ•ด ํ”„๋ก์‹œ๋ฉ๋‹ˆ๋‹ค.

nginx๋ฅผ ํ†ตํ•œ ํ”„๋ก์‹œ๋กœ Webogram ์ธ์Šคํ„ด์Šค๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

์ด ํŠœํ† ๋ฆฌ์–ผ์ด ์ € ์™ธ์— ๋‹ค๋ฅธ ๋ˆ„๊ตฐ๊ฐ€์—๊ฒŒ๋„ ๋„์›€์ด ๋˜๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค.

๋๊นŒ์ง€ ์ฝ์–ด์ฃผ์‹  ๋ชจ๋“  ๋ถ„๋“ค๊ป˜ ์ง„์‹ฌ์œผ๋กœ ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค.

ํ˜น์‹œ ์–ด๋ ค์›€์ด ์žˆ์œผ์‹  ๋ถ„์ด๋‚˜ ์ œ๊ฐ€ ๋ถ€์ •ํ™•ํ•œ ๋‚ด์šฉ์„ ์ž‘์„ฑํ•˜์‹  ๊ฒฝ์šฐ ๋Œ“๊ธ€์ด๋‚˜ PM์„ ํ†ตํ•ด ๊ธฐ๊บผ์ด ๋‹ต๋ณ€ํ•ด ๋“œ๋ฆฌ๊ณ  ๋„์›€์„ ๋“œ๋ฆด ์ˆ˜ ์žˆ๋„๋ก ๋…ธ๋ ฅํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

์ถœ์ฒ˜ : habr.com

์ฝ”๋ฉ˜ํŠธ๋ฅผ ์ถ”๊ฐ€