На первый взгляд, ваш конфигурационный файл Nginx в целом выглядит правильно, однако есть несколько моментов, которые могут вызывать ошибку 404 при работе с вебхуками.
### Возможные причины ошибки 404
1. **Неверный путь к вебхуку**:
Убедитесь, что ваш Telegram-бот слушает именно те пути, которые вы указали в `WEBHOOK_PATH` и `MAIN_BOT_PATH`. Проверьте, что ваш бот действительно работает на `http://127.0.0.1:3001/webhook` и `http://127.0.0.1:3001/webhook/owner`.
2. **Настройки `proxy_pass`**:
Ваша конфигурация `proxy_pass` выглядит корректно, но стоит проверить, что бот работает на правильном порту (3001) и доступен по данному адресу. Вы можете протестировать, отправив запрос напрямую на `http://127.0.0.1:3001/webhook` с помощью `curl` или браузера.
```bash
curl http://127.0.0.1:3001/webhook
```
3. **Пути в боте**:
Убедитесь, что ваш бот правильно обрабатывает маршруты. Например, если он ожидает получать данные по пути `/webhook`, то путь должен строго соответствовать. Если у вас есть незащищенные маршруты, которые обрабатывает бот, убедитесь, что у них нет конфликтов.
4. **Проблемы с SSL**:
Проверьте, что SSL настроен корректно и работает. Вы можете временно отключить SSL для тестирования, изменив строки `listen 443 ssl;` на `listen 80;` в соответствующем server блоке и посмотрев, работает ли без него.
5. **Логи Nginx**:
Проверьте логи Nginx на наличие ошибок. Они могут содержать полезную информацию о том, почему возникает ошибка 404. Обычно логи находятся по пути `/var/log/nginx/access.log` и `/var/log/nginx/error.log`.
```bash
tail -f /var/log/nginx/error.log
```
### Возможная доработка конфигурации
Также, если ваши пути могут иметь дополнительные символы или обработку, попробуйте следующее:
```nginx
location /webhook {
proxy_set_header Host $http_host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_redirect off;
proxy_buffering off;
proxy_pass http://127.0.0.1:3001;
proxy_http_version 1.1;
proxy_set_header Connection "";
}
```
### Заключение
Если проблема не исчезнет после выполнения всех перечисленных шагов, попробуйте временно протестировать вашу конфигурацию без Nginx (прямим обращением к локальному серверу бота), чтобы убедиться, что сам бот работает корректно.