рд╣рдо nginx рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкреНрд░реЙрдХреНрд╕реА рдХрд░рдХреЗ рдЕрдкрдирд╛ рд╡реЗрдмреЛрдЧреНрд░рд╛рдо рдЗрдВрд╕реНрдЯреЗрдВрд╕ рдмрдврд╝рд╛рддреЗ рд╣реИрдВ

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

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

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

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

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

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

рдЙрджрд╛рд╣рд░рдг рдХреЗ рддреМрд░ рдкрд░, рдореИрдВрдиреЗ рдПрдХ рддрд╛рдЬрд╝рд╛ рд╕реНрдерд╛рдкрд┐рдд рдФрд░ рдЕрджреНрдпрддрди рдЙрдмрдВрдЯреВ рд╕рд░реНрд╡рд░ 18.04.3 рдЪреБрдирд╛ред

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

рдЖрдЗрдП рдорд╛рди рд▓реЗрдВ рдХрд┐ рдЗрд╕ рд╕рд░реНрд╡рд░ рдХрд╛ рдЖрдИрдкреА 10.23.0.3 рд╣реИ, рдФрд░ рдбреЛрдореЗрди рдирд╛рдо mywebogram.localhost рд╣реИ

рдЗрди рд╕рдореНрдореЗрд▓рдиреЛрдВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рдореИрдВ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЗ рдЙрджрд╛рд╣рд░рдг рджреВрдВрдЧрд╛ред рдорд╛рдиреЛрдВ рдХреЛ рдЕрдкрдиреЗ рдЕрдиреБрд╕рд╛рд░ рдмрджрд▓рдирд╛ рди рднреВрд▓реЗрдВ.

рддреЛ рдЪрд▓рд┐рдП рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ:

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

рд╣рдо рдЗрд╕рдХреЗ рд▓рд┐рдП рдпреВрдбреАрдПрдл рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ (рдпрд╛ рдЖрдкрдХреЗ рд▓рд┐рдП рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдХреЛрдИ рд╡рд┐рдзрд┐):

sudo ufw deny 8000

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

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

рдЗрд╕рдХреЗ рдмрд╛рдж, рдЖрдЗрдП nginx рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЛ рдмрджрд▓рдирд╛ рд╢реБрд░реВ рдХрд░реЗрдВред

рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рдКрдкрд░ рдЪреЗрддрд╛рд╡рдиреА рджреА рд╣реИ, рдпрд╣ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдПрд╕рдПрд╕рдПрд▓ рд╡рд╛рд▓рд╛ рдПрдХ рдбреЛрдореЗрди рдЖрдкрдХреЗ рд╕рд░реНрд╡рд░ рдкрд░ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдореИрдВ рдЖрдкрдХрд╛ рдзреНрдпрд╛рди рдХреЗрд╡рд▓ рдЗрд╕ рдУрд░ рдЖрдХрд░реНрд╖рд┐рдд рдХрд░реВрдВрдЧрд╛ рдХрд┐ рдбреЛрдореЗрди рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓ рдХреЛ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕рдореЗрдВ рдХреНрдпрд╛ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА:


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

рд╕рд╛рде рд╣реА, рдЪрд▓рд┐рдП рдПрдХ рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рддреЗ рд╣реИрдВ /etc/nginx/passwd.htpasswd;рддрд╛рдХрд┐ nginx рдХреЗ рдкрд╛рд╕ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкрд╛рд╕рд╡рд░реНрдб рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рд╣реЛред

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

рд╣рдо nginx рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкреНрд░реЙрдХреНрд╕реА рдХрд░рдХреЗ рдЕрдкрдирд╛ рд╡реЗрдмреЛрдЧреНрд░рд╛рдо рдЗрдВрд╕реНрдЯреЗрдВрд╕ рдмрдврд╝рд╛рддреЗ рд╣реИрдВ

Nginx рдкреБрдирдГ рдЖрд░рдВрдн рдХрд░реЗрдВ:

sudo systemctl restart nginx

рдЕрдм рд╡реЗрдмреЛрдЧреНрд░рд╛рдо рдХреЗрд╡рд▓ рдпрд╣рд╛рдВ рдЙрдкрд▓рдмреНрдз рд╣реЛрдЧрд╛ 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 рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкреНрд░реЙрдХреНрд╕реА рдХрд░рдХреЗ рдЕрдкрдирд╛ рд╡реЗрдмреЛрдЧреНрд░рд╛рдо рдЗрдВрд╕реНрдЯреЗрдВрд╕ рдмрдврд╝рд╛рддреЗ рд╣реИрдВ

рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдореЗрд░реЗ рдЕрд▓рд╛рд╡рд╛ рдХрд┐рд╕реА рдФрд░ рдХреЗ рд▓рд┐рдП рднреА рдЙрдкрдпреЛрдЧреА рд╣реЛрдЧрд╛ред

рдЕрдВрдд рддрдХ рдкрдврд╝рдиреЗ рд╡рд╛рд▓реЗ рд╕рднреА рдХреЛ рдмрд╣реБрдд рдзрдиреНрдпрд╡рд╛рджред

рдпрджрд┐ рдХрд┐рд╕реА рдХреЛ рдХреЛрдИ рдХрдард┐рдирд╛рдИ рд╣реЛ рдпрд╛ рдореИрдВрдиреЗ рдХреЛрдИ рдЕрд╢реБрджреНрдзрд┐ рдХреА рд╣реЛ, рддреЛ рдореБрдЭреЗ рдЙрддреНрддрд░ рджреЗрдиреЗ рдореЗрдВ рдЦреБрд╢реА рд╣реЛрдЧреА рдФрд░ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдореЗрдВ рдпрд╛ рдкреАрдПрдо рдореЗрдВ рдЖрдкрдХреА рд╕рд╣рд╛рдпрддрд╛ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реВрдВрдЧрд╛ред

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

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдЬреЛрдбрд╝реЗрдВ