#nginx #reverse-proxy
#nginx #обратный прокси-сервер
Вопрос:
Итак, у меня есть файл, доступный для моих сайтов, настроенный следующим образом:
location / {
proxy_pass http://localhost:3000/;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
location /legacy/ {
proxy_pass https://my.domain.com/;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host https://my.domain.com/;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_cache_bypass $http_upgrade;
}
Однако всякий раз, когда я захожу в my.domain.com/leagcy / Я получаю сообщение об ошибке 400 напрямую обратно, и перенаправление или проксирование не происходит. Есть идеи относительно того, что я сделал неправильно?
Комментарии:
1. Попробуйте удалить
proxy_set_header Host https://my.domain.com/;
2. похоже, это сработало частично, теперь, похоже, как бы меняет прокси, но все относительные ссылки имеют значение 404
3. и когда я пытаюсь попасть в конечную точку API, я все равно получаю 400
Ответ №1:
Вероятно, вы используете регулярные выражения в server_name
и отправляете запросы, не устанавливая Host
для заголовка какое-либо значение.
$host
переменная содержит в этом порядке приоритета: имя хоста из строки запроса, или имя хоста из поля заголовка запроса ‘Host’, или имя сервера, соответствующее запросу
Что приводит Host
к отправке недопустимого заголовка в восходящий поток.