Isu tinosimudza yedu Webogram muenzaniso ne proxying kuburikidza nginx

Hei Habr!

Munguva pfupi yapfuura ndakazviwana ndiri mumamiriro ezvinhu umo zvaive zvakafanira kushanda mukati mekambani network ine isina kukwana kuwana kuInternet uye, sezvaungafungidzira kubva pazita racho, Telegraph yakavharwa mairi. Ndine chokwadi chokuti mamiriro ezvinhu aya anozivikanwa nevakawanda.

Ndinogona kuita pasina vatumwa ipapo, asi Telegraph ndiyo yandaida kubasa. Zvakanga zvisingaite kuisa mutengi pamushini webasa, uye zvaisakwanisika kushandisa munhu laptop. Imwe mhinduro inoratidzika kuva yekuishandisa official web version, asi sezvaungafungidzira, yanga isipo zvakare. Ini pakarepo ndinoyambuka sarudzo yekutsvaga isina girazi (ndinotarisira zvikonzero zviri pachena).

Neraki, Webogram ndeye yakavhurika sosi purojekiti iyo sosi kodhi inowanikwa mukati github munyori wayo (Nekuda kwakawanda kuvonga kwaari!)
Kuiswa uye kuzvitanga hakuna kuoma, zvisinei, mumamiriro ekushanda mukati metiweki ine yakavharwa kupinda kune Telegraph maseva, iwe uchanyanya kuodzwa mwoyo pane kubudirira, sezvo iyo webhu vhezheni inotumira zvikumbiro kumaseva eTeregiramu kubva kumushini wemushandisi.

Neraki, iyi iri nyore (asi isiri pachena) kugadzirisa. Ndinoda kukuyambirai kuti handisini munyori wemhinduro iyi. Ndakakwanisa kuiwana mukati bazi, iyo yaikurukura nezvedambudziko rakafanana nerangu. Mhinduro inokurudzirwa ne github mushandisi tecknojock, yakandibatsira zvakanyanya, zvisinei, ndine chokwadi chekuti inogona kubatsira mumwe munhu, saka ndafunga kunyora iyi tutori.

Pazasi pekucheka iwe unowana nhanho-ne-nhanho yekumisikidza yako Webogram girazi uye kuseta yekumiririra zvikumbiro zvayo kumaseva eTeregiramu uchishandisa nginx.

Semuenzaniso, ndakasarudza ichangobva kuiswa uye yakagadziridzwa Ubuntu Server 18.04.3.

Yambiro: Ichi chidzidzo hachizosanganisira mirairo yekumisikidza domain mu nginx. Iwe unofanirwa kuita izvi iwe pachako. Iyo tutori inofungidzira kuti iwe wakatogadzira dura ne ssl, uye kuti sevha pachayo yaunoronga kumisikidza iyo inokwanisa kuwana iyo Telegraph maseva (nechero nzira yaunoda)

Ngatifungei kuti ip ye server iyi 10.23.0.3, uye zita renzvimbo ndi mywebogram.localhost

Kubva pazvibvumirano izvi, ini ndichapa mienzaniso yezvigadziriso. Usakanganwa kushandura hunhu kuve hwako.

Saka ngatitangei:

Kuti timhanye Webogram, tinoda nodejs. Nenguva isipi, kana tikaiisa kubva kuUbuntu repositories, tichawana nodejs vhezheni 8.x. Tinoda 12.x:

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

Isu tinosarudza nzvimbo iyo Webogram yedu ichave yakavakirwa.

Semuenzaniso, ngatiiise mumudzi wedhairekitori repamba. Kuti uite izvi, gadzira iyo yepamutemo repository kune yedu server:

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

Nhanho inotevera ndeyekuisa zvese zvinoenderana nezvinodiwa kuti umhanye application:

cd webogram && npm install

Ngatiedzei bvunzo kumhanya. Mhanya murairo:

npm start

Mushure meizvozvo, tinoedza kuivhura mubrowser

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

Kana kusvika panguva ino waita zvese nemazvo, peji remvumo reWebogram richavhurwa.

Zvino isu tinoda kugadzirisa iyo application kuti iite sevhisi. Kuti tiite izvi, ngatigadzirirei faira

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

vhura mune chero edhita uye upe iyo inotevera kutaridzika (isa nzira yako kuenda kuWorkDirectory)

[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

Zvadaro tinomhanya mirairo inotevera:

Kushandisa shanduko

sudo systemctl daemon-reload

Gonesa autorun:

sudo systemctl enable webogram.service

Ngatitangei sevhisi:

sudo systemctl start webogram.service

Mushure mekupedza matanho, Webogram icharamba ichiwanikwa pachiteshi 8000.

Sezvo tichange tichigadzira kupinda kune yedu Webogram kuburikidza ne nginx, isu tichavhara port 8000 yezvikumbiro kubva kunze.

Isu tinoshandisa udf utility kune izvi (kana chero nzira yakakunakira):

sudo ufw deny 8000

Kana iwe uchiri kufunga kushandisa udf, asi yakaremara pane sevha, wedzera mimwe mitemo (kuti zvese zvirege kuparara) uye gonesa udf:

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

Tevere, ngatitange kushandura iyo nginx kumisikidzwa.

Sezvandakanyevera pamusoro, zvinofungidzirwa kuti domain ine ssl yakatogadzirwa pane server yako. Ini chete ndichakwevera kutarisa kwako kune izvo zvichada kuwedzerwa kune iyo domain yekumisikidza faira kuti ishande nemazvo:


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

Zvatinowedzera kune nginx config:

  • Isu tinoshandura nzvimbo yemidzi, iyo inozokumbira proxy kuchiteshi 8000, iyo Webogram inopindura
  • Isu tinovhara nzvimbo yemidzi tichishandisa basic-auth. Iri idanho rekufananidzira rekuvhara application yedu kubva pakuona maziso uye bots. (Uye zvakare kudzivirira matambudziko nekuvhara)
  • Boka renzvimbo dzine proxy_path paTeregiramu server ndiwo chaiwo magumo edu atinozomiririra zvikumbiro zvedu.

Zvakare, ngatigadzirirei faira /etc/nginx/passwd.htpasswd;kuitira kuti nginx ive nechimwe chekutarisa mapassword emushandisi.

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

Isu tinosimudza yedu Webogram muenzaniso ne proxying kuburikidza nginx

Tangazve nginx:

sudo systemctl restart nginx

Iye zvino Webogram inongowanikwa pa mywebogram.localhost/app/index.html mushure mekupinda uye password yawakatsanangura paunenge uchigadzira iyo htpasswd command inopinzwa.

Pane zvishoma zvakasara: tichaita shanduko diki kuprojekiti pachayo.

Vhura iyo faira mupepeti ~/webogram/app/js/lib/mtproto.js

Uye kuunza kutanga kwayo kune inotevera fomu:

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

Mushure meizvi, unofanirwa kuzorodza peji rekushandisa mubrowser.

Vhura browser yako koni uye tarisa kune network zvikumbiro zvekushandisa. Kana zvese zvichishanda uye zvikumbiro zveXHR zvichienda kune server yako, zvese zvinoitwa nemazvo, uye Webogram ikozvino yave proxied via nginx.

Isu tinosimudza yedu Webogram muenzaniso ne proxying kuburikidza nginx

Ndinovimba kuti chidzidzo ichi chichabatsira kune mumwe munhu kunze kwangu.

Ndinotenda zvikuru kune wese akaverenga kusvika kumagumo.

Kana paine chero munhu ane chero matambudziko kana ini ndakaita chero zvisizvo, ini ndichafara kupindura uye kuyedza kukubatsira mune zvakataurwa kana muPM.

Source: www.habr.com

Voeg