NGNIX Loader balancer + SSL в Docker
Настройка 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
Успехов.
Дивись також:
- Справочник команд по Docker. Как поднять Swarm
- MongoDB Replica Set в Docker
- Справочник команд MongoDB
- Как настроить NGNIX Loader balancer + SSL в Docker
- Технология Push notifications. Как сделать на сайте
- Пример Websocket сервера и Websocket клиента. Пример простого чата на websocket
- Как использовать Memcached в Python
- Как использовать Radis в Python
Здравствуйте, как с Вами можно связаться? Нужно Ваша помощь. Загорелся идеей: определение положения предмета с отрисовкой трека, т.е. визуально наблюдать изменение положения предмета в пространстве с отрисовкой на временной шкале(трек).
Tags
web java-script bmp280 adc bldc stm32 rs-232 programmator 3d-printer flash pwm sms motor docker raspberry-pi meteo gps ngnix bme280 timer ssd1331 mpu-6050 bkp battery rfid st-link tim mpx4115a ssd1306 encoder atmega pmsm wifi options rtc examples nvic soldering mongodb esp8266 books lcd foc flask barometer bluetooth ethernet brushless uart watchdog servo gpio solar git remap dma usart eb-500 smd nodemcu sensors displays html python capture dht11 led i2c eeprom piezo exti websocket max1674 usb dc-dc avr hih-4000 css mpu-9250
Архіви