@Rentable
Инженер

Почему пропадают HTTP Headers при редиректе nginx?

Имеется контроллер и куча клиентов с датчиками. Все клиенты подключаются к контроллеру по адресу old-site.ru
Стали поступать датчики, которые подключаются к контроллеру уже по новому адресу new-site.ru, а адрес контроллера пока никто не собирается менять, т.к. не знают как.
Сразу пришла в голову мысль новые датчики направить на сервер с nginx, где организовать редирект с new-site.ru на old-site.ru. Вроде ничего сложного, но возникли проблемы.

Контроллеру важно наличие http заголовков:
x-citron-mac : aa:33:99:ff:11:dd
Host : old-site.ru


При отсутствии этих заголовков или несоответствии, датчик выдаёт у себя в консоли:
[NETWORK] >> Error: void QtvDataStorageLoaderPrivate::_q_networkReplyFinished() parsing error in "http://new-site.ru/auth?mac=aa:33:99:ff:11:dd&Ver=334.15&ip=192.168.10.33" : "Start-end tags mismatch"


При успехе датчик должен получить какой то xml файлик от контроллера...
При анализе логов nginx поняли, что заголовки http не передаются, а в заголовок Host подставляется new-site.ru, разумеется, контроллер ничего не выдаёт и блокирует такие запросы.

Настройки редиректа на nginx перепробовали все, какие только можно, ничего не помогает
server {
listen 192.168.1.3:80;
server_name new-site.ru;
#rewrite ^/(.*)$ http://old-site.ru/$1 permanent;
#rewrite ^/(.*)$ http://old-site.ru$1 permanent;
#return 302 http://old-site.ru$request_uri;
#return 301 $scheme://old-site.ru$request_uri;
return 301 http://old-site.ru$/request_uri;
#rewrite ^ $scheme://old-site.ru.net;
}


Подскажите, возможно надо какие то особые параметры в настройках редиректа nginx использовать?
  • Вопрос задан
  • 485 просмотров
Решения вопроса 1
ky0
@ky0 Куратор тега Nginx
Миллиардер, филантроп, патологический лгун
Сделайте обратное проксирование, а не редирект. И заголовок подставьте бэкенду:
proxy_set_header Host old-site.ru;
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы