Nginx — динамическое управление upstream

Если вы хотите динамически управлять upstream в nginx через API без перезагрузки и релоада, то вам поможет этот модуль.

Пример конфигурации upstream в nginx

upstream backends {
    zone zone_for_backends 1m;
    server 127.0.0.1:6001;
    server 127.0.0.1:6002;
    server 127.0.0.1:6003;
}

Пример настройка для доступа к API

server {
    listen 6000;
    location /dynamic {
	allow 127.0.0.1;
	deny all;
        dynamic_upstream;
    }
}

Пример вызова:

$ curl "http://127.0.0.1:6000/dynamic?upstream=zone_for_backends"

Ответ:

server 127.0.0.1:6001;
server 127.0.0.1:6002;
server 127.0.0.1:6003;

С помощью API вы сможете посмотреть список серверов в upstream, добавить, удалить, выключить, включить и изменить параметры сервера.
Более подробно можно посмотреть на странице проекта ngx_dynamic_upstream.

Бесплатный SSL сертификат — подключение Let’s Encrypt

Для перевода вашего сайта на HTTPS нам потребуется получить бесплатные сертификаты Let’s Encrypt и настроить их автообновление, т. к. сертификаты даются на 3 месяца.
У нас есть Ubuntu 16.04 и Nginx.
1 — Подключаем репозиторий с приложением Certbot и устанавливаем его

sudo add-apt-repository ppa:certbot/certbot
sudo apt-get update
sudo apt-get install python-certbot-nginx

2 — Получаем два сертификата для вашего сайта «example.com» с www и без

sudo certbot --nginx -d example.com -d www.example.com

3 — Перезапускаем Nginx
4 — Открываем cron

sudo crontab -e

и добавляем запуск автообновления сертификатов

0  0  1  *  *  certbot renew --dry-run

Отключение Deployment Scanner в Wildfly

Во время большой нагрузки на серверах приложений Wildfly может появляться ошибка:

ERROR [org.jboss.as.server.deployment.scanner] (DeploymentScanner-threads — 2) WFLYDS0012: Scan of /opt/wildfly/standalone/deployments threw Exception: java.lang.RuntimeException: WFLYDS0032: Failed to list files in directory /opt/wildfly/standalone/deployments. Check that the contents of the directory are readable.

Эта ошибка выскакивает тогда, когда wildfly не может прочитать содержимое папки deployments. По умолчанию, он пытается сделать это каждые 5 секунд.
Чтобы отключить этот сканер, нам потребуется провести некоторые действия:

/opt/wildfly/bin/jboss-cli.sh

Если у вас консоль работает на нестандартном порту, то далее необходимо сделать операцию connect

[disconnected /] connect localhost:9990

Проверяем состояние deployment scanner

[standalone@localhost:9990 /] /subsystem=deployment-scanner/scanner=default/:read-attribute(name=scan-interval)

{«outcome» => «success», «result» => 5000}

Отключаем автоматический запуск сканера

[standalone@localhost:9990 /] /subsystem=deployment-scanner/scanner=default/:write-attribute(name=scan-interval,value=-1)

{«outcome» => «success»}

Установка нескольких версий nodejs через nvm

Как поставить несколько версий nodejs на ubuntu / debian и переключаться между ними:
Устанавливаем git

sudo apt install git

Скачиваем скрипт для установки nvm

wget https://raw.githubusercontent.com/creationix/nvm/master/install.sh

Запускаем установку nvm

sh install.sh

Чтобы работало без перелогина, нужно выполнить команды

export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"

Как работать с nvm
Просмотр доступных версий nodejs для установки

nvm ls-remote

Выбираем и ставим нужную нам версию

nvm install v8.12.0

Можем установить еще одну или несколько версий

nvm install v10.10.0

Просмотр установленных и активной версии

nvm ls

Выбор активной версии

nvm use v8.12.0

Если во время установки nodejs выскачит ошибка:
can’t set the locale; make sure $LC_* and $LANG are correct
То она решается установкой locale

sudo dpkg-reconfigure locales

Я, обычно, выбираю вот эти: en_US.UTF-8, ru_RU.UTF-8, ru_RU.CP1251