Настройка
Новости
Оплата
Доставка
Информация
Контакты
Загрузки
Форум
Услуги
  • Внедрение
  • Настройка
  • Поддержка
  • Ремонт
    info@proxmox.su
    +7 (495) 320-70-49
    Заказать звонок
    Аспро: ЛайтШоп
    Каталог
    • 1U
      1U
    • 2U
      2U
    • 3U
      3U
    • 4U
      4U
    0 Сравнение
    0 Избранное
    0 Корзина
    Аспро: ЛайтШоп
    Каталог
    0 Сравнение
    0 Избранное
    0 Корзина
    Аспро: ЛайтШоп
    Телефоны
    +7 (495) 320-70-49
    Заказать звонок
    0
    0
    0
    Аспро: ЛайтШоп
    • +7 (495) 320-70-49
      • Назад
      • Телефоны
      • +7 (495) 320-70-49
      • Заказать звонок
    • info@proxmox.su
    • Москва, ул. Бакунинская, 84с21, Бизнес-центр ИТКОЛ
    • Пн-Пт: 09-00 до 18-00
      Сб-Вс: выходной
    • 0 Сравнение
    • 0 Избранное
    • 0 Корзина
    Главная
    Форум
    Proxmox Backup Server
    [РЕШЕНО] Не соответствует стандарту HTTP

    Форумы: Proxmox Виртуальная Среда, Proxmox Backup Server, Proxmox Mail Gateway, Proxmox Datacenter Manager
    Поиск  Пользователи  Правила  Войти
    Страницы: 1
    Ответить
    RSS
    [РЕШЕНО] Не соответствует стандарту HTTP, Proxmox Backup Server
     
    McTwist
    Guest
    #1
    0
    14.06.2023 12:49:00
    Я обнаружил проблему с тем, как PBS работает за обратным прокси. Я пробовал Apache, Caddy и Nginx. С Nginx всё «просто работает», а с остальными перестаёт работать, когда PBS пытается инициировать апгрейд до своего протокола. В итоге PBS отвечает, что заголовок Upgrade отсутствует. Я провёл расследование с Apache, собрал логи с Caddy и немного пролистал код Caddy. После изучения стандартов Connection/Upgrade, кажется, что PBS забывает отправлять заголовок Connection для запуска апгрейда, хотя стандарт этого требует. Caddy, судя по всему, требует наличие этого заголовка, они следуют стандарту, и, по всей видимости, Apache тоже так делает, судя по их ответам. При этом Nginx, похоже, не придерживается этого стандарта, и поэтому с ним всё работает. Интересно, действительно ли PBS при попытке сделать апгрейд на proxmox-backup-protocol-v1 или proxmox-backup-reader-protocol-v1 не отправляет заголовок Connection? Если да, то это баг или особенность? Я бы сказал, баг, потому что это нарушение стандарта. Ещё один момент, не связанный с PBS, но полезный для тех, кто столкнётся с этой проблемой: модуль прокси в Apache не поддерживает имена Upgrade длиннее 16 символов. Обойти это можно с помощью rewrite-модуля.
     
       Цитировать   Имя
     
    ctrlbrk
    Guest
    #2
    0
    14.02.2024 17:16:00
    Я не хочу возвращаться к nginx. Я сделал другой обходной путь только для этой проблемы, но он уникален для моего развертывания. Очень хочется, чтобы это исправили в PBS.
     
    Цитировать   Имя
     
    mstefan
    Guest
    #3
    0
    26.07.2023 22:49:00
    Есть какие-нибудь новости по этому поводу? У меня такая же проблема с PBS за обратным прокси traefik.
     
    Цитировать   Имя
     
    fiona
    Guest
    #4
    0
    27.07.2023 09:01:00
    Привет, да, есть соответствующий баг-репорт. Можешь предоставить запрошенные там детали?
     
    Цитировать   Имя
     
    mstefan
    Guest
    #5
    0
    28.07.2023 12:36:00
    Я создал отдельную тему для этого, не хочу захватывать эту. https://forum.proxmox.com/threads/error-missing-upgrade-header-pbs-behind-traefik.131327/
     
    Цитировать   Имя
     
    McTwist
    Guest
    #6
    0
    14.02.2024 10:32:00
    Спасибо, что нашли время подробнее разобраться с этой проблемой. Действительно странно, что код 101 не отправляется, поэтому можно предположить две возможные причины:

    1. Хотя PBS отправляет правильный ответ, по какой-то причине он не делает того, что требуется от всех остальных сервисов.
    2. Nginx корректно обрабатывает обновление, а другие обратные прокси почему-то с этим не справляются.

    Однако я тоже не вижу проблем в исходниках Caddy, которые бы могли привести к сбою, если только он не меняет код статуса. Возможно, запуск Caddy в режиме отладки даст дополнительную информацию.

    С вашей точки зрения, можно считать, что первая версия — неверна, значит, проблема, вероятно, в других сервисах, но звучит невероятно, что только один сервис реализовал это правильно.

    Пока я останусь на nginx, но в будущем хочу перейти на что-то другое, если получится. Раньше у меня не было возможности этим заняться, но я потратил немного времени, чтобы очень скоро подготовить переход на nginx. Позже при желании могу переключиться на любой другой обратный прокси.
     
    Цитировать   Имя
     
    ctrlbrk
    Guest
    #7
    0
    17.12.2023 18:29:00
    У меня такая же проблема. В отчёте об ошибке указано, что проблема исправлена, но у меня всё ещё не работает.

    (headers) {  
    header -x-powered-by  
    header -server  
    header Content-Security-Policy "frame-ancestors 'self'; upgrade-insecure-requests;"  
    header X-LB-Server {system.hostname}  
    header X-LB-Requested-Host {host}  
    header X-LB-Server {system.hostname}  
    header X-Forwarded-Port {http.request.port}  
    header X-Forwarded-For {http.request.header.CF-Connecting-IP}  
    header X-Real-IP {http.request.header.CF-Connecting-IP}  
    encode zstd gzip  
    }  

    pbs.x.dev, pbs.x.net {  
    import cloudflare  
    import headers  
    reverse_proxy https://192.168.2.58:8007 {  
    transport http {  
    tls_insecure_skip_verify  
    }  
    }  
    }  

    Я использую последнюю сборку PBS. Очень хотелось бы получить решение, которое будет работать с моей архитектурой, используя туннель Cloudflare.
     
    Цитировать   Имя
     
    ctrlbrk
    Guest
    #8
    0
    17.12.2023 18:30:00
    @McTwist, ты решил проблему с Caddy?
     
    Цитировать   Имя
     
    McTwist
    Guest
    #9
    0
    17.12.2023 19:02:00
    Я проверил и с Apache, и с Caddy, но всё равно не работает. Ошибки у каждого разные. Один из разработчиков смог запустить Apache у себя, но мне не удалось повторить его настройку, так что, думаю, мы с тобой что-то упускаем. Пока отложил это, но позже, когда смогу посвятить делу больше времени, обязательно вернусь к этому.
     
    Цитировать   Имя
     
    ctrlbrk
    Guest
    #10
    0
    17.12.2023 19:11:00
    Я добавил эти два заголовка, и теперь появляется другая ошибка: sync group vm/101 failed - invalid protocol name reverse_proxy https://192.168.2.58:8007 { transport http { tls_insecure_skip_verify } header_up Connection {http.request.header.Connection} header_up Upgrade {http.request.header.Upgrade} }
     
    Цитировать   Имя
     
    ctrlbrk
    Guest
    #11
    0
    20.12.2023 02:18:00
    @McTwist Надеюсь, ты попробуешь настройки из моего последнего поста и проверишь, заработает ли у тебя. Если да, давай сравним конфиги. У меня два PBS на разных континентах, оба за Caddy. Один работает как удалённый для другого. В одном направлении всё работает отлично, а в обратном я получаю эти ошибки (теперь "invalid protocol name"). Причём оба моих Caddy, насколько я могу судить, одинаковые!
     
    Цитировать   Имя
     
    McTwist
    Guest
    #12
    0
    14.02.2024 09:53:00
    Я решил использовать nginx, потому что он «просто работает», и сейчас я не хочу тратить время на то, чтобы разбираться, как заставить это работать, тем более что сами разработчики не могут это повторить. Если я в будущем всерьёз возьмусь за это, то, наверное, рассмотрю и другие варианты, вроде haproxy и traefik.
     
    Цитировать   Имя
     
    Max Carrara
    Guest
    #13
    0
    14.02.2024 10:09:00
    Поступил ещё один отчёт о баге, поэтому я сейчас пытаюсь его воспроизвести. Похоже, что для некоторых обратных прокси ответ на запрос обновления просто «не доходит» — как будто его вообще никогда не получали, хотя мы точно отправляем правильный ответ. В итоге обратный прокси отдаёт ответ с HTTP 200 вместо того, чтобы переслать серверный ответ с 101, и процесс апгрейда протокола срывается. Не понимаю, почему такого не происходит с nginx. По крайней мере Caddy страдает от этой проблемы. Сейчас собираюсь попробовать ещё один прокси, чтобы «слушать» пакеты, которые отправляются и принимаются, и проанализировать их в Wireshark. В исходниках Caddy ничего сломанного не видно, и похожих багрепортов тоже не нашёл. Честно говоря, меня ломает, почему именно ответ 101 почему-то теряется. Если сейчас в деле работает только nginx, я бы советовал просто оставаться на нём.
     
    Цитировать   Имя
     
    Max Carrara
    Guest
    #14
    0
    14.02.2024 17:52:00
    Точно, вот что меня удивляет — должно быть какое-то другое скрытое дело (насчёт PBS). Единственное, что я выявил, — Caddy жалуется, что получил пустую строку в заголовке Upgrade от PBS. Сначала я подумал, что мы вообще не отправляем этот заголовок, но это не так. Без обратного прокси ответ содержит все ожидаемые заголовки, включая Upgrade. Поэтому я буду анализировать TCP-потоки между Caddy и PBS. Буду держать вас в курсе!
     
    Цитировать   Имя
     
    Max Carrara
    Guest
    #15
    0
    28.02.2024 17:41:00
    Не могу поверить, но у меня получилось. Это, наверное, одно из самых мучительных путешествий по отладке, в которых мне доводилось участвовать, но, тем не менее, я много чему научился. Хотел бы кое-что уточнить: Caddy действительно получает заголовок Upgrade (это видно в логах отладки), но не передаёт его дальше внутри, если в ответе сервера нет заголовка Connection. К моему удивлению, это нигде явно не прописано в RFC по HTTP/1.1 и HTTP/2 — только в примерах. В описании патча, который я только что отправил на рассылку, всё подробно объяснено. Если интересно, можете почитать здесь: https://lists.proxmox.com/pipermail/pbs-devel/2024-February/007947.html С этим патчем Caddy точно заработает с PBS (а nginx продолжит работать как обычно). Другие реверс-прокси я ещё не тестировал, но если только они не будут игнорировать заголовок Connection в ответе (чёрт его знает зачем), то тоже должны работать. Всем спасибо за терпение!
     
    Цитировать   Имя
     
    McTwist
    Guest
    #16
    0
    28.02.2024 20:00:00
    Поскольку они работают с обычными вебсокетами, как консоль PVE/PBS, это определённо будет работать. Я уже перешёл на Nginx, но теперь у меня есть ещё больше причин перейти на Caddy для прокси. Спасибо за вашу отличную работу, и будем надеяться, что эта проблема больше не будет возникать у других прокси.
     
    Цитировать   Имя
     
    Max Carrara
    Guest
    #17
    0
    04.03.2024 15:39:00
    Версия 2 патча недавно была влита — исправление скорее всего появится в пакете proxmox-backup-server версии 3.1.5-1 или новее. В сообщении коммита есть куча дополнительной информации, если интересно. Удачного проксирования!
     
    Цитировать   Имя
     
    McTwist
    Guest
    #18
    0
    04.03.2024 15:56:00
    Это отличные новости! Кто бы мог подумать, что такое простое, хоть и небольшое исправление вызовет такую долгую гонку за правильным решением — на это ушло почти 9 месяцев, прежде чем всё наконец было сделано как надо. Я очень впечатлён вашей работой и всей помощью, которую оказали другие.
     
    Цитировать   Имя
     
    Страницы: 1
    Ответить
    Читают тему
    BBCode   Правила
    Форма ответов
    Текст сообщения*
    Перетащите файлы
    Ничего не найдено
    Файл
    Загрузить картинки
    #name# #size#
     
    #name#
    Файлы:
    Перетащите один или несколько файлов в эту область
    или выберите файл на компьютере
    Файлы:
    Загрузить файлы
     
    +7 (495) 320-70-49
    info@proxmox.su

    Конфиденциальность Оферта
    © 2025 Proxmox.su
    Главная Каталог 0 Корзина 0 Избранные 0 Сравнение Акции Контакты Услуги Бренды Отзывы Компания Лицензии Документы Реквизиты Поиск Блог Обзоры