如何使用Nginx反向代理部署Telegram Bot

时间:2018-06-20 19:00:20

标签: python nginx telegram-bot python-telegram-bot

我用python-telegram-bot库开发了Telegram机器人,现在我想将其部署在服务器中,因此我设置了一个Webhook(在Official Wiki之后),但是当我尝试与我的机器人通信时我没有得到任何答复。

这是机器人的来源:

def main():
   PRIVTOKEN = "1134xxxx"
   updater = Updater(PRIVTOKEN)

   dp = updater.dispatcher

   dp.add_handler(CommandHandler("start", start))
   # ...

   updater.start_webhook(listen='127.0.0.1',
                         port=8843,
                         url_path=PRIVTOKEN)
   updater.bot.set_webhook(webhook_url='https://example.com/' + PRIVTOKEN,
                           certificate=open("cert.pem", "rb"))
   print("bot started")
   updater.idle()

nginx配置文件:

server {
  listen 443 ssl;
  server_name example.com;


  location /1134xxxx {
     proxy_pass http://127.0.0.1:8443;
  }
}

netstat状态:

sudo netstat -an | grep 8843
tcp        0      127.0.0.1:8843            0.0.0.0:*               LISTEN 

机器人(我已启用错误日志)或nginx(access / error.log)记录了其他错误

我还为防火墙中的8843端口添加了自定义规则。

1 个答案:

答案 0 :(得分:1)

电报仅支持https个请求。注意这一点。

我的nginx配置:

server {
        listen 80;
        listen 443 ssl;
        server_name example.com www.example.com;
        ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
        ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
        if ($scheme = http) {
            return 301 https://$server_name$request_uri;
        }
    location / {
            proxy_set_header Host $http_host;
            proxy_redirect off;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Scheme $scheme;
            proxy_pass http://localhost:5005/;
    }
}