Timakweza chitsanzo chathu cha Webogram ndi proxying kudzera nginx

Pa Habr!

Posachedwapa ndidapezeka kuti ndili mumkhalidwe womwe kunali kofunikira kugwira ntchito mkati mwamakampani omwe alibe mwayi wopezeka pa intaneti ndipo, monga momwe mungaganizire kuchokera pamutuwu, Telegraph idatsekedwa momwemo. Ndikukhulupirira kuti nkhaniyi ndi yodziwika kwa ambiri.

Nditha kuchita popanda amithenga pompopompo, koma inali Telegalamu yomwe ndimafunikira pantchito. Sizinali zotheka kukhazikitsa kasitomala pamakina ogwirira ntchito, komanso sikunali kotheka kugwiritsa ntchito laputopu yanu. Njira inanso ikuwoneka kuti ndiyo kugwiritsa ntchito tsamba lovomerezeka, koma monga momwe mungaganizire, inalibenso. Nthawi yomweyo ndimatulutsa mwayi wofufuza galasi losavomerezeka (ndikuyembekeza pazifukwa zomveka).

Mwamwayi, Webogram ndi pulojekiti yotseguka yomwe magwero ake akupezeka github wolemba wake (Zomwe zimamuthokoza kwambiri!)
Kukhazikitsa ndikudziyambitsa sikuli kovuta, komabe, pakagwiritsidwe ntchito mkati mwa netiweki yotsekedwa ndi ma seva a Telegraph, mutha kukhumudwitsidwa kuposa kuchita bwino, popeza tsamba lawebusayiti limatumiza zopempha ku ma seva a Telegraph kuchokera pamakina a wogwiritsa ntchito.

Mwamwayi, izi ndizosavuta (koma osati zowonekeratu) kukonza. Ndikufuna kukuchenjezani kuti sindine woyambitsa yankho ili. Ndinakwanitsa kuzipeza nthambi, yomwe inakambitsirana za vuto lofanana ndi langa. Yankho loperekedwa ndi wogwiritsa ntchito github tecknojock, zinandithandiza kwambiri, komabe, ndikukhulupirira kuti zingathandize munthu wina, choncho ndinaganiza zolemba phunziroli.

Pansi pa odulidwawo mupeza kukhazikitsidwa kwapang'onopang'ono kwa galasi lanu la Webogram ndikukhazikitsa zopempha zake ku maseva a Telegraph pogwiritsa ntchito nginx.

Mwachitsanzo, ndinasankha Ubuntu Server 18.04.3 yomwe yangoikidwa kumene ndikusinthidwa.

Chenjezo: Phunziroli siliphatikiza malangizo okhazikitsa domain mu nginx. Muyenera kuchita izi nokha. Phunziroli likuganiza kuti mwakonza kale domain ndi ssl, komanso kuti seva yomwe mukufuna kuyikonza imatha kupeza ma seva a Telegraph (m'njira iliyonse yomwe mungafune)

Tiyerekeze kuti ip ya seva iyi ndi 10.23.0.3, ndipo dzina lake ndi mywebogram.localhost

Kutengera pamisonkhanoyi, ndipereka zitsanzo za masinthidwe. Musaiwale kusintha makonda kukhala anu.

Kotero tiyeni tiyambe:

Kuti tiyendetse Webogram, timafunikira ma nodejs. Mwachikhazikitso, ngati tiyiyika kuchokera ku nkhokwe za Ubuntu, tidzapeza nodejs version 8.x. Tikufuna 12.x:

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

Timasankha malo omwe Webogram yathu idzakhazikitsidwa.

Mwachitsanzo, tiyeni tiyike muzu wa bukhu lanyumba. Kuti muchite izi, phatikizani malo ovomerezeka ku seva yathu:

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

Chotsatira ndikukhazikitsa zodalira zonse zofunika kuti mugwiritse ntchito pulogalamuyi:

cd webogram && npm install

Tiyeni tiyese kuyesa. Yendetsani lamulo:

npm start

Pambuyo pake, timayesa kutsegula mu msakatuli

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

Ngati mpaka pano mwachita zonse molondola, tsamba lovomerezeka la Webogram lidzatsegulidwa.

Tsopano tiyenera kukonza pulogalamuyo kuti igwire ntchito ngati ntchito. Kuti tichite izi, tiyeni tipange fayilo

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

tsegulani mumkonzi uliwonse ndikuwonetsetsa zotsatirazi (lowetsani njira yanu yopita ku 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

Kenako timayendetsa malamulo otsatirawa:

Kugwiritsa ntchito zosintha

sudo systemctl daemon-reload

Yambitsani autorun:

sudo systemctl enable webogram.service

Tiyeni tiyambe ntchito:

sudo systemctl start webogram.service

Mukamaliza masitepe, Webogram ipitilira kupezeka padoko 8000.

Popeza tikhala tikukhazikitsa mwayi wofikira ku Webogram yathu kudzera nginx, titseka port 8000 pazofunsira kuchokera kunja.

Timagwiritsa ntchito udf pa izi (kapena njira iliyonse yabwino kwa inu):

sudo ufw deny 8000

Ngati mutasankhabe kugwiritsa ntchito udf, koma yayimitsidwa pa seva, yonjezerani malamulo ena (kuti chirichonse chisawonongeke) ndikuyambitsa udf:

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

Kenako, tiyeni tiyambe kusintha kasinthidwe ka nginx.

Monga ndachenjeza pamwambapa, zimaganiziridwa kuti domain yokhala ndi ssl yakhazikitsidwa kale pa seva yanu. Ndikungoyang'ana zomwe zidzafunike kuwonjezeredwa ku fayilo yosinthira domain kuti igwire bwino ntchito:


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;
  }
}

Zomwe timawonjezera ku nginx config:

  • Timasintha malo omwe ali muzu, omwe adzafunsira kwa doko 8000, pomwe Webogram imayankha
  • Timatseka malo a mizu pogwiritsa ntchito Basic-auth. Ichi ndi sitepe yophiphiritsira kutseka ntchito yathu kuti tisayang'ane maso ndi bots. (Komanso kupewa mavuto ndi kutsekereza)
  • Malo ambiri okhala ndi proxy_path pa seva ya Telegraph ndiye mathero athu momwe titha kuyimira zopempha zathu.

Tsopano, tiyeni tipange fayilo /etc/nginx/passwd.htpasswd;kotero kuti nginx ili ndi china chake chowonera mapasiwedi ogwiritsa ntchito.

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

Timakweza chitsanzo chathu cha Webogram ndi proxying kudzera nginx

Yambitsaninso nginx:

sudo systemctl restart nginx

Tsopano Webogram ipezeka pa mywebogram.localhost/app/index.html mutatha kulowa ndi mawu achinsinsi omwe mudatanthauzira popanga lamulo la htpasswd alowetsedwa.

Zatsala pang'ono: tidzasintha pang'ono polojekiti yokha.

Tsegulani fayilo mumkonzi ~/webogram/app/js/lib/mtproto.js

Ndipo bweretsani chiyambi chake kukhala mawonekedwe awa:

/*!
 * 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
      }
...
 

Pambuyo pake, muyenera kutsitsimutsanso tsamba la ntchito mu msakatuli.

Tsegulani msakatuli wanu ndikuwona zopempha za netiweki. Ngati chirichonse chikugwira ntchito ndipo zopempha za XHR zipita ku seva yanu, ndiye kuti zonse zachitika molondola, ndipo Webogram tsopano ikuyendetsedwa ndi nginx.

Timakweza chitsanzo chathu cha Webogram ndi proxying kudzera nginx

Ndikukhulupirira kuti phunziroli likhala lothandiza kwa wina kupatula ine.

Zikomo kwambiri kwa aliyense amene amawerenga mpaka kumapeto.

Ngati wina ali ndi vuto lililonse kapena ndapanga zolakwika, ndidzakhala wokondwa kuyankha ndikuyesera kukuthandizani mu ndemanga kapena mu PM.

Source: www.habr.com

Kuwonjezera ndemanga