ПовишавамС нашия СкзСмпляр Π½Π° Webogram с прокси Ρ‡Ρ€Π΅Π· nginx

Π₯Π΅ΠΉ Π₯Π°Π±Ρ€!

Наскоро сС ΠΎΠ·ΠΎΠ²Π°Ρ… Π² ситуация, Π² която бСшС Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π΄Π° работя Π² ΠΊΠΎΡ€ΠΏΠΎΡ€Π°Ρ‚ΠΈΠ²Π½Π° ΠΌΡ€Π΅ΠΆΠ° с нСпълСн Π΄ΠΎΡΡ‚ΡŠΠΏ Π΄ΠΎ ΠΈΠ½Ρ‚Π΅Ρ€Π½Π΅Ρ‚ ΠΈ, ΠΊΠ°ΠΊΡ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° сС досСтитС ΠΎΡ‚ Π·Π°Π³Π»Π°Π²ΠΈΠ΅Ρ‚ΠΎ, Telegram бСшС Π±Π»ΠΎΠΊΠΈΡ€Π°Π½ Π² нСя. Π‘ΠΈΠ³ΡƒΡ€Π΅Π½ съм, Ρ‡Π΅ Ρ‚Π°Π·ΠΈ ситуация Π΅ ΠΏΠΎΠ·Π½Π°Ρ‚Π° Π½Π° ΠΌΠ½ΠΎΠ·ΠΈΠ½Π°.

Мога Π΄Π° сС справя Π±Π΅Π· ΠΌΠ΅ΡΠΈΠ½Π΄ΠΆΡŠΡ€ΠΈ, Π½ΠΎ Telegram ΠΌΠΈ Ρ‚Ρ€ΡΠ±Π²Π°ΡˆΠ΅ Π·Π° Ρ€Π°Π±ΠΎΡ‚Π°. НС бСшС възмоТно Π΄Π° сС инсталира ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΡŠΡ‚ Π½Π° Ρ€Π°Π±ΠΎΡ‚Π½Π° машина, Π½ΠΈΡ‚ΠΎ бСшС възмоТно Π΄Π° сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π»ΠΈΡ‡Π΅Π½ Π»Π°ΠΏΡ‚ΠΎΠΏ. Π”Ρ€ΡƒΠ³ΠΎ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ ΠΈΠ·Π³Π»Π΅ΠΆΠ΄Π° Π΅ Π΄Π° Π³ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅ ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»Π½Π° ΡƒΠ΅Π± вСрсия, Π½ΠΎ ΠΊΠ°ΠΊΡ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° сС досСтитС, Ρ‚ΠΎΠΉ ΡΡŠΡ‰ΠΎ бСшС Π½Π΅Π΄ΠΎΡΡ‚ΡŠΠΏΠ΅Π½. Π’Π΅Π΄Π½Π°Π³Π° Π·Π°Ρ‡Π΅Ρ€ΠΊΠ²Π°ΠΌ опцията Π·Π° Ρ‚ΡŠΡ€ΡΠ΅Π½Π΅ Π½Π° Π½Π΅ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»Π½ΠΎ ΠΎΠ³Π»Π΅Π΄Π°Π»ΠΎ (надявам сС ΠΏΠΎ обясними ΠΏΡ€ΠΈΡ‡ΠΈΠ½ΠΈ).

Π—Π° щастиС, Webogram Π΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ с ΠΎΡ‚Π²ΠΎΡ€Π΅Π½ ΠΊΠΎΠ΄, Ρ‡ΠΈΠΉΡ‚ΠΎ ΠΈΠ·Ρ…ΠΎΠ΄Π΅Π½ ΠΊΠΎΠ΄ Π΅ Π½Π°Π»ΠΈΡ‡Π΅Π½ GitHub нСговият Π°Π²Ρ‚ΠΎΡ€ (Π·Π° ΠΊΠΎΠ΅Ρ‚ΠΎ ΠΌΠ½ΠΎΠ³ΠΎ ΠΌΡƒ благодаря!)
Π‘Π°ΠΌΠΎΡ‚ΠΎ инсталиранС ΠΈ стартиранС Π½Π΅ Π΅ Ρ‚Ρ€ΡƒΠ΄Π½ΠΎ, Π½ΠΎ Π² условия Π½Π° Ρ€Π°Π±ΠΎΡ‚Π° Π² ΠΌΡ€Π΅ΠΆΠ° с Π±Π»ΠΎΠΊΠΈΡ€Π°Π½ Π΄ΠΎΡΡ‚ΡŠΠΏ Π΄ΠΎ ΡΡŠΡ€Π²ΡŠΡ€ΠΈΡ‚Π΅ Π½Π° Telegram Π΅ ΠΏΠΎ-вСроятно Π΄Π° Π±ΡŠΠ΄Π΅Ρ‚Π΅ Ρ€Π°Π·ΠΎΡ‡Π°Ρ€ΠΎΠ²Π°Π½ΠΈ, ΠΎΡ‚ΠΊΠΎΠ»ΠΊΠΎΡ‚ΠΎ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΈ, Ρ‚ΡŠΠΉ ΠΊΠ°Ρ‚ΠΎ ΡƒΠ΅Π± вСрсията ΠΈΠ·ΠΏΡ€Π°Ρ‰Π° заявки Π΄ΠΎ ΡΡŠΡ€Π²ΡŠΡ€ΠΈΡ‚Π΅ Π½Π° Telegram ΠΎΡ‚ ΠΌΠ°ΡˆΠΈΠ½Π°Ρ‚Π° Π½Π° потрСбитСля.

Π—Π° щастиС, Ρ‚ΠΎΠ²Π° Π΅ доста проста (Π½ΠΎ Π½Π΅ ΠΌΠ½ΠΎΠ³ΠΎ ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½Π°) ΠΏΠΎΠΏΡ€Π°Π²ΠΊΠ°. Π‘ΠΈΡ… искал Π΄Π° Π²ΠΈ прСдупрСдя, Ρ‡Π΅ Π½Π΅ съм Π°Π²Ρ‚ΠΎΡ€ Π½Π° Ρ‚ΠΎΠ²Π° Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅. Успях Π΄Π° Π³ΠΎ намСря Π² ΠΊΠ»ΠΎΠ½, ΠΊΠΎΠΉΡ‚ΠΎ обсъТдашС ΠΏΠΎΠ΄ΠΎΠ±Π΅Π½ Π½Π° моя ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ. РСшСниС, ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΎ ΠΎΡ‚ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π» Π½Π° github tecknojock, ΠΌΠΈ ΠΏΠΎΠΌΠΎΠ³Π½Π° ΠΌΠ½ΠΎΠ³ΠΎ, Π½ΠΎ съм сигурСн, Ρ‡Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΏΠΎΠΌΠΎΠ³Π½Π΅ ΠΈ Π½Π° някой Π΄Ρ€ΡƒΠ³, Π·Π°Ρ‚ΠΎΠ²Π° Ρ€Π΅ΡˆΠΈΡ… Π΄Π° напиша Ρ‚ΠΎΠ·ΠΈ ΡƒΡ€ΠΎΠΊ.

Под ΠΈΠ·Ρ€Π΅Π·ΠΊΠ°Ρ‚Π° Ρ‰Π΅ Π½Π°ΠΌΠ΅Ρ€ΠΈΡ‚Π΅ ΡΡ‚ΡŠΠΏΠΊΠ° ΠΏΠΎ ΡΡ‚ΡŠΠΏΠΊΠ° настройка Π½Π° Π²Π°ΡˆΠ΅Ρ‚ΠΎ Webogram ΠΎΠ³Π»Π΅Π΄Π°Π»ΠΎ ΠΈ настройка Π½Π° прокси ΡΡŠΡ€Π²ΡŠΡ€ΠΈΡ‚Π΅ ΠΌΡƒ към ΡΡŠΡ€Π²ΡŠΡ€ΠΈΡ‚Π΅ Π½Π° Telegram с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° nginx.

ΠšΠ°Ρ‚ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΈΠ·Π±Ρ€Π°Ρ… прясно инсталиран ΠΈ Π°ΠΊΡ‚ΡƒΠ°Π»ΠΈΠ·ΠΈΡ€Π°Π½ Ubuntu Server 18.04.3.

ΠŸΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π΅Π½ΠΈΠ΅: Π’ΠΎΠ·ΠΈ ΡƒΡ€ΠΎΠΊ няма Π΄Π° Π²ΠΊΠ»ΡŽΡ‡Π²Π° инструкции Π·Π° настройка Π½Π° Π΄ΠΎΠΌΠ΅ΠΉΠ½ Π² nginx. Врябва Π΄Π° Π½Π°ΠΏΡ€Π°Π²ΠΈΡ‚Π΅ Ρ‚ΠΎΠ²Π° сами. Π£Ρ€ΠΎΠΊΡŠΡ‚ ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°, Ρ‡Π΅ Π²Π΅Ρ‡Π΅ стС ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€Π°Π»ΠΈ Π΄ΠΎΠΌΠ΅ΠΉΠ½ с ssl ΠΈ Ρ‡Π΅ самият ΡΡŠΡ€Π²ΡŠΡ€, Π½Π° ΠΊΠΎΠΉΡ‚ΠΎ ΠΏΠ»Π°Π½ΠΈΡ€Π°Ρ‚Π΅ Π΄Π° Π³ΠΎ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€Π°Ρ‚Π΅, ΠΈΠΌΠ° Π΄ΠΎΡΡ‚ΡŠΠΏ Π΄ΠΎ ΡΡŠΡ€Π²ΡŠΡ€ΠΈΡ‚Π΅ Π½Π° Telegram (ΠΏΠΎ ΠΊΠ°ΠΊΡŠΠ²Ρ‚ΠΎ Π½Π°Ρ‡ΠΈΠ½ ΠΆΠ΅Π»Π°Π΅Ρ‚Π΅)

Π”Π° ΠΏΡ€ΠΈΠ΅ΠΌΠ΅ΠΌ, Ρ‡Π΅ ip Π½Π° Ρ‚ΠΎΠ·ΠΈ ΡΡŠΡ€Π²ΡŠΡ€ Π΅ 10.23.0.3, Π° ΠΈΠΌΠ΅Ρ‚ΠΎ Π½Π° Π΄ΠΎΠΌΠ΅ΠΉΠ½Π° Π΅ mywebogram.localhost

Π’ΡŠΠ· основа Π½Π° Ρ‚Π΅Π·ΠΈ ΠΊΠΎΠ½Π²Π΅Π½Ρ†ΠΈΠΈ Ρ‰Π΅ Π΄Π°ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΈ Π·Π° ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ. НС забравяйтС Π΄Π° ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈΡ‚Π΅ стойноститС Π½Π° Π²Π°ΡˆΠΈΡ‚Π΅ собствСни.

Π—Π°Ρ‚ΠΎΠ²Π° Π½Π΅ΠΊΠ° Π·Π°ΠΏΠΎΡ‡Π½Π΅ΠΌ:

Π—Π° Π΄Π° стартирамС Webogram, ΠΈΠΌΠ°ΠΌΠ΅ Π½ΡƒΠΆΠ΄Π° ΠΎΡ‚ nodejs. По ΠΏΠΎΠ΄Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅, Π°ΠΊΠΎ Π³ΠΎ инсталирамС ΠΎΡ‚ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π°Ρ‚Π° Π½Π° 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

НиС ΠΈΠ·Π±ΠΈΡ€Π°ΠΌΠ΅ мястото, ΠΊΡŠΠ΄Π΅Ρ‚ΠΎ Ρ‰Π΅ бъдС Π±Π°Π·ΠΈΡ€Π°Π½Π° Π½Π°ΡˆΠ°Ρ‚Π° Webogram.

НапримСр, Π½Π΅ΠΊΠ° Π³ΠΎ поставим Π² ΠΊΠΎΡ€Π΅Π½Π° Π½Π° Π½Π°Ρ‡Π°Π»Π½Π°Ρ‚Π° дирСктория. Π—Π° Π΄Π° Π½Π°ΠΏΡ€Π°Π²ΠΈΡ‚Π΅ Ρ‚ΠΎΠ²Π°, ΠΊΠ»ΠΎΠ½ΠΈΡ€Π°ΠΉΡ‚Π΅ ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»Π½ΠΎΡ‚ΠΎ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ Π½Π° нашия ΡΡŠΡ€Π²ΡŠΡ€:

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

Π‘Π»Π΅Π΄Π²Π°Ρ‰Π°Ρ‚Π° ΡΡ‚ΡŠΠΏΠΊΠ° Π΅ Π΄Π° инсталиратС всички зависимости, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΈ Π·Π° стартиранС Π½Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ:

cd webogram && npm install

НСка ΠΎΠΏΠΈΡ‚Π°ΠΌΠ΅ ΠΏΡ€ΠΎΠ±Π½ΠΎ изпълнСниС. Π˜Π·ΠΏΡŠΠ»Π½Π΅Ρ‚Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Π°Ρ‚Π°:

npm start

Π‘Π»Π΅Π΄ Ρ‚ΠΎΠ²Π° сС ΠΎΠΏΠΈΡ‚Π²Π°ΠΌΠ΅ Π΄Π° Π³ΠΎ ΠΎΡ‚Π²ΠΎΡ€ΠΈΠΌ Π² Π±Ρ€Π°ΡƒΠ·ΡŠΡ€Π°

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

Ако Π΄ΠΎ Ρ‚ΠΎΠ·ΠΈ ΠΌΠΎΠΌΠ΅Π½Ρ‚ стС Π½Π°ΠΏΡ€Π°Π²ΠΈΠ»ΠΈ всичко ΠΏΡ€Π°Π²ΠΈΠ»Π½ΠΎ, Ρ‰Π΅ сС ΠΎΡ‚Π²ΠΎΡ€ΠΈ страницата Π·Π° оторизация Π½Π° Webogram.

Π‘Π΅Π³Π° трябва Π΄Π° ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€Π°ΠΌΠ΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ Π΄Π° Ρ€Π°Π±ΠΎΡ‚ΠΈ ΠΊΠ°Ρ‚ΠΎ услуга. Π—Π° Π΄Π° Π½Π°ΠΏΡ€Π°Π²ΠΈΡ‚Π΅ Ρ‚ΠΎΠ²Π°, Π½Π΅ΠΊΠ° създадСм Ρ„Π°ΠΉΠ»

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

ΠΎΡ‚Π²ΠΎΡ€Π΅Ρ‚Π΅ Π³ΠΎ във всСки Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ ΠΈ ΠΌΡƒ ΠΏΡ€ΠΈΠ΄Π°ΠΉΡ‚Π΅ слСдния Π²ΠΈΠ΄ (Π²ΡŠΠ²Π΅Π΄Π΅Ρ‚Π΅ ΠΏΡŠΡ‚Ρ си към 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

Π‘Π»Π΅Π΄ Ρ‚ΠΎΠ²Π° изпълнявамС слСднитС ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ:

ΠŸΡ€ΠΈΠ»Π°Π³Π°Π½Π΅ Π½Π° ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈΡ‚Π΅

sudo systemctl daemon-reload

АктивиранС Π½Π° Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΡ‡Π½ΠΎ стартиранС:

sudo systemctl enable webogram.service

Π”Π° Π·Π°ΠΏΠΎΡ‡Π½Π΅ΠΌ услугата:

sudo systemctl start webogram.service

Π‘Π»Π΅Π΄ ΠΊΠ°Ρ‚ΠΎ ΠΈΠ·ΠΏΡŠΠ»Π½ΠΈΡ‚Π΅ ΡΡ‚ΡŠΠΏΠΊΠΈΡ‚Π΅, Webogram Ρ‰Π΅ ΠΏΡ€ΠΎΠ΄ΡŠΠ»ΠΆΠΈ Π΄Π° бъдС Π΄ΠΎΡΡ‚ΡŠΠΏΠ΅Π½ Π½Π° ΠΏΠΎΡ€Ρ‚ 8000.

Въй ΠΊΠ°Ρ‚ΠΎ Ρ‰Π΅ настройвамС Π΄ΠΎΡΡ‚ΡŠΠΏ Π΄ΠΎ Π½Π°ΡˆΠ°Ρ‚Π° Webogram Ρ‡Ρ€Π΅Π· 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, Π½Π° ΠΊΠΎΠΉΡ‚ΠΎ Webogram отговаря
  • ЗатварямС основната локация с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° basic-auth. Π’ΠΎΠ²Π° Π΅ чисто символична ΡΡ‚ΡŠΠΏΠΊΠ° Π·Π° затварянС Π½Π° Π½Π°ΡˆΠ΅Ρ‚ΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΎΡ‚ Π»ΡŽΠ±ΠΎΠΏΠΈΡ‚Π½ΠΈ ΠΎΡ‡ΠΈ ΠΈ Π±ΠΎΡ‚ΠΎΠ²Π΅. (А ΡΡŠΡ‰ΠΎ ΠΈ Π·Π° Π΄Π° ΠΈΠ·Π±Π΅Π³Π½Π΅Ρ‚Π΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈ с Π±Π»ΠΎΠΊΠΈΡ€Π°Π½Π΅Ρ‚ΠΎ)
  • ΠšΡƒΠΏ мСстополоТСния с proxy_path Π½Π° ΡΡŠΡ€Π²ΡŠΡ€Π° Π½Π° Telegram са Ρ‚ΠΎΡ‡Π½ΠΎ Π½Π°ΡˆΠΈΡ‚Π΅ ΠΊΡ€Π°ΠΉΠ½ΠΈ Ρ‚ΠΎΡ‡ΠΊΠΈ, ΠΏΡ€Π΅Π· ΠΊΠΎΠΈΡ‚ΠΎ Ρ‰Π΅ проксирамС Π½Π°ΡˆΠΈΡ‚Π΅ заявки

Π‘ΡŠΡ‰ΠΎ Ρ‚Π°ΠΊΠ°, Π½Π΅ΠΊΠ° създадСм Ρ„Π°ΠΉΠ» /etc/nginx/passwd.htpasswd;Ρ‚Π°ΠΊΠ° Ρ‡Π΅ nginx Π΄Π° ΠΈΠΌΠ° с ΠΊΠ°ΠΊΠ²ΠΎ Π΄Π° провСрява потрСбитСлскитС ΠΏΠ°Ρ€ΠΎΠ»ΠΈ.

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

ПовишавамС нашия СкзСмпляр Π½Π° Webogram с прокси Ρ‡Ρ€Π΅Π· 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 заявкитС ΠΎΡ‚ΠΈΠ²Π°Ρ‚ към вашия ΡΡŠΡ€Π²ΡŠΡ€, Ρ‚ΠΎΠ³Π°Π²Π° всичко Π΅ Π½Π°ΠΏΡ€Π°Π²Π΅Π½ΠΎ ΠΏΡ€Π°Π²ΠΈΠ»Π½ΠΎ ΠΈ Webogram Π²Π΅Ρ‡Π΅ Π΅ проксиран Ρ‡Ρ€Π΅Π· nginx.

ПовишавамС нашия СкзСмпляр Π½Π° Webogram с прокси Ρ‡Ρ€Π΅Π· nginx

Надявам сС, Ρ‡Π΅ Ρ‚ΠΎΠ·ΠΈ ΡƒΡ€ΠΎΠΊ Ρ‰Π΅ бъдС ΠΏΠΎΠ»Π΅Π·Π΅Π½ ΠΈ Π½Π° някой Π΄Ρ€ΡƒΠ³ освСн Π½Π° ΠΌΠ΅Π½.

Много благодаря Π½Π° всички, ΠΊΠΎΠΈΡ‚ΠΎ ΠΏΡ€ΠΎΡ‡Π΅Ρ‚ΠΎΡ…Π° Π΄ΠΎ края.

Ако някой ΠΈΠΌΠ° затруднСния ΠΈΠ»ΠΈ съм допуснал нСточности, Ρ‰Π΅ сС Ρ€Π°Π΄Π²Π°ΠΌ Π΄Π° отговоря ΠΈ Π΄Π° сС ΠΎΠΏΠΈΡ‚Π°ΠΌ Π΄Π° Π²ΠΈ ΠΏΠΎΠΌΠΎΠ³Π½Π° Π² ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΡ‚Π΅ ΠΈΠ»ΠΈ Π² Π›Π‘.

Π˜Π·Ρ‚ΠΎΡ‡Π½ΠΈΠΊ: www.habr.com

ДобавянС Π½Π° Π½ΠΎΠ² ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€