NGNIX Loader balancer + SSL в Docker


16.10.2018

Настройка NGNIX в качестве балансировщика нагрузки. Используем Docker.

Пулим образ nginx:


$ sudo docker pull nginx

Запускаем, если хочется побаловаться, как простой HTTP сервер:


$ sudo docker run --name docker-nginx -p 8888:80 -v /var/docker-nginx/html:/usr/share/nginx/html -v /var/docker-nginx/conf.d:/etc/nginx/conf.d -d nginx

В папке /var/docker-nginx/html создаем файл index.html

Впапке var/docker-nginx/conf.d создаем файл example.conf:


server {
  listen         80 default_server;
  listen         [::]:80 default_server;
  server_name    localhost localhost.com;
  root           /usr/share/nginx/html;
  index          index.html;
  try_files $uri /index.html;
}

Перезапускаем:


$ sudo docker restart docker-nginx

После чего в браузере проверяем: http://localhost:8888 После экспериментов прибиваем контейнер.

NGNIX Loader balancer + SSL

В папке var/docker-nginx/conf.d:

файл backend.conf:


upstream backend {
  server 192.168.1.84:8888 weight=10 max_fails=1 fail_timeout=30s;
  server 192.168.1.84:8889 weight=5 max_fails=1 fail_timeout=30s;
  server 192.168.1.84:8890 backup;

  # Send visitors back to the same server each time.
  #ip_hash;
}

#weight - веса
#fail_timeout - время, которое приложение считается упавшим если случилось max_fails фэйлов
#backup - резервный сервер. получает запросы только когда все залегли

server {
  location / {
    proxy_pass http://backend;
    proxy_connect_timeout 5s;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;
  }
}

файл backend_ssl.conf:



server {
  listen 443 http2 ssl;
  listen [::]:443 http2 ssl;
  server_name backend;
  ssl_certificate /etc/nginx/conf.d/nginx.crt;
  ssl_certificate_key /etc/nginx/conf.d/nginx.key;
  ssl_dhparam /etc/nginx/conf.d/dhparam.pem;

  location / {
    proxy_pass http://backend;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;
  }
}

В этой же папке лежат файлы: dhparam.pem, nginx.crt, nginx.key. Они заранее сгенерячены для тестов (самоподписанные):


sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /var/docker-nginx/conf.d/nginx.key -out /var/docker-nginx/conf.d/nginx.crt
sudo openssl dhparam -out /var/docker-nginx/dhparam.pem 2048

Запускаем Nginx в контейнере с пробросом двух портов (можно один)


sudo docker run --name docker-nginx -p 8888:80 -p 8443:443 -v /var/docker-nginx/html:/usr/share/nginx/html -v /var/docker-nginx/conf.d:/etc/nginx/conf.d -d nginx

Cтучим:
http://backend:8888
или
https://backend:8443

Успехов.

Дивись також:

Web-dev склерозник
Коментарі:
Jekas говорить:
22.10.2018 19:42
Здравствуйте, как с Вами можно связаться? Нужно Ваша помощь. Загорелся идеей: определение положения предмета с отрисовкой трека, т.е. визуально наблюдать изменение положения предмета в пространстве с отрисовкой на временной шкале(трек).

andre говорить:
23.10.2018 07:10
Пишите по адресу: [email protected]

Додати коментар
Code
* - обов'язкові поля

Архіви