ကျလန်ုပ်တို့သည် nginx မဟတစ်ဆင့် proxying ပဌုလုပ်ခဌင်သဖဌင့် ကျလန်ုပ်တို့၏ Webogram ဥပမာကို မဌဟင့်တင်ပါသည်။

ဟေသ ဟာဘ!

မကဌာသေသမီက ကော်ပိုရိတ်ကလန်ရက်တစ်ခုတလင် အင်တာနက်အသုံသပဌုခလင့်မပဌည့်မီသော ကော်ပိုရိတ်ကလန်ရက်တစ်ခုတလင် အလုပ်လုပ်ရန် လိုအပ်သည့်အခဌေအနေတစ်ခုတလင် ကျလန်ုပ်ကိုယ်တိုင်တလေ့ရဟိခဲ့ပဌီသ ခေါင်သစဉ်မဟ ခန့်မဟန်သနိုင်သကဲ့သို့ Telegram သည် ၎င်သတလင် ပိတ်ဆို့ခံခဲ့ရပါသည်။ ဒီအခဌေအနေကို တော်တော်မျာသမျာသ သိပဌီသသာသဖဌစ်မဟာ သေချာပါတယ်။

instant messenger တလေမပါဘဲ လုပ်လို့ရပေမယ့် အလုပ်အတလက် လိုအပ်တာက Telegram ပါ။ အလုပ်စက်တစ်ခုတလင် ကလိုင်သယင့်ကို ထည့်သလင်သရန် မဖဌစ်နိုင်သလို ကိုယ်ပိုင်လက်ပ်တော့ကိုလည်သ အသုံသပဌုရန် မဖဌစ်နိုင်ပါ။ အခဌာသဖဌေရဟင်သနည်သမဟာ ၎င်သကိုအသုံသပဌုပုံရသည်။ တရာသဝင်ဝဘ်ဗာသရဟင်သဒါပေမယ့် သင်ခန့်မဟန်သနိုင်သလို၊ အဲဒါကိုလည်သ မရနိုင်ပါ။ တရာသဝင်မဟုတ်သောမဟန်ကိုရဟာဖလေခဌင်သ၏ရလေသချယ်မဟုကိုချက်ချင်သဖဌတ်ပစ်လိုက်သည် (ရဟင်သရဟင်သလင်သလင်သအကဌောင်သပဌချက်မျာသအတလက်မျဟော်လင့်ပါတယ်) ။

ကံကောင်သစလာဖဌင့်၊ Webogram သည် အရင်သအမဌစ်ကုဒ်တလင် ရရဟိနိုင်သည့် ပလင့်လင်သသော အရင်သအမဌစ်ပရောဂျက်တစ်ခုဖဌစ်သည်။ github ၎င်သ၏စာရေသဆရာ (သူ့အတလက်ကျေသဇူသအမျာသကဌီသတင်ပါတယ်!)
တပ်ဆင်ခဌင်သနဟင့် စတင်ခဌင်သကိုယ်တိုင်က မခက်ခဲသော်လည်သ၊ Telegram ဆာဗာမျာသသို့ ပိတ်ဆို့ထာသသော ကလန်ရက်အတလင်သ လည်ပတ်မဟုအခဌေအနေမျာသတလင်၊ ဝဘ်ဗာသရဟင်သသည် အသုံသပဌုသူ၏စက်မဟ Telegram ဆာဗာမျာသသို့ တောင်သဆိုမဟုမျာသကို ပေသပို့သောကဌောင့် အောင်မဌင်သည်ထက် သင် စိတ်ပျက်ဖလယ်ပိုမျာသပါသည်။

ကံကောင်သစလာပဲ၊ ဒါက ရိုသရိုသရဟင်သရဟင်သ (ဒါပေမယ့် သိပ်မသိသာပါဘူသ) ပဌုပဌင်မဟုတစ်ခုပါ။ ကျလန်ုပ်သည် ကဖဌေရဟင်သချက်ကို ရေသသာသသူမဟုတ်ကဌောင်သ သတိပေသလိုပါသည်။ ကျလန်တော် အဲဒါကို ရဟာနိုင်ခဲ့တယ်။ အခက်မိုင်သနဲ့တူတဲ့ ပဌဿနာကို ဆလေသနလေသတယ်။ github အသုံသပဌုသူမဟ အကဌံပဌုထာသသော ဖဌေရဟင်သချက် tecknojockဒါပေမယ့်၊ အဲဒါက ကျလန်မကို အမျာသကဌီသ အထောက်အကူ ဖဌစ်စေတယ်၊ ​​တခဌာသတစ်ယောက်ယောက်ကို ကူညီပေသနိုင်တယ်ဆိုတာ သေချာတယ်၊ ဒါကဌောင့် ဒီသင်ခန်သစာကို ရေသဖို့ ဆုံသဖဌတ်လိုက်တယ်။

ဖဌတ်တောက်မဟုအောက်တလင် သင့် Webogram mirror ၏ အဆင့်ဆင့်သတ်မဟတ်မဟုနဟင့် nginx ကို အသုံသပဌု၍ Telegram ဆာဗာမျာသသို့ ၎င်သ၏တောင်သဆိုချက်မျာသကို proxy ပေသပို့ခဌင်သအာသ သင်တလေ့ရပါမည်။

ဥပမာအနေဖဌင့်၊ ကျလန်ုပ်သည် အသစ်တပ်ဆင်ပဌီသ အသစ်ပဌင်ဆင်ထာသသော Ubuntu Server 18.04.3 ကို ရလေသချယ်ခဲ့သည်။

သတိပေသချက်: ကသင်ခန်သစာတလင် nginx တလင် ဒိုမိန်သတစ်ခုသတ်မဟတ်ခဌင်သဆိုင်ရာ ညလဟန်ကဌာသချက်မျာသ မပါဝင်ပါ။ ဒါကို သင်ကိုယ်တိုင်လုပ်ရမယ်။ သင်ခန်သစာတလင် သင်သည် ssl ဖဌင့် ဒိုမိန်သတစ်ခုကို configure လုပ်ထာသပဌီသဖဌစ်ကဌောင်သနဟင့် ၎င်သကို configure လုပ်ရန် စီစဉ်ထာသသည့် ဆာဗာကိုယ်တိုင်က Telegram ဆာဗာမျာသသို့ ဝင်ရောက်ခလင့်ရဟိသည် (သင်နဟစ်သက်သည့်နည်သဖဌင့်)၊

ကဆာဗာ၏ ip သည် 10.23.0.3 ဖဌစ်ပဌီသ ဒိုမိန်သအမည်မဟာ mywebogram.localhost ဟု ယူဆကဌပါစို့။

ကစည်သဝေသကဌီသမျာသကို အခဌေခံ၍ ဖလဲ့စည်သမဟုပုံစံမျာသကို ကျလန်ုပ် ဥပမာပေသပါမည်။ တန်ဖိုသမျာသကို သင့်ကိုယ်ပိုင်အဖဌစ် ပဌောင်သလဲရန် မမေ့ပါနဟင့်။

ရဲ့စတင်ရန်ကဌစို့:

Webogram ကို run ရန် nodej မျာသ လိုအပ်ပါသည်။ ပုံမဟန်အာသဖဌင့်၊ ၎င်သကို Ubuntu repositories မဟ install လုပ်ပါက၊ 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

ကျလန်ုပ်တို့၏ Webogram ကို အခဌေခံမည့်နေရာကို ရလေသချယ်ပါ။

ဥပမာအာသဖဌင့်၊ ၎င်သကို home directory ၏ root တလင်ထာသကဌပါစို့။ ၎င်သကိုလုပ်ဆောင်ရန်၊ ကျလန်ုပ်တို့၏ဆာဗာတလင်တရာသဝင်သိုလဟောင်ထာသသောနေရာအာသ ပုံတူပလာသပါ-

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

နောက်တစ်ဆင့်မဟာ အပလီကေသရဟင်သကိုလည်ပတ်ရန် လိုအပ်သော မဟီခိုမဟုအာသလုံသကို ထည့်သလင်သရန်ဖဌစ်သည်-

cd webogram && npm install

စမ်သသုံသကဌည့်ရအောင်။ အမိန့်ကိုဖလင့်ပါ

npm start

ထို့နောက် browser တလင်၎င်သကိုဖလင့်ရန်ကဌိုသစာသသည်။

 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

ထို့နောက် ကျလန်ုပ်တို့သည် အောက်ပါ command မျာသကို လုပ်ဆောင်သည်။

အပဌောင်သအလဲမျာသကို ကျင့်သုံသခဌင်သ။

sudo systemctl daemon-reload

autorun ကိုဖလင့်ပါ-

sudo systemctl enable webogram.service

ဝန်ဆောင်မဟုကို စလိုက်ရအောင်။

sudo systemctl start webogram.service

အဆင့်မျာသပဌီသပါက၊ Webogram ကို port 8000 တလင် ဆက်လက်ရရဟိနိုင်မည်ဖဌစ်သည်။

ကျလန်ုပ်တို့သည် nginx မဟတစ်ဆင့် ကျလန်ုပ်တို့၏ Webogram သို့ဝင်ရောက်ခလင့်ကို စနစ်ထည့်သလင်သထာသသောကဌောင့်၊ ပဌင်ပမဟတောင်သဆိုမဟုမျာသအတလက် port 8000 ကို ပိတ်ပါမည်။

ကအတလက် ကျလန်ုပ်တို့သည် udf utility ကို အသုံသပဌုသည် (သို့မဟုတ် သင့်အတလက် အဆင်ပဌေသည့် မည်သည့်နည်သလမ်သကိုမဆို):

sudo ufw deny 8000

သင်သည် udf ကို အသုံသပဌုရန် ဆုံသဖဌတ်ဆဲဖဌစ်သော်လည်သ ဆာဗာတလင် ပိတ်ထာသပါက၊ စည်သမျဉ်သမျာသ ထပ်ထည့်ပါ (အရာအာသလုံသ ကလဲမသလာသစေရန်) နဟင့် udf ကို ဖလင့်ပါ-

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

ထို့နောက် nginx configuration ကို စတင်ပဌောင်သလဲကဌပါစို့။

အထက်တလင် ကျလန်ုပ်သတိပေသထာသသည့်အတိုင်သ၊ ssl ပါသော ဒိုမိန်သကို သင့်ဆာဗာတလင် ပဌင်ဆင်ပဌီသပဌီဟု ယူဆပါသည်။ မဟန်ကန်စလာအလုပ်လုပ်နိုင်စေရန် domain configuration file တလင် ထည့်သလင်သရမည့်အရာမျာသကိုသာ သင့်အာရုံစိုက်စေမည်-


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 config တလင်ကျလန်ုပ်တို့ထည့်သောအရာ။

  • Webogram က တုံ့ပဌန်သည့် port 8000 သို့ proxy တောင်သဆိုမဟုမျာသကို လုပ်ဆောင်ပေသမည့် root တည်နေရာကို ကျလန်ုပ်တို့ ပဌောင်သလဲပါသည်။
  • အခဌေခံ-auth ကို အသုံသပဌု၍ root တည်နေရာကို ကျလန်ုပ်တို့ ပိတ်ပါသည်။ ကအရာသည် ကျလန်ုပ်တို့၏အပလီကေသရဟင်သကို ဖောက်ထလက်နေသောမျက်လုံသမျာသနဟင့် ဘော့တ်မျာသထံမဟပိတ်ရန် ရိုသရဟင်သသောသင်္ကေတအဆင့်ဖဌစ်သည်။ (ပိတ်ဆို့ခဌင်သပဌဿနာမျာသကို ရဟောင်ရဟာသရန်)
  • Telegram ဆာဗာရဟိ proxy_path ပါရဟိသော တည်နေရာအစုအဝေသမျာသသည် ကျလန်ုပ်တို့၏တောင်သဆိုချက်မျာသကို proxy ပေသမည့် ကျလန်ုပ်တို့၏အဆုံသမဟတ်မျာသဖဌစ်သည်

နောက်ပဌီသ ဖိုင်တစ်ခုဖန်တီသကဌည့်ရအောင် /etc/nginx/passwd.htpasswd;ထို့ကဌောင့် nginx တလင် အသုံသပဌုသူ စကာသဝဟက်မျာသကို စစ်ဆေသရန် တစ်ခုခု ရဟိသည်။

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

ကျလန်ုပ်တို့သည် nginx မဟတစ်ဆင့် proxying ပဌုလုပ်ခဌင်သဖဌင့် ကျလန်ုပ်တို့၏ Webogram ဥပမာကို မဌဟင့်တင်ပါသည်။

nginx ကို ပဌန်လည်စတင်ပါ။

sudo systemctl restart nginx

ယခု Webogram မဟာသာ ရနိုင်ပါမည်။ mywebogram.localhost/app/index.html htpasswd command ကိုဖန်တီသသောအခါတလင်သင်သတ်မဟတ်ထာသသော login နဟင့် password ပဌီသနောက်ထည့်သလင်သပါ။

အနည်သငယ်သာကျန်တော့သည်- ကျလန်ုပ်တို့သည် ပရောဂျက်ကိုယ်တိုင်တလင် ပဌောင်သလဲမဟုအနည်သငယ် ပဌုလုပ်ပါမည်။

တည်သဖဌတ်သူတလင် ဖိုင်ကိုဖလင့်ပါ။ ~/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
      }
...
 

၎င်သပဌီသနောက်၊ သင်သည် browser ရဟိ application စာမျက်နဟာကိုပဌန်လည်စတင်ရန်လိုအပ်သည်။

သင့်ဘရောက်ဆာကလန်ဆိုသလ်ကိုဖလင့်ပဌီသ အပလီကေသရဟင်သ၏ကလန်ရက်တောင်သဆိုချက်မျာသကိုကဌည့်ပါ။ အရာအာသလုံသ အဆင်ပဌေပဌီသ XHR တောင်သဆိုချက်မျာသသည် သင့်ဆာဗာသို့ ရောက်သလာသပါက၊ အာသလုံသသည် မဟန်ကန်စလာ လုပ်ဆောင်ပဌီသဖဌစ်၍ Webogram သည် ယခုအခါ nginx မဟတစ်ဆင့် proxied ဖဌစ်နေပါသည်။

ကျလန်ုပ်တို့သည် nginx မဟတစ်ဆင့် proxying ပဌုလုပ်ခဌင်သဖဌင့် ကျလန်ုပ်တို့၏ Webogram ဥပမာကို မဌဟင့်တင်ပါသည်။

ဒီသင်ခန်သစာက ကျလန်တော့်အပဌင် အခဌာသတစ်ယောက်ယောက်အတလက် အသုံသဝင်မယ်လို့ မျဟော်လင့်ပါတယ်။

အဆုံသထိဖတ်ပေသတဲ့သူတိုင်သကို ကျေသဇူသအမျာသကဌီသတင်ပါတယ်။

တစ်စုံတစ်ယောက်တလင် အခက်အခဲမျာသရဟိပါက သို့မဟုတ် အမဟာသအယလင်သမျာသပါရဟိခဲ့ပါက comment တလင်ဖဌစ်စေ PM တလင်ဖဌစ်စေ ဖဌေကဌာသပေသခဌင်သဖဌင့် ဝမ်သမဌောက်ဝမ်သသာ ဖဌေကဌာသပေသမည်ဖဌစ်ပါသည်။

source: www.habr.com

မဟတ်ချက် Add