#nginx #load-balancing
Вопрос:
У меня есть очень простая конфигурация балансировки нагрузки, настроенная для целей PoC. Мой сервер приложений 1 и сервер балансировщика нагрузки одинаковы.Ниже приведено содержимое моего файла load balncer conf. Пожалуйста, помогите мне это правильно?
На данный момент всякий раз, когда весь мой запрос поступает на IP1. Я ожидаю, что он также будет перенаправлять трафик на IP2 всякий раз, когда я нажимаю IP1, пожалуйста, исправьте, если это неверное понимание.
upstream myapp1 {
server srv1.example.com;
server srv2.example.com;
server srv3.example.com;
}
server {
listen 80;
location / {
proxy_pass http://myapp1;
}
}
Ответ №1:
Ваша конфигурация верна. Отправка нескольких запросов на ваш прокси-порт NGINX 80
приведет к балансировке трафика с помощью циклического перебора LB-алгоритма по умолчанию на один из ваших внутренних (восходящих) серверов.
Проверьте это: https://www.nginx.com/resources/wiki/start/topics/examples/loadbalanceexample/
http {
upstream myproject {
server 127.0.0.1:8080;
server 127.0.0.1:8081;
server 127.0.0.1:8082;
}
server {
listen 80;
server_name www.domain.com;
location / {
proxy_pass http://myproject;
}
}
}
Вы можете попробовать это из любой командной строки Linux
for ((i=1;i<=10;i )); do curl -v "http://localhost"; sleep 1; done
Это должно напечататься AppServer1, AppServer2, AppServer3
и снова начаться с 1.
Демо-серверная часть может выглядеть так
server {
listen 8080;
location / {
return 200 "AppServer1n";
}
}
server {
listen 8081;
location / {
return 200 "AppServer2n";
}
}
server {
listen 8082;
location / {
return 200 "AppServer3n";
}
}
Я только что протестировал новый контейнер nginx docker без каких-либо проблем.
Комментарии:
1. Спасибо @Timo Stark — я пропустил параметр имя_сервера в файле конфигурации. сейчас все выглядит хорошо.