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
bme280 bmp280 gps mpu-6050 options stm32 ssd1331 ssd1306 eb-500 3d-printer soldering tim mpu-9250 dma watchdog piezo exti web raspberry-pi docker ngnix solar bluetooth foc html css brushless flask dc-dc capture gpio avr rs-232 mpx4115a atmega mongodb st-link barometer pwm nvic git java-script programmator dht11 hih-4000 pmsm encoder max1674 smd sensors rtc adc lcd motor timer meteo examples i2c usb flash sms rfid python esp8266 servo books bldc remap eeprom bkp battery ethernet uart usart displays led websocket nodemcu wifi
Архіви