#nginx #proxy
#nginx #прокси
Вопрос:
у меня простая проблема
- настройка балансировщика нагрузки с использованием nginx для 6 вышестоящих серверов
я сделал это
вышестоящие hisservers {
ip_hash;
сервер A;
сервер B;
сервер C;
сервер D;
сервер E;
сервер F; }сервер {
прослушивание 80;
имя_сервера test.server;
location / {
proxy_set_header X-Forwarded-Host $host:$server_port;
proxy_set_header X-Forwarded-Сервер $хост;
proxy_set_header X-Forwarded-Для $proxy_add_x_forwarded_for;
proxy_pass http://hisservers ;
} }
но проблема в том, что … приведенное выше решение не перезаписывает заголовок местоположения в ответе .. поэтому я всегда перенаправляю на любой из этих 6 восходящих потоков
затем я сделал это
proxy_redirect http://hisservers /;
тем не менее, это не работает, наконец, я сделал это
proxy_redirect http://A / /;
proxy_redirect прокси-сервер http://B / /;
proxy_redirect прокси-сервер http://C / /;
proxy_redirect прокси-сервер http://D / /;
proxy_redirect прокси-сервер http://E / /;
proxy_redirect прокси-сервер http://F/ /;
и это работает..
я думал, что nginx по умолчанию будет соответствовать восходящим потокам и перезаписывать заголовок местоположения..
любые советы по этому поводу..
я думаю, что мое решение довольно хакерское
Ответ №1:
Каждый из ваших серверов возвращает разные имена хостов в своих заголовках ответов о местоположении, и поэтому ваши proxy_redirect
операторы должны соответствовать этим именам хостов.
Вы можете сопоставить каждое имя хоста, используя отдельные proxy_redirect
операторы, как вы продемонстрировали в конце своего вопроса.
В качестве альтернативы, proxy_redirect
позволяет использовать регулярные выражения. Подробности см. В Этом документе.
Например:
proxy_redirect ~*http://[^/] (/.*)$ $1;
Приведенное выше утверждение должно заменить шесть утверждений в конце вашего вопроса. [^/]
Выражение соответствует любому имени хоста, и (/.*)$
выражение фиксирует URI, который будет использоваться при замене.
Комментарии:
1. отлично! спасибо за отзыв .. я думаю, что nginx автоматически обработает заголовок перезаписи