рдЖрдореНрд╣реА рдЖрдордЪреЗ рд╡реЗрдмреЛрдЧреНрд░рд╛рдо рдЙрджрд╛рд╣рд░рдг nginx рджреНрд╡рд╛рд░реЗ рдкреНрд░реЙрдХреНрд╕реА рдХрд░реВрди рд╡рд╛рдврд╡рддреЛ

рдЕрд╣реЛ рд╣рд╛рдмреНрд░!

рдЕрд▓реАрдХрдбреЗрдЪ рдореА рд╕реНрд╡рддрдГрд▓рд╛ рдЕрд╢рд╛ рдкрд░рд┐рд╕реНрдерд┐рддреАрдд рд╕рд╛рдкрдбрд▓реЗ рдЬреНрдпрд╛рдордзреНрдпреЗ рдЗрдВрдЯрд░рдиреЗрдЯрд╡рд░ рдЕрдкреВрд░реНрдг рдкреНрд░рд╡реЗрд╢рд╛рд╕рд╣ рдХреЙрд░реНрдкреЛрд░реЗрдЯ рдиреЗрдЯрд╡рд░реНрдХрдордзреНрдпреЗ рдХрд╛рд░реНрдп рдХрд░рдгреЗ рдЖрд╡рд╢реНрдпрдХ рд╣реЛрддреЗ рдЖрдгрд┐ рдЬрд╕реЗ рдЖрдкрдг рд╢реАрд░реНрд╖рдХрд╛рд╡рд░реВрди рдЕрдВрджрд╛рдЬ рд▓рд╛рд╡реВ рд╢рдХрддрд╛, рддреНрдпрд╛рдордзреНрдпреЗ рдЯреЗрд▓рд┐рдЧреНрд░рд╛рдо рдЕрд╡рд░реЛрдзрд┐рдд рдХреЗрд▓реЗ рдЧреЗрд▓реЗ рд╣реЛрддреЗ. рдорд▓рд╛ рдЦрд╛рддреНрд░реА рдЖрд╣реЗ рдХреА рд╣реА рдкрд░рд┐рд╕реНрдерд┐рддреА рдЕрдиреЗрдХрд╛рдВрдирд╛ рдкрд░рд┐рдЪрд┐рдд рдЖрд╣реЗ.

рдореА рдЗрдиреНрд╕реНрдЯрдВрдЯ рдореЗрд╕реЗрдВрдЬрд░рд╢рд┐рд╡рд╛рдп рдХрд░реВ рд╢рдХрддреЛ, рдкрд░рдВрддреБ рдорд▓рд╛ рдХрд╛рдорд╛рд╕рд╛рдареА рдЯреЗрд▓реАрдЧреНрд░рд╛рдо рдЖрд╡рд╢реНрдпрдХ рд╣реЛрддрд╛. рдХреНрд▓рд╛рдпрдВрдЯрд▓рд╛ рд╡рд░реНрдХ рдорд╢реАрдирд╡рд░ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдгреЗ рд╢рдХреНрдп рдирд╡реНрд╣рддреЗ рдХрд┐рдВрд╡рд╛ рд╡реИрдпрдХреНрддрд┐рдХ рд▓реЕрдкрдЯреЙрдк рд╡рд╛рдкрд░рдгреЗ рд╢рдХреНрдп рдирд╡реНрд╣рддреЗ. рддреНрдпрд╛рдЪрд╛ рд╡рд╛рдкрд░ рдХрд░рдгреЗ рд╣рд╛ рджреБрд╕рд░рд╛ рдЙрдкрд╛рдп рджрд┐рд╕рддреЛ ╨╛╤Д╨╕╤Ж╨╕╨░╨╗╤М╨╜╤Г╤О ╨▓╨╡╨▒-╨▓╨╡╤А╤Б╨╕╤О, рдкрд░рдВрддреБ рддреБрдореНрд╣реА рдЕрдВрджрд╛рдЬ рд▓рд╛рд╡реВ рд╢рдХрддрд╛, рддреЗ рджреЗрдЦреАрд▓ рдЕрдиреБрдкрд▓рдмреНрдз рд╣реЛрддреЗ. рдореА рддрд╛рдмрдбрддреЛрдм рдЕрдирдзрд┐рдХреГрдд рдорд┐рд░рд░ рд╢реЛрдзрдгреНрдпрд╛рдЪрд╛ рдкрд░реНрдпрд╛рдп рдУрд▓рд╛рдВрдбрддреЛ (рдорд▓рд╛ рд╕реНрдкрд╖реНрдЯ рдХрд╛рд░рдгрд╛рдВрд╕рд╛рдареА рдЖрд╢рд╛ рдЖрд╣реЗ).

рд╕реБрджреИрд╡рд╛рдиреЗ, рд╡реЗрдмреЛрдЧреНрд░рд╛рдо рд╣рд╛ рдПрдХ рдореБрдХреНрдд рд╕реНрддреНрд░реЛрдд рдкреНрд░рдХрд▓реНрдк рдЖрд╣реЗ рдЬреНрдпрд╛рдЪрд╛ рд╕реНрддреНрд░реЛрдд рдХреЛрдб рдЙрдкрд▓рдмреНрдз рдЖрд╣реЗ github рддреНрдпрд╛рдЪреЗ рд▓реЗрдЦрдХ (рддреНрдпрд╛рд╕рд╛рдареА рддреНрдпрд╛рдВрдЪреЗ рдЕрдиреЗрдХ рдЖрднрд╛рд░!)
рдЗрдиреНрд╕реНрдЯреЙрд▓реЗрд╢рди рдЖрдгрд┐ рд▓реЙрдиреНрдЪ рдХрд░рдгреЗ рд╕реНрд╡рддрдГрдЪ рдЕрд╡рдШрдб рдирд╛рд╣реА, рддрдерд╛рдкрд┐, рдЯреЗрд▓реАрдЧреНрд░рд╛рдо рд╕рд░реНрд╡реНрд╣рд░рд╡рд░ рдЕрд╡рд░реЛрдзрд┐рдд рдкреНрд░рд╡реЗрд╢ рдЕрд╕рд▓реЗрд▓реНрдпрд╛ рдиреЗрдЯрд╡рд░реНрдХрдордзреНрдпреЗ рдСрдкрд░реЗрд╢рдирдЪреНрдпрд╛ рдкрд░рд┐рд╕реНрдерд┐рддреАрдд, рд╡реЗрдм рдЖрд╡реГрддреНрддреА рд╡рд╛рдкрд░рдХрд░реНрддреНрдпрд╛рдЪреНрдпрд╛ рдорд╢реАрдирд╡рд░реВрди рдЯреЗрд▓реАрдЧреНрд░рд╛рдо рд╕рд░реНрд╡реНрд╣рд░рд▓рд╛ рд╡рд┐рдирдВрддреНрдпрд╛ рдкрд╛рдард╡рд▓реНрдпрд╛рдореБрд│реЗ рдЖрдкрдг рдпрд╢рд╕реНрд╡реА рд╣реЛрдгреНрдпрд╛рдкреЗрдХреНрд╖рд╛ рдирд┐рд░рд╛рд╢ рд╣реЛрдгреНрдпрд╛рдЪреА рд╢рдХреНрдпрддрд╛ рдЬрд╛рд╕реНрдд рдЕрд╕рддреЗ.

рд╕реБрджреИрд╡рд╛рдиреЗ, рд╣реЗ рдЕрдЧрджреА рд╕реЛрдкреЗ (рдкрд░рдВрддреБ рдлрд╛рд░ рд╕реНрдкрд╖реНрдЯ рдирд╛рд╣реА) рдирд┐рд░рд╛рдХрд░рдг рдЖрд╣реЗ. рдореА рддреБрдореНрд╣рд╛рд▓рд╛ рдЪреЗрддрд╛рд╡рдгреА рджреЗрдК рдЗрдЪреНрдЫрд┐рддреЛ рдХреА рдореА рдпрд╛ рд╕рдорд╛рдзрд╛рдирд╛рдЪрд╛ рд▓реЗрдЦрдХ рдирд╛рд╣реА. рдореА рддреЗ рд╢реЛрдзрдгреНрдпрд╛рдд рд╡реНрдпрд╡рд╕реНрдерд╛рдкрд┐рдд рдХреЗрд▓реЗ рд╢рд╛рдЦрд╛, рдЬреНрдпрд╛рдиреЗ рдорд╛рдЭреНрдпрд╛рд╕рд╛рд░рдЦреНрдпрд╛рдЪ рд╕рдорд╕реНрдпреЗрд╡рд░ рдЪрд░реНрдЪрд╛ рдХреЗрд▓реА. рдЧрд┐рдердм рд╡рд╛рдкрд░рдХрд░реНрддреНрдпрд╛рдиреЗ рд╕реБрдЪрд╡рд▓реЗрд▓реЗ рдЙрдкрд╛рдп рдЯреЗрдХрдиреЛрдЬреЙрдХ, рдпрд╛рдиреЗ рдорд▓рд╛ рдЦреВрдк рдорджрдд рдХреЗрд▓реА, рддрдерд╛рдкрд┐, рдорд▓рд╛ рдЦрд╛рддреНрд░реА рдЖрд╣реЗ рдХреА рддреЗ рдЗрддрд░ рдХреЛрдгрд╛рд▓рд╛ рддрд░реА рдорджрдд рдХрд░реВ рд╢рдХрддреЗ, рдореНрд╣рдгреВрди рдореА рд╣реЗ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рд▓рд┐рд╣рд┐рдгреНрдпрд╛рдЪрд╛ рдирд┐рд░реНрдгрдп рдШреЗрддрд▓рд╛.

рдХрдЯрдЪреНрдпрд╛ рдЦрд╛рд▓реА рддреБрдореНрд╣рд╛рд▓рд╛ рддреБрдордЪреНрдпрд╛ рд╡реЗрдмреЛрдЧреНрд░рд╛рдо рдорд┐рд░рд░рдЪрд╛ рд╕реНрдЯреЗрдк рдмрд╛рдп рд╕реНрдЯреЗрдк рд╕реЗрдЯрдЕрдк рдЖрдгрд┐ nginx рд╡рд╛рдкрд░реВрди рдЯреЗрд▓рд┐рдЧреНрд░рд╛рдо рд╕рд░реНрд╡реНрд╣рд░рд▓рд╛ рддреНрдпрд╛рдЪреНрдпрд╛ рд╡рд┐рдирдВрддреНрдпрд╛ рдкреНрд░реЙрдХреНрд╕реА рдХрд░рдгреНрдпрд╛рдЪрд╛ рд╕реЗрдЯрдЕрдк рдорд┐рд│реЗрд▓.

рдЙрджрд╛рд╣рд░рдг рдореНрд╣рдгреВрди, рдореА рдирд╡реАрди рд╕реНрдерд╛рдкрд┐рдд рдХреЗрд▓реЗрд▓рд╛ рдЖрдгрд┐ рдЕрдкрдбреЗрдЯ рдХреЗрд▓реЗрд▓рд╛ рдЙрдмрдВрдЯреВ рд╕рд░реНрд╡реНрд╣рд░ 18.04.3 рдирд┐рд╡рдбрд▓рд╛.

рдЪреЗрддрд╛рд╡рдгреА: рдпрд╛ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓рдордзреНрдпреЗ nginx рдордзреНрдпреЗ рдбреЛрдореЗрди рд╕реЗрдЯ рдЕрдк рдХрд░рдгреНрдпрд╛рдЪреНрдпрд╛ рд╕реВрдЪрдирд╛ рд╕рдорд╛рд╡рд┐рд╖реНрдЯ рдирд╛рд╣реАрдд. рдЖрдкрдг рд╣реЗ рд╕реНрд╡рддрдГ рдХрд░рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ. рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдЕрд╕реЗ рдЧреГрд╣реАрдд рдзрд░рддреЗ рдХреА рддреБрдореНрд╣реА ssl рд╕рд╣ рдбреЛрдореЗрди рдЖрдзреАрдЪ рдХреЙрдиреНрдлрд┐рдЧрд░ рдХреЗрд▓реЗ рдЖрд╣реЗ рдЖрдгрд┐ рдЬреНрдпрд╛ рд╕рд░реНрд╡реНрд╣рд░рд╡рд░ рддреБрдореНрд╣реА рддреЗ рдХреЙрдиреНрдлрд┐рдЧрд░ рдХрд░рдгреНрдпрд╛рдЪреА рдпреЛрдЬрдирд╛ рдЖрдЦрдд рдЖрд╣рд╛рдд рддреНрдпрд╛ рд╕рд░реНрд╡реНрд╣рд░рд▓рд╛ рдЯреЗрд▓реАрдЧреНрд░рд╛рдо рд╕рд░реНрд╡реНрд╣рд░рдордзреНрдпреЗ рдкреНрд░рд╡реЗрд╢ рдЖрд╣реЗ (рддреБрдореНрд╣рд╛рд▓рд╛ рдЖрд╡рдбрд▓реЗрд▓реНрдпрд╛ рдХреЛрдгрддреНрдпрд╛рд╣реА рдкреНрд░рдХрд╛рд░реЗ)

╨Я╤А╨╡╨┤╨┐╨╛╨╗╨╛╨╢╨╕╨╝, ╤З╤В╨╛ ip ╨┤╨░╨╜╨╜╨╛╨│╨╛ ╤Б╨╡╤А╨▓╨╡╤А╨░ 10.23.0.3, ╨░ ╨┤╨╛╨╝╨╡╨╜╨╜╨╛╨╡ ╨╕╨╝╤П mywebogram.localhost

рдпрд╛ рдЕрдзрд┐рд╡реЗрд╢рдирд╛рдВрд╡рд░ рдЖрдзрд╛рд░рд┐рдд, рдореА рдХреЙрдиреНрдлрд┐рдЧрд░реЗрд╢рдирдЪреА рдЙрджрд╛рд╣рд░рдгреЗ рджреЗрдИрди. рд╕реНрд╡рддрдГрдЪреА рдореВрд▓реНрдпреЗ рдмрджрд▓рдгреНрдпрд╛рд╕ рд╡рд┐рд╕рд░реВ рдирдХрд╛.

рдЪрд▓рд╛ рдкреНрд░рд╛рд░рдВрдн рдХрд░реВрдпрд╛:

рд╡реЗрдмрдЧреНрд░рд╛рдо рдЪрд╛рд▓рд╡рдгреНрдпрд╛рд╕рд╛рдареА, рдЖрдореНрд╣рд╛рд▓рд╛ рдиреЛрдбрдЬрдЪреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдЖрд╣реЗ. рдбреАрдлреЙрд▓реНрдЯрдиреБрд╕рд╛рд░, рдЬрд░ рдЖрдореНрд╣реА рддреЗ рдЙрдмрдВрдЯреВ рд░рд┐рдкреЙрдЭрд┐рдЯрд░реАрдЬрдордзреВрди рд╕реНрдерд╛рдкрд┐рдд рдХреЗрд▓реЗ рддрд░ рдЖрдореНрд╣рд╛рд▓рд╛ 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

рдпрд╛ рдХреНрд╖рдгрд╛рдкрд░реНрдпрдВрдд рддреБрдореНрд╣реА рд╕рд░реНрд╡рдХрд╛рд╣реА рдпреЛрдЧреНрдпрд░рд┐рддреНрдпрд╛ рдХреЗрд▓реЗ рдЕрд╕рд▓реНрдпрд╛рд╕, рд╡реЗрдмрдЧреНрд░рд╛рдо рдЕрдзрд┐рдХреГрддрддрд╛ рдкреГрд╖реНрда рдЙрдШрдбреЗрд▓.

рдЖрддрд╛ рдЖрдореНрд╣рд╛рд▓рд╛ рд╕реЗрд╡рд╛ рдореНрд╣рдгреВрди рдЪрд╛рд▓рд╡рд┐рдгреНрдпрд╛рд╕рд╛рдареА рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдХреЙрдиреНрдлрд┐рдЧрд░ рдХрд░рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ. рд╣реЗ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА, рдПрдХ рдлрд╛рдИрд▓ рддрдпрд╛рд░ рдХрд░реВрдпрд╛

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

рддреЗ рдХреЛрдгрддреНрдпрд╛рд╣реА рдПрдбрд┐рдЯрд░рдордзреНрдпреЗ рдЙрдШрдбрд╛ рдЖрдгрд┐ рддреНрдпрд╛рд▓рд╛ рдЦрд╛рд▓реАрд▓ рд╕реНрд╡рд░реВрдк рджреНрдпрд╛ (рд╡рд░реНрдХрдбрд┐рд░реЗрдХреНрдЯрд░реАрдордзреНрдпреЗ рддреБрдордЪрд╛ рдорд╛рд░реНрдЧ рдкреНрд░рд╡рд┐рд╖реНрдЯ рдХрд░рд╛)

[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

рдкрд╛рдпрд▒реНрдпрд╛ рдкреВрд░реНрдг рдХреЗрд▓реНрдпрд╛рдирдВрддрд░, рд╡реЗрдмрдЧреНрд░рд╛рдо рдкреЛрд░реНрдЯ 8000 рд╡рд░ рдЙрдкрд▓рдмреНрдз рд░рд╛рд╣реАрд▓.

рдЖрдореНрд╣реА рдЖрдордЪреНрдпрд╛ рд╡реЗрдмреЛрдЧреНрд░рд╛рдорд╡рд░ nginx рджреНрд╡рд╛рд░реЗ рдкреНрд░рд╡реЗрд╢ рд╕реЗрдЯ рдХрд░рдгрд╛рд░ рдЕрд╕рд▓реНрдпрд╛рдиреЗ, рдЖрдореНрд╣реА рдмрд╛рд╣реЗрд░реВрди рдЖрд▓реЗрд▓реНрдпрд╛ рд╡рд┐рдирдВрддреНрдпрд╛рдВрд╕рд╛рдареА рдкреЛрд░реНрдЯ 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 рдХреЙрдиреНрдлрд┐рдЧрд░реЗрд╢рдирдордзреНрдпреЗ рдХрд╛рдп рдЬреЛрдбрддреЛ:

  • ╨Ш╨╖╨╝╨╡╨╜╤П╨╡╨╝ ╨║╨╛╤А╨╜╨╡╨▓╨╛╨╣ location, ╨║╨╛╤В╨╛╤А╤Л╨╣ ╨▒╤Г╨┤╨╡╤В ╨┐╤А╨╛╨║╤Б╨╕╤А╨╛╨▓╨░╤В╤М ╨╖╨░╨┐╤А╨╛╤Б╤Л ╨╜╨░ ╨┐╨╛╤А╤В 8000, ╨┐╨╛ ╨║╨╛╤В╨╛╤А╨╛╨╝╤Г ╨╛╤В╨▓╨╡╤З╨░╨╡╤В Webogram
  • рдмреЗрд╕рд┐рдХ-рдСрде рд╡рд╛рдкрд░реВрди рдЖрдореНрд╣реА рд░реВрдЯ рд╕реНрдерд╛рди рдмрдВрдж рдХрд░рддреЛ. рдбреЛрд│реЗ рдЖрдгрд┐ рдмреЙрдЯреНрд╕рдкрд╛рд╕реВрди рдЖрдордЪрд╛ рдЕрд░реНрдЬ рдмрдВрдж рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рд╣реЗ рдкреВрд░реНрдгрдкрдгреЗ рдкреНрд░рддреАрдХрд╛рддреНрдордХ рдкрд╛рдКрд▓ рдЖрд╣реЗ. (рдЖрдгрд┐ рдЕрд╡рд░реЛрдзрд┐рдд рдХрд░рдгреНрдпрд╛рдд рд╕рдорд╕реНрдпрд╛ рдЯрд╛рд│рдгреНрдпрд╛рд╕рд╛рдареА рджреЗрдЦреАрд▓)
  • рдЯреЗрд▓реАрдЧреНрд░рд╛рдо рд╕рд░реНрд╡реНрд╣рд░рд╡рд░ proxy_path рдЕрд╕рд▓реЗрд▓реА рдЕрдиреЗрдХ рдард┐рдХрд╛рдгреЗ рд╣реЗ рдЖрдордЪреЗ рд╢реЗрд╡рдЯрдЪреЗ рдЯреЛрдХ рдЖрд╣реЗрдд рдЬреНрдпрд╛рджреНрд╡рд╛рд░реЗ рдЖрдореНрд╣реА рдЖрдордЪреНрдпрд╛ рд╡рд┐рдирдВрддреНрдпрд╛ рдкреНрд░реЙрдХреНрд╕реА рдХрд░реВ.

рддрд╕реЗрдЪ, рдПрдХ рдлрд╛рдИрд▓ рдмрдирд╡реВ /etc/nginx/passwd.htpasswd;рдЬреЗрдгреЗрдХрд░реВрди nginx рдХрдбреЗ рд╡рд╛рдкрд░рдХрд░реНрддрд╛ рд╕рдВрдХреЗрддрд╢рдмреНрдж рддрдкрд╛рд╕рдгреНрдпрд╛рд╕рд╛рдареА рдХрд╛рд╣реАрддрд░реА рдЕрд╕реЗрд▓.

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

рдЖрдореНрд╣реА рдЖрдордЪреЗ рд╡реЗрдмреЛрдЧреНрд░рд╛рдо рдЙрджрд╛рд╣рд░рдг nginx рджреНрд╡рд╛рд░реЗ рдкреНрд░реЙрдХреНрд╕реА рдХрд░реВрди рд╡рд╛рдврд╡рддреЛ

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 рд╡рд┐рдирдВрддреНрдпрд╛ рддреБрдордЪреНрдпрд╛ рд╕рд░реНрд╡реНрд╣рд░рд╡рд░ рдЧреЗрд▓реНрдпрд╛рд╕, рд╕рд░реНрд╡рдХрд╛рд╣реА рдпреЛрдЧреНрдпрд░рд┐рддреНрдпрд╛ рдХреЗрд▓реЗ рдЬрд╛рддреЗ рдЖрдгрд┐ рд╡реЗрдмрдЧреНрд░рд╛рдо рдЖрддрд╛ nginx рджреНрд╡рд╛рд░реЗ рдкреНрд░реЙрдХреНрд╕реА рдХреЗрд▓реЗ рдЬрд╛рддреЗ.

рдЖрдореНрд╣реА рдЖрдордЪреЗ рд╡реЗрдмреЛрдЧреНрд░рд╛рдо рдЙрджрд╛рд╣рд░рдг nginx рджреНрд╡рд╛рд░реЗ рдкреНрд░реЙрдХреНрд╕реА рдХрд░реВрди рд╡рд╛рдврд╡рддреЛ

рдорд▓рд╛ рдЖрд╢рд╛ рдЖрд╣реЗ рдХреА рд╣реЗ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдорд╛рдЭреНрдпрд╛рд╢рд┐рд╡рд╛рдп рдЗрддрд░ рдХреЛрдгрд╛рд╕рд╛рдареА рдЙрдкрдпреБрдХреНрдд рдард░реЗрд▓.

рд╢реЗрд╡рдЯрдкрд░реНрдпрдВрдд рд╡рд╛рдЪрд▓реЗрд▓реНрдпрд╛ рдкреНрд░рддреНрдпреЗрдХрд╛рдЪреЗ рдордирд╛рдкрд╛рд╕реВрди рдЖрднрд╛рд░.

рдХреЛрдгрд╛рд▓рд╛ рдХрд╛рд╣реА рдЕрдбрдЪрдг рдЕрд╕рд▓реНрдпрд╛рд╕ рдХрд┐рдВрд╡рд╛ рдореА рдХрд╛рд╣реА рдЪреБрдХреАрдЪреЗ рдХреЗрд▓реЗ рдЕрд╕рд▓реНрдпрд╛рд╕, рдорд▓рд╛ рдЙрддреНрддрд░ рджреЗрдгреНрдпрд╛рдд рдЖрдирдВрдж рд╣реЛрдИрд▓ рдЖрдгрд┐ рдЯрд┐рдкреНрдкрдгреНрдпрд╛рдВрдордзреНрдпреЗ рдХрд┐рдВрд╡рд╛ PM рдордзреНрдпреЗ рддреБрдореНрд╣рд╛рд▓рд╛ рдорджрдд рдХрд░рдгреНрдпрд╛рдЪрд╛ рдкреНрд░рдпрддреНрди рдХрд░реЗрди.

рд╕реНрддреНрд░реЛрдд: www.habr.com

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдЬреЛрдбрд╛