рд╣рд╛рдореА рд╣рд╛рдореНрд░реЛ рд╡реЗрдмреЛрдЧреНрд░рд╛рдо рдЙрджрд╛рд╣рд░рдг nginx рдорд╛рд░реНрдлрдд рдкреНрд░реЛрдХреНрд╕реАрдХреЛ рд╕рд╛рде рдмрдврд╛рдЙрдБрдЫреМрдВ

рд╣реЗ рд╣рд╛рдмрд░!

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

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

рд╕реМрднрд╛рдЧреНрдп рджреЗрдЦрд┐, рд╡реЗрдмрдЧреНрд░рд╛рдо рдПрдХ рдЦреБрд▓рд╛ рд╕реНрд░реЛрдд рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╣реЛ рдЬрд╕рдХреЛ рд╕реНрд░реЛрдд рдХреЛрдб рдЙрдкрд▓рдмреНрдз рдЫ github рдпрд╕рдХреЛ рд▓реЗрдЦрдХ (рдЬрд╕рдХреЛ рд▓рд╛рдЧрд┐ рдЙрд╣рд╛рдБрд▓рд╛рдИ рдзреЗрд░реИ рдзрдиреНрдпрд╡рд╛рдж!)
рд╕реНрдерд╛рдкрдирд╛ рд░ рд╕реБрд░реБрд╡рд╛рдд рдЖрдлреИрдВрдорд╛ рдЧрд╛рд╣реНрд░реЛ рдЫреИрди, рдпрджреНрдпрдкрд┐, рдЯреЗрд▓рд┐рдЧреНрд░рд╛рдо рд╕рд░реНрднрд░рд╣рд░реВрдорд╛ рдЕрд╡рд░реБрджреНрдз рдкрд╣реБрдБрдЪрдХреЛ рд╕рд╛рде рдиреЗрдЯрд╡рд░реНрдХ рднрд┐рддреНрд░ рд╕рдЮреНрдЪрд╛рд▓рдирдХреЛ рдЕрд╡рд╕реНрдерд╛рд╣рд░реВрдорд╛, рддрдкрд╛рдЗрдБ рд╕рдлрд▓ рднрдиреНрджрд╛ рдирд┐рд░рд╛рд╢ рд╣реБрдиреБрд╣реБрдиреЗрдЫ, рдХрд┐рдирдХрд┐ рд╡реЗрдм рд╕рдВрд╕реНрдХрд░рдгрд▓реЗ рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛рдХреЛ рдореЗрд╕рд┐рдирдмрд╛рдЯ рдЯреЗрд▓рд┐рдЧреНрд░рд╛рдо рд╕рд░реНрднрд░рд╣рд░реВрдорд╛ рдЕрдиреБрд░реЛрдзрд╣рд░реВ рдкрдард╛рдЙрдБрджрдЫред

рд╕реМрднрд╛рдЧреНрдп рджреЗрдЦрд┐, рдпреЛ рдПрдХрджрдо рд╕рд░рд▓ рдЫ (рддрд░ рдзреЗрд░реИ рд╕реНрдкрд╖реНрдЯ рдЫреИрди) рдлрд┐рдХреНрд╕ред рдо рддрдкрд╛рдИрдВрд▓рд╛рдИ рдЪреЗрддрд╛рд╡рдиреА рджрд┐рди рдЪрд╛рд╣рдиреНрдЫреБ рдХрд┐ рдо рдпреЛ рд╕рдорд╛рдзрд╛рдирдХреЛ рд▓реЗрдЦрдХ рд╣реЛрдЗрдиред рдореИрд▓реЗ рднрд┐рддреНрд░ рдлреЗрд▓рд╛ рдкрд╛рд░реНрди рд╕рдлрд▓ рднрдПрдБ рд╕рд╛рдЦрд╛, рдЬрд╕рд▓реЗ рдореЗрд░реЛ рдЬрд╕реНрддреИ рд╕рдорд╕реНрдпрд╛рдХреЛ рдмрд╛рд░реЗрдорд╛ рдЫрд▓рдлрд▓ рдЧрд░реНрдпреЛред Github рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛ рджреНрд╡рд╛рд░рд╛ рд╕реБрдЭрд╛рд╡ рдЧрд░рд┐рдПрдХреЛ рд╕рдорд╛рдзрд╛рди рдЯреЗрдХрдиреЛрдЬрдХ, рдпрд╕рд▓реЗ рдорд▓рд╛рдИ рдзреЗрд░реИ рдорджреНрджрдд рдЧрд░реНрдпреЛ, рддрдерд╛рдкрд┐, рдо рдкрдХреНрдХрд╛ рдЫреБ рдХрд┐ рдпрд╕рд▓реЗ рдЕрд░реВ рдХрд╕реИрд▓рд╛рдИ рдорджреНрджрдд рдЧрд░реНрди рд╕рдХреНрдЫ, рддреНрдпрд╕реИрд▓реЗ рдореИрд▓реЗ рдпреЛ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рд▓реЗрдЦреНрдиреЗ рдирд┐рд░реНрдгрдп рдЧрд░реЗрдВред

рдХрдЯ рддрд▓ рддрдкрд╛рдИрдВрд▓реЗ рдЖрдлреНрдиреЛ рд╡реЗрдмрдЧреНрд░рд╛рдо рдорд┐рд░рд░рдХреЛ рдЪрд░рдг-рджрд░-рдЪрд░рдг рд╕реЗрдЯрдЕрдк рд░ nginx рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рдЯреЗрд▓рд┐рдЧреНрд░рд╛рдо рд╕рд░реНрднрд░рд╣рд░реВрдорд╛ рдкреНрд░реЛрдХреНрд╕реА рдЧрд░реНрдиреЗ рд╕реЗрдЯрдЕрдк рдкрд╛рдЙрдиреБрд╣реБрдиреЗрдЫред

рдЙрджрд╛рд╣рд░рдгрдХреЛ рд░реВрдкрдорд╛, рдореИрд▓реЗ рднрд░реНрдЦрд░реИ рд╕реНрдерд╛рдкрд┐рдд рд░ рдЕрдкрдбреЗрдЯ рдЧрд░рд┐рдПрдХреЛ Ubuntu рд╕рд░реНрднрд░ 18.04.3 рд░реЛрдЬреЗрдХреЛ рдЫреБред

рдЪреЗрддрд╛рд╡рдиреА: рдпреЛ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓рд▓реЗ nginx рдорд╛ рдбреЛрдореЗрди рд╕реЗрдЯрдЕрдк рдЧрд░реНрдиреЗ рдирд┐рд░реНрджреЗрд╢рдирд╣рд░реВ рд╕рдорд╛рд╡реЗрд╢ рдЧрд░реНрджреИрдиред рддрдкрд╛рдИ рдЖрдлреИрд▓реЗ рдпреЛ рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫред рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓рд▓реЗ рдорд╛рдиреНрджрдЫ рдХрд┐ рддрдкрд╛рдИрдВрд▓реЗ рдкрд╣рд┐рд▓реЗ рдиреИ ssl рд╕рдБрдЧ рдбреЛрдореЗрди рдХрдиреНрдлрд┐рдЧрд░ рдЧрд░рд┐рд╕рдХреНрдиреБрднрдПрдХреЛ рдЫ, рд░ рддрдкрд╛рдИрдВрд▓реЗ рдпрд╕рд▓рд╛рдИ рдХрдиреНрдлрд┐рдЧрд░ рдЧрд░реНрдиреЗ рдпреЛрдЬрдирд╛ рдмрдирд╛рдЙрдиреБ рднрдПрдХреЛ рд╕рд░реНрднрд░рдорд╛ рдЯреЗрд▓рд┐рдЧреНрд░рд╛рдо рд╕рд░реНрднрд░рд╣рд░реВрдорд╛ рдкрд╣реБрдБрдЪ рдЫ (рддрдкрд╛рдИрдВрд▓рд╛рдИ рдордирдкрд░реНрдиреЗ рдХреБрдиреИ рдкрдирд┐ рддрд░рд┐рдХрд╛рдорд╛)ред

рдорд╛рдиреМрдВ рдХрд┐ рдпреЛ рд╕рд░реНрднрд░рдХреЛ ip 10.23.0.3 рд╣реЛ, рд░ рдбреЛрдореЗрди рдирд╛рдо mywebogram.localhost рд╣реЛред

рдпреА рдЕрдзрд┐рд╡реЗрд╢рдирд╣рд░реВрдорд╛ рдЖрдзрд╛рд░рд┐рдд, рдо рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рдирд╣рд░реВрдХреЛ рдЙрджрд╛рд╣рд░рдг рджрд┐рдиреЗрдЫреБред рдЖрдлреНрдиреЛ рдЖрдлреНрдиреИ рдорд╛рдирд╣рд░реВ рдкрд░рд┐рд╡рд░реНрддрди рдЧрд░реНрди рдирдмрд┐рд░реНрд╕рдиреБрд╣реЛрд╕реНред

рддреНрдпрд╕реЛ рднрдП рд╕реБрд░реВ рдЧрд░реМрдВ:

рд╡реЗрдмрдЧреНрд░рд╛рдо рдЪрд▓рд╛рдЙрди, рд╣рд╛рдореАрд▓рд╛рдИ рдиреЛрдбрдЬ рдЪрд╛рд╣рд┐рдиреНрдЫред рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд░реВрдкрдорд╛, рдпрджрд┐ рд╣рд╛рдореАрд▓реЗ рдпрд╕рд▓рд╛рдИ 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

рдпрджрд┐ рдпрд╕ рдмрд┐рдиреНрджреБ рд╕рдореНрдо рддрдкрд╛рдИрдВрд▓реЗ рд╕рдмреИ рдХреБрд░рд╛ рд╕рд╣реА рд░реВрдкрдорд╛ рдЧрд░реНрдиреБрднрдпреЛ рднрдиреЗ, рд╡реЗрдмрдЧреНрд░рд╛рдо рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдкреГрд╖реНрда рдЦреБрд▓реНрдиреЗрдЫред

рдЕрдм рд╣рд╛рдореАрд▓реЗ рд╕реЗрд╡рд╛рдХреЛ рд░реВрдкрдорд╛ рдЪрд▓рд╛рдЙрдирдХреЛ рд▓рд╛рдЧрд┐ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдХрдиреНрдлрд┐рдЧрд░ рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫред рдпреЛ рдЧрд░реНрдирдХреЛ рд▓рд╛рдЧрд┐, рдПрдЙрдЯрд╛ рдлрд╛рдЗрд▓ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реМрдВ

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

autorun рд╕рдХреНрд╖рдо рдЧрд░реНрдиреБрд╣реЛрд╕реН:

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 рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рдирдорд╛ рдХреЗ рдердкреНрдЫреМрдВ:

  • рд╣рд╛рдореА рд░реВрдЯ рд╕реНрдерд╛рди рдкрд░рд┐рд╡рд░реНрддрди рдЧрд░реНрдЫреМрдВ, рдЬрд╕рд▓реЗ рдкреЛрд░реНрдЯ 8000 рдорд╛ рдкреНрд░реЛрдХреНрд╕реА рдЕрдиреБрд░реЛрдз рдЧрд░реНрдиреЗрдЫ, рдЬрд╕рдорд╛ рд╡реЗрдмрдЧреНрд░рд╛рдорд▓реЗ рдЬрд╡рд╛рдл рджрд┐рдиреНрдЫред
  • рд╣рд╛рдореА рдЖрдзрд╛рд░рднреВрдд-рд▓реЗрдЦрди рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рдореВрд▓ рд╕реНрдерд╛рди рдмрдиреНрдж рдЧрд░реНрдЫреМрдВред рдпреЛ рдПрдХ рд╡рд┐рд╢реБрджреНрдз рд╕рд╛рдВрдХреЗрддрд┐рдХ рдХрджрдо рд╣реЛ рдЬреБрди рд╣рд╛рдореНрд░реЛ рдПрдкреНрд▓рд┐рдХреЗрд╕рдирд▓рд╛рдИ рдЖрдБрдЦрд╛ рд░ рдмрдЯрд╣рд░реВрдмрд╛рдЯ рдмрдиреНрдж рдЧрд░реНрдирдХреЛ рд▓рд╛рдЧрд┐ рд╣реЛред (рд░ рдЕрд╡рд░реБрджреНрдзрдХреЛ рд╕рд╛рде рд╕рдорд╕реНрдпрд╛рд╣рд░реВрдмрд╛рдЯ рдмрдЪреНрди рдкрдирд┐)
  • рдЯреЗрд▓рд┐рдЧреНрд░рд╛рдо рд╕рд░реНрднрд░рдорд╛ 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

рдЕрдм Webgram рдорд╛ рдорд╛рддреНрд░ рдЙрдкрд▓рдмреНрдз рд╣реБрдиреЗрдЫ 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

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдердкреНрди