@Karrammbbaa

Как настроить nginx на проксирование запросов для aiogram бота?

Локально запускал бота, все работало корректно, залил на сервер и возникли проблемы с настройкой nginx. Помогите пожалуйста разобраться.
Для примера
Мой домен : test-site.ru
ip : 111.111.111.111

Nginx config:
server {
        listen 80;
        listen 443 ssl;

        server_name test-site.ru www.test-site.ru;

        ssl on;
        ssl_certificate /etc/ssl/test-site.ru.crt;
        ssl_certificate_key /etc/ssl/test-site.ru.key;

        location / {
                include proxy_params;
                proxy_pass https://111.111.111.111:8003;
        }
}


В python:
from aiogram import Bot, Dispatcher, types
from aiogram.utils.executor import start_webhook
from dotenv import load_dotenv
import os


load_dotenv()

token = os.getenv('API_TOKEN')
bot = Bot(token)
dp = Dispatcher(bot)
WEBHOOK_DOMAIN = 'https://test-site.ru/'
WEBAPP_HOST = '111.111.111.111'
WEBAPP_PORT = '8003'

dp.message_handler()
async def echo(msg: types.Message):
    await msg.answer(text=msg.text)


async def on_startup(dispatcher):
    await bot.set_webhook(WEBHOOK_DOMAIN, drop_pending_updates=True)


async def on_shutdown(dispatcher):
    await bot.delete_webhook()

if __name__ == '__main__':
    start_webhook(dispatcher=dp, webhook_path='', on_startup=on_startup, on_shutdown=on_shutdown, skip_updates=True, host=WEBAPP_HOST, port=WEBAPP_PORT)


Я запускаю скрипт питона через "python3 test.py", в терминале:
Updates were skipped successfully.
======== Running on http://111.111.111.111:8003 ========
(Press CTRL+C to quit)

Тут указан http, хотя наверное должен быть https, говорит ли это о том что сертификат ssl не подключен?
Далее, если я отправляю боту сообщение, в терминал сыпятся ошибки:
aiohttp.http_exceptions.BadStatusLine: 400, message="Bad status line 'Invalid method encountered'"

в логах nginx "POST / HTTP/1.1" 502 166 "-" "-"

Посмотрел в гугле, у многих такая ошибка была связана с портами, поэтому я попробовал поменять в конфиге nginx порт, который он слушает на 8443-ий. Ошибка пропала, но бот по прежнему не реагирует, я посмотрел логи nginx, там нет записей что были запросы.

Если правильно понимаю, по логам приходят ответы с 502 статусом
  • Вопрос задан
  • 1189 просмотров
Пригласить эксперта
Ответы на вопрос 1
ky0
@ky0 Куратор тега Nginx
Миллиардер, филантроп, патологический лгун
В proxy_pass у вас схема HTTPS, а судя по логу бота, внутри там HTTP.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы