Отправимся в путешествие-обзор по корпоративному мессенджеру eXpress . Пройдемся по основным функциям, доступным платформам и приоткроем тайны роадмапа на ближайший год.
Модели установки
Использовать eXpress можно на публичном сервере – все основные возможности будут доступны.
Но для компаний мы предлагаем on-premise модель. Установка внутри своей инфраструктуры подходит и небольшим организациям, и крупным корпорациям. Серверов можно поставить неограниченное количество, в зависимости от масштаба.
Коротко о платформах
Приложение для смартфона можно скачать в App Store, Google Play или Huawei App Gallery. Если мессенджер нужен на большом экране – eXpress доступен в вебе, есть клиенты для Windows, Mac, Linux и Ubuntu.
Разницы в возможностях eXpress в мобильном и десктопном варианте нет. Разные версии можно использовать в зависимости от того, где пользователю нужно поработать, и какое устройство у него с собой.
Пара слов об интерфейсе
Приложение открывается сразу в пространстве с чатами и каналами. Перейти в другие разделы можно с помощью кнопок на панели слева (или внизу, если eXpress открыт на смартфоне).
Viplex Express — руководство по работе с программой для контроллеров Taurus Novastar (Т/TB )
Что там есть:
- Чаты
- Контакты
- Звонки и конференции
- Настройки
- Окно бизнес-приложений Smart Apps
Пространство “Чаты”
Эта та самая кнопка “мессенджер”, которая дает возможность общаться в привычных чатах. Пройдемся по основным функциям.
Чаты
Пользователям доступно неограниченное количество личных и групповых чатов. Здесь никаких сюрпризов: можно отправлять сообщения, файлы и (простите) отправлять голосовые сообщения.
У каждого сообщения есть контекстное меню. Отредактировать, скопировать, переслать, удалить (для всех участников чата) его можно так же, как и в привычных мессенджерах.
В eXpress, кстати, есть и разметка текста. Если не хватало акцентов или списков, то не благодарите. Все, что нужно для форматирования, всего с помощью пары символов.
В меню личного чата можно начать звонок, в меню группового – конференцию и, при необходимости, настроить участников встречи. Поиск сообщений по чату – тоже здесь.
Если нужны исчезающие сообщения – они в меню. В eXpress это называется режим повышенной конфиденциальности. Он активируется прямо в чате (новый не создается) и предлагает все то же самое, что и привычные секретные чаты. Автоматическое удаление сообщений по таймеру после прочтения или отправки, контроль снимков экрана, записи видео или копирования текста в буфер обмена.
Каналы
Каналы, как и чаты, знакомы каждому, кто пользуется мессенджерами на постоянной основе.
Ограничений по их использованию нет – сообщайте команде о важных событиях в компании или просто делитесь мемами для хорошего настроения.
Теги
Теги в eXpress помогают навести порядок в рабочем пространстве. Присвоить тег можно отдельным сообщениям или контактам и чатам, чтобы, например, сгруппировать информацию по проектам.
Экспресс обучение по Notion с нуля | ПРОДУКТИВНОСТЬ ДЛЯ ЧАЙНИКОВ
С их помощью можно в пару кликов добавить десятки участников в чат или конференцию. А еще в несколько кликов сделать меншен сразу нескольких пользователей в чате.
Тег, прикрепленный к сообщению, позволит быстро найти его в потоке рабочих чатов. Об этом буквально в следующем пункте.
У тегов есть еще одна полезная функция – возможность отключить уведомления для группы контактов, объединенных одним тегом. Если хотите отдохнуть от коллег, идите в настройки и делайте как мы.
Поиск
Строка над списком чатов отвечает за быстрый поиск информации. Начните вводить название группового чата, канала или контакта, чтобы найти то, что нужно в рабочем пространстве.
Искать можно и по тегам – сообщения, контакты, чаты. В общем, все, чему был присвоен предустановленный или произвольный тег.
Пространство “Контакты”
Без книги контактов общаться в мессенджере было бы невозможно. У нас их целых две: личная и корпоративная.
С личной все понятно – там хранятся пользователи, чьи номера телефона сохранены в памяти вашего устройства. Корпоративная книга дает немного больше возможностей – чтобы начать общаться, никакие личные данные не нужны.
Достаточно ввести в строку поиска имя и фамилию, должность, название отдела или компании. Если пользователь зарегистрирован на вашем корпоративном сервере (или на другом сервере, который объединен с вашим доверенными отношениями), он найдется.
Искать можно и по тегам. Если необходимо найти участников определенного проекта, и они при этом из разных отделов (или даже компаний) – это то, что нужно.
Пространство “Звонки и конференции”
Классические аудио- и видеозвонки один на один никого не удивляют – они есть в каждом консьюмерском мессенджере. В работе без звонков тоже не обойтись, поэтому они есть и в eXpress.
Видеоконференции как в Zoom, только без таймера
Если онлайн-встречи вы собираете в Zoom, постоянно переключаетесь между приложениями и терпите 45-минутный лимит, можете выдохнуть. Больше не придется.
В eXpress мы сделали полноценные видеоконференции. Встречу можно запланировать на определенное время, добавить участников, добавить событие в календарь и отправить приглашения на электронную почту. Ограничений по времени нет – проводите совещания, как привыкли.
Есть и мгновенные конференции – при ее создании ссылка на встречу автоматически копируется в буфер обмена. Достаточно отправить ее любому пользователю, и начинать общаться.
Для регулярных совещаний подходят виртуальные комнаты. Это бессрочные конференции, которые не исчезают из списка встреч после завершения. Настроить их можно так же в разделе планирования.
Окно приложений Smart Apps
До этого момента наш обзорный тур по eXpress касался только возможностей общения. Мессенджер и видеоконференции – это прекрасно, но для полноценной мобильной работы этого недостаточно.
Сотрудникам еще нужны:
Над такими приложениями мы как раз работаем. Для компаний окно приложений – важный инструмент мобильной работы.
Защита информации
Вопрос, насколько безопасно общаться в мессенджере, актуален еще со времен приключений Эдварда Сноудена. В мессенджере для бизнеса тем более.
Что есть в eXpress:
- протокол end-to-end шифрования на эллиптических кривых собственной разработки;
- криптоконтейнер – все данные хранятся внутри приложения в зашифрованном виде;
- трехфакторная аутентификация по СМС, запись в корпоративном каталоге и личный пароль пользователя;
- шифрование TLS 1.3 и DTLS, секретные чаты (рассказывали о них выше), безопасные push-уведомления, контроль экспорта данных и многое другое;
- сертификат ФСТЭК.
Планы на будущее
Сейчас совершенствуем возможности видеоконференций – во встрече одновременно сможет принять участие 100 человек и более.
В ближайшие несколько месяцев закончим разработку веб-приложения для рабочей почты. Оно будет работать в том числе и без подключения к сети.
#мессенджер #корпоративнаякоммуникация #express #обзоры
Источник: dzen.ru
Обзор eXpress 2.14, российской защищённой корпоративной системы коммуникаций
Система коммуникаций eXpress 2.14 может быть развёрнута внутри ИТ-инфраструктуры организации, объединена с общей сетью обмена данными, проведения аудио- и видеоконференций, интегрирована с информационными системами различного назначения. Безопасность коммуникаций обеспечивается на всех уровнях взаимодействия. Система eXpress включена в реестр российского ПО и сертифицирована в системе ФСТЭК России.
Сертификат AM Test Lab
Номер сертификата: 375
Дата выдачи: 28.03.2022
Срок действия: 28.03.2027
- Введение
- Функциональные возможности системы eXpress
- Архитектура системы eXpress
- 3.1. Схема взаимодействия
- 3.2. Механизмы защиты
- 3.2.1. Разграничение доступа
- 3.2.2. Идентификация и аутентификация
- 3.2.3. Формирование ключей внешних пользователей
- 3.2.4. Формирование ключей корпоративных пользователей
- 3.2.5. Защита взаимодействия типа «пользователь — пользователь»
- 3.2.6. Защита взаимодействия типа «пользователь — сервер» («сервер — пользователь»)
- 3.2.7. Защита взаимодействия типа «сервер — сервер»
- 3.2.8. Защита хранимых данных
- 4.1. Аппаратные требования
- 4.2. Требования к программному обеспечению
- 4.2.1. Операционная система
- 4.2.2. Программное обеспечение для автоматизации развёртывания приложений и управления ими
- 4.2.3. Программное обеспечение синхронизации времени
- 5.1. Создание учётных записей пользователей с помощью консоли администратора
- 5.2. Подключение непривилегированного сотрудника к корпоративной системе коммуникаций
- 5.3. Создание административной группы с ограниченным набором прав доступа
- 5.4. Подключение сотрудника из группы администраторов к корпоративной системе коммуникаций
- 5.5. Включение режима повышенной конфиденциальности (стелс-режим)
Введение
Текущая ситуация на отечественном рынке ИТ и ИБ беспрецедентна: большое количество внешних атак, уже названное «киберштормом», сильнейшее санкционное давление со стороны западных государств, ограничения работы иностранных вендоров. Многие компании остаются без привычных инструментов, что существенно стимулирует рынок российских разработок, за последние годы шагнувший далеко вперёд. Внедрение отечественных сервисов становится жизненной необходимостью как для государственных структур, так и для бизнеса. Особенно актуален этот вопрос в секторе корпоративных коммуникаций: активно обсуждаемые приостановка или ограничение работы зарубежных мессенджеров, удаление данных российских пользователей по сценарию Slack и риски блокировок популярных сервисов вынуждают искать решения, которые обеспечат надёжный доступ к коммуникационным сервисам в режиме 24×7. Циркулирующие в мессенджерах данные (сообщения, вложения, аудио- / видеопотоки) могут содержать информацию ограниченного распространения, что требует обеспечения её конфиденциальности и целостности.
Эксперты в области информационной безопасности рассматривают различные решения, обеспечивающие с одной стороны необходимый объём коммуникаций, а с другой — высокий уровень защищённости. Однако в регулярно публикуемых сравнениях вновь фигурируют решения принадлежащие зарубежным компаниям из Австралии, Британии, Германии, США, Швейцарии и др.
В условиях текущего кризиса возможность полноценного безопасного использования таких сервисов вызывает сомнения. Между тем, на российском рынке существуют проверенные отечественные решения, давно используемые крупнейшими российскими корпорациями. Эти сервисы обладают богатыми коммуникационными возможностями и имеют в своём составе встроенные механизмы защиты информации. К таким решениям относится система коммуникаций «Express» от ООО «Анлимитед Продакшен» (регистрационный № 5745 от 20.09.2019 г. в Едином реестре российских программ для электронных вычислительных машин и баз данных).
Функциональные возможности системы eXpress
Защита коммуникаций и конфиденциальность передаваемых данных обеспечиваются с помощью нескольких ключевых возможностей платформы:
- Принцип криптоконтейнера.
- Трёхслойное сквозное (end-to-end) шифрование.
- Хранение информации на серверах в зашифрованном виде.
- Электронная подпись сообщений и контроль их целостности.
- Функция переписки с ограниченным временем хранения сообщений: они удаляются либо по истечении установленного периода, либо сразу после прочтения.
- Уничтожение корпоративной информации из приложения eXpress на смартфоне пользователя, например, при увольнении сотрудника.
Интерфейс клиентских приложений eXpress интуитивно понятен и позволяет новому пользователю быстро сориентироваться и начать работу.
Что касается классических функций мессенджера, то в eXpress доступны:
- Обмен текстовыми сообщениями и файлами различного формата.
- Голосовые вызовы.
- Видеозвонки, в том числе групповые на 30 активных участников включительно.
- Групповые чаты и каналы. Необходимо отметить, что администратор может сделать доступными для нового участника чата или канала те сообщения, которые передавались ранее, до его присоединения.
Пользователи eXpress могут выстроить каналы коммуникаций как внутри одной организации, так и с представителями иных компаний и ведомств, использующих в работе рассматриваемую систему. Такая возможность обеспечивается т. н. федеративной структурой построения системы eXpress. Каждая организация может установить в своей инфраструктуре любое количество корпоративных серверов и связать их в единую сеть. Установка клиентского приложения (как мобильного варианта, так и настольной версии) не вызывает технических сложностей.
Адресные книги корпоративных пользователей предоставляются только тем лицам, кто подключён к соответствующим корпоративным серверам системы eXpress. Существует возможность установки доверительных отношений между корпоративными серверами разных организаций, что позволяет сотрудникам этих компаний или ведомств взаимодействовать между собой. В остальных случаях пользователи «видят» друг друга, если в адресных книгах мобильных устройств указаны их номера телефонов, но доступ к корпоративным адресам при этом исключён.
Платформа BotX, предназначенная для создания ботов, и платформа разработки приложений eXpress Smart Apps позволяют выполнить интеграцию системы eXpress с различными корпоративными сервисами. В частности, доступны специальные боты и приложения внутри eXpress для интеграции с системами электронного документооборота, кадровыми и финансовыми комплексами, механизмами ИТ-мониторинга и пр.
Архитектура системы eXpress
Схема взаимодействия
Система eXpress включает в себя серверные компоненты и приложения. Различаются серверные компоненты регионального уровня (RTS-серверы), уровня предприятия (ETS-серверы) и корпоративного уровня (CTS-серверы). Для взаимодействия пользователей системы eXpress с серверными компонентами предусмотрены мобильные, настольные и веб-приложения.
Основное назначение CTS-сервера — обслуживание пользователей одной организации (корпоративной сети). Если организация имеет территориально распределённую структуру (две и более корпоративных сетей), возможна установка ETS-сервера. В этом случае ETS-сервер объединяет несколько CTS-серверов. CTS-серверы могут быть развёрнуты в виде единого (т. н. Single CTS) или разделённого (т. н. Front CTS и Back CTS) сервера eXpress. Допускается использование как аппаратной платформы, так и виртуальной.
Объединение сетей различных организаций в рамках одного региона обеспечивают RTS-серверы, которые, в свою очередь, соединяясь с головными серверами системы eXpress, обеспечивают возможность взаимодействия всех зарегистрированных пользователей. Головные серверы для отечественных компаний размещаются на территории Российской Федерации.
Обобщённая схема взаимодействия серверных компонентов системы eXpress представлена на рисунке 1.
Рисунок 1. Схема взаимодействия серверных компонентов системы eXpress
Система eXpress предоставляет пользователям возможность подключаться напрямую ко всем трём видам серверов.
Поддержка голосовых вызовов обеспечивается т. н. серверами STUN/TURN, VoEx. Они могут быть как отдельно установленными, так и совмещёнными с CTS-, RTS- или ETS-серверами. Поэтому на представленной выше схеме взаимодействия (рис. 1) они явно не выделены (условно полагается, что была выполнена их совместная установка).
В системе eXpress выделяют внешний и внутренний контуры.
Основу внешнего контура составляет RTS-сервер. Именно в нём происходит первичная регистрация пользователей, которые не имеют отношения к какой-либо организации. Для взаимодействия с / между такими пользователями тоже используются средства внешнего контура.
CTS-сервер или совокупность CTS- и ETS-серверов образуют внутренний контур. Такая вариативность позволяет выделить в нём контур предприятия, объединяющий несколько ETS-серверов, и корпоративный контур.
Как в контуре предприятия, так и в корпоративном контуре предусматривается собственная регистрация пользователей. Таким образом, учётная запись пользователя делится на несколько профилей, которые привязаны ко своим серверам (RTS, ETS, CTS). Каждый профиль в зависимости от того, к какому серверу он привязан, содержит определённую информацию о пользователе, историю сообщений и список контактов. Профиль RTS-сервера содержит личную информацию и хранит переписку со внешними контактами, CTS- и ETS-профили — корпоративную.
Пользователи одной корпоративной сети обмениваются сообщениями через свой CTS-сервер. Пользователи разных корпоративных сетей взаимодействуют между собой через ETS-сервер. Система eXpress предоставляет возможность определения доверенных отношений между серверами. В этом случае пользователи одной корпоративной сети могут взаимодействовать с пользователями другой корпоративной сети напрямую, минуя связывающий их ETS-сервер. Аналогичным образом можно настраивать доверенные отношения между ETS-серверами, что позволит обеспечить взаимодействие их пользователей минуя связующий RTS-сервер.
Обобщённая схема системы eXpress с выделением внешнего и внутреннего контуров представлена на рисунке 2.
Рисунок 2. Внешний и внутренний контуры системы eXpress
Механизмы защиты
Согласно действующему сертификату ФСТЭК России № 4232, автоматизированное средство коммуникаций Express версии 1 имеет встроенные средства защиты от несанкционированного доступа к информации, которая не содержит сведений составляющих государственную тайну. Эти средства защиты реализуют функции идентификации, аутентификации и управления доступом.
Корректность встраивания алгоритмов шифрования подтверждена в ходе аудита компанией «КриптоПро».
Разграничение доступа
В зависимости от того, в сервере какого контура осуществлена регистрация пользователя системы eXpress, различают учётные записи внешних и внутренних пользователей. Каждой учётной записи пользователя назначается роль. Сопоставление ролей и прав доступа представлено в таблице 1.
Таблица 1. Состав ролей в системе eXpress
Наименование роли
Тип учётной записи
Права доступа
- назначение ролей;
- просмотр журнала безопасности;
- управление чатами;
- управление учётными записями пользователей;
- подключение чат-ботов;
- управление настройками системы
Источник: www.anti-malware.ru
1. Как повысить производительность и надёжность Express.js
Установив переменную окружения NODE_ENV , вы примерно трёхкратно увеличите производительность. В терминале это можно сделать следующим образом:
1.5. Обработка ошибок и исключений
При использовании в коде Async/Await для обработки ошибок и исключений рекомендуется применять операторы try-catch , а также использовать для ведения журнала ошибок Express logger.
В чем прелесть – это всего лишь одна строка кода. Добавьте ее в файлик app.js .
2.1. Чистые функции
Чистые функции – это функции, которые не изменяют внешнее состояние. Они принимают параметры, что-то делают с ними и возвращают значение.
Вместо использования var , применяйте только const и полагайтесь на чистые функции для создания новых объектов вместо изменения существующих. Это связано с использованием функций высокого порядка в JavaScript, например .map() , .reduce() , .filter() и т. д.
2.2. Параметры объекта
JavaScript – слабо типизированный язык. В вызов функции может быть передан один или несколько параметров. Даже если объявление функции имеет фиксированное число определенных аргументов. Этот огрех можно решить, используя объекты в качестве параметров функции.
const foo = (< param1, param2, param3 >) => < if (!(param1 param2 param3)) < throw Error(‘Invalid parameters in function: foo.’) >const sum = param1 + param2 + param3 return sum > foo(< param1: 5, param2: 345, param3: 98 >) foo(< param2: 45, param3: 57, param1: 81 >)
Все эти вызовы функций будут работать одинаково. Вы можете принудительно указать имена параметров, при этом вы не связаны порядком, что значительно упрощает управление.
2.3. Тестирование
Используйте что-нибудь простое, например, Mocha и Chai. Mocha – это фреймворк для тестирования, а Chai – assertion библиотека.
Установите npm пакеты:
npm i mocha chai
Давайте потестим функцию. В test.js добавьте следующее:
const chai = require(‘chai’) const expect = chai.expect const foo = require(‘./src/foo’) describe(‘foo’, function () < it(‘should be a function’, function () < expect(foo).to.be.a(‘function’) >) it(‘should take one parameter’, function () < expect( foo.bind(null, < param1: 5, param2: 345, param3: 98 >)) .to.not.throw(Error) >) it(‘should throw error if the parameter is missing’, function () < expect(foo.bind(null, <>)).to.throw(Error) >) it(‘should throw error if the parameter does not have 3 values’, function () < expect(foo.bind(null, < param1: 4, param2: 1 >)).to.throw(Error) >) it(‘should return the sum of three values’, function () < expect(foo(< param1: 1, param2: 2, param3: 3 >)).to.equal(6) >) >)
Добавьте это в package.json :
«scripts»:
Теперь запустим тесты, выполнив следующую команду в терминале:
npm test
Выведется примерно такое:
3. Использование DevOps-инструментов
3.1. Управление переменными среды в Node.js с dotenv
Dotenv – это модуль npm, позволяющий загружать переменные среды в любое Node.js приложение. В корне вашего проекта создайте .env файл. Здесь вы добавите все необходимые переменные окружения.
NODE_ENV=production DEBUG=false LOGS_TOKEN=xxx-yyy-zzz MONITORING_TOKEN=xxx-yyy-zzz INFRA_TOKEN=xxx-yyy-zzz .
Загрузка файл проста. В верхней части app.js разместите dotenv:
// dotenv вверху require(‘dotenv’).config() // другие агенты const < stLogger, stHttpLoggerMiddleware >= require(‘sematext-agent-express’) // требуется express и создать экземпляр приложения const express = require(‘express’) const app = express() app.use(stHttpLoggerMiddleware) .
Dotenv по умолчанию загружает файл с именем .env . При необходимости прочитайте руководство по настройке нескольких dotenv-файлов.
3.2. Перезапуск приложения с помощью Systemd
Systemd – часть строительных блоков ОС Linux. Он запускает и управляет системными процессами. Вам нужно запустить Node.js процесс, как системную службу, чтобы он восстанавливался после сбоев.
На виртуальной машине или сервере создайте новый файл в разделе /lib/systemd/system/ :
# /lib/systemd/system/fooapp.service [Unit] Description=Node.js as a system service. Documentation=https://example.com After=network.target [Service] Type=simple User=ubuntu ExecStart=/usr/bin/node /path/to/your/express/project/server.js Restart=on-failure [Install] WantedBy=multi-user.target
Две важные строки в этом файле – ExecStart и Restart. ExecStart запустит ваш server.js с помощью бинарника /usr/bin/node (обязательно проверяйте абсолютный путь к файлу server.js ). Функция Restart=on-failure перезапустит приложение, если оно «обвалится».
После сохранения fooapp.service , перезагрузите демона и запустите скрипт.
systemctl daemon-reload systemctl start fooapp systemctl enable fooapp systemctl status fooapp
3.3. Перезапуск приложения с помощью PM2
PM2 существует уже несколько лет. Эти ребята используют специальный кастомный скрипт, управляющий и запускающий server.js . Он проще в настройке, но обременён другим Node.js- процессом, выступающим в качестве Master-процесса и менеджера для вашей Express.js.
Сначала нужно установить PM2:
npm i -g pm2
Затем запустите приложение, выполнив следующую команду в корневом каталоге Express-проекта:
pm2 start server.js -i max
Флаг -I max гарантирует, что приложение будет запущено в кластерном режиме, создавая столько воркеров, сколько есть ядер у CPU.
4. Балансировка нагрузки и обратный прокси
4.1. Балансировка нагрузки с помощью кластерного модуля
Встроенный модуль Node.js позволяет создавать рабочие процессы, обслуживающие ваше приложение. Он основан на реализации child_process и прост в настройке. Вам нужно лишь добавить файл cluster.js и вставить в него следующий код:
const cluster = require(‘cluster’) const numCPUs = require(‘os’).cpus().length const app = require(‘./src/app’) const port = process.env.PORT || 3000 const masterProcess = () => Array.from(Array(numCPUs)).map(cluster.fork) const childProcess = () => app.listen(port) if (cluster.isMaster) < masterProcess() >else < childProcess() > cluster.on(‘exit’, () => cluster.fork())
Когда вы запустите cluster.js c нодой cluster.js , модуль кластера обнаружит, что он работает как Master-процесс и вызовет функцию masterProcess() . Она подсчитает, сколько процессорных ядер имеет сервер, и вызовет cluster.fork() . Все эти процессы выполняются на одном и том же порту. Подробнее об этом читайте в официальном хелпе.
Слушатель событий cluster.on(‘exit’) перезапустит рабочий процесс, если он завершится неудачей.
Теперь отредактируем поле ExecStart в приложении fooapp.service . Замените:
ExecStart=/usr/bin/node /path/to/your/express/project/server.js
ExecStart=/usr/bin/node /path/to/your/express/project/cluster.js
Перезагрузите Systemd и приложение fooapp.service :
systemctl daemon-reload systemctl restart fooapp
Вы добавили балансировку нагрузки в Express-приложение. Это будет работать только для single-server. Если необходимо несколько серверов – используйте Nginx.
4.2. Добавление обратного прокси с помощью Nginx
Одно из основных правил в работе с приложениями Node.js – не вешайте их на порты 80 и 443. Для перенаправления трафика используйте обратный прокси. Nginx – самый распространённый инструмент для достижения этой цели.
Установка Nginx довольно проста, для Ubuntu это будет выглядеть так:
apt update apt install nginx
Если у вас другая ОС, ознакомьтесь с инструкциями по установке Nginx.
Nginx должен стартовать сразу же, но на всякий случай проверьте:
systemctl status nginx [Output] nginx.service — A high performance web server and a reverse proxy server Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled) Active: active (running) since Fri 2018-04-20 16:08:19 UTC; 3 days ago Docs: man:nginx(8) Main PID: 2369 (nginx) Tasks: 2 (limit: 1153) CGroup: /system.slice/nginx.service ├─2369 nginx: master process /usr/sbin/nginx -g daemon on; master_process on; └─2380 nginx: worker process
Если не запустился – выполните эту команду:
systemctl start nginx
После запуска Nginx необходимо отредактировать конфиг, чтобы включить обратный прокси. Конфиг Nginx находится в каталоге /etc/nginx/ . Основной конфигурационный файл называется nginx.conf , но есть разные дополнения в каталоге etc/nginx/sites-available/ . Конфигурация сервера по умолчанию находится здесь и называется default.
Чтобы включить обратный прокси-сервер, откройте файл конфигурации по умолчанию и отредактируйте его следующим образом:
server < listen 80; location / < proxy_pass http://localhost:3000; #change the port if needed >>
Сохранитесь и перезапустите службу Nginx:
systemctl restart nginx
Эта настройка будет роутить весь трафик с порта 80 на ваше Express-приложение.
4.3. Кэширование в nginx
Кэширование важно для сокращения времени отклика ресурсов, которые редко изменяются.
http < upstream fooapp < server localhost:3000; server domain2; server domain3; . >. >
Откройте дефолтный конфиг и добавьте эти строки кода:
server < listen 80; location / < proxy_pass http://fooapp; >>
4.4. Gzip
В серверном блоке конфига добавьте следующие строки:
server < gzip on; gzip_types text/plain application/xml; gzip_proxied no-cache no-store private expired auth; gzip_min_length 1000; . >
Если нужно больше информации – читайте официальный хелп.
4.5. Включение кэширования на Redis
Redis – in-memory хранилище, которое часто используется в качестве кэша.
Установка на Ubuntu проста:
apt update apt install redis-server
Откройте файл /etc/redis/redis.conf и измените одну важную строку:
supervised no
supervised systemd
Перезапустите службу Redis:
systemctl restart redis systemctl status redis [Output] ● redis-server.service — Advanced key-value store Loaded: loaded (/lib/systemd/system/redis-server.service; enabled; vendor preset: enabled) Active: active (running) since Wed 2018-06-27 18:48:52 UTC; 12s ago Docs: http://redis.io/documentation, man:redis-server(1) Process: 2421 ExecStop=/bin/kill -s TERM $MAINPID (code=exited, status=0/SUCCESS) Process: 2424 ExecStart=/usr/bin/redis-server /etc/redis/redis.conf (code=exited, status=0/SUCCESS) Main PID: 2445 (redis-server) Tasks: 4 (limit: 4704) CGroup: /system.slice/redis-server.service └─2445 /usr/bin/redis-server 127.0.0.1:6379
Затем установите модуль redis для доступа к Redis из приложения:
npm i redis
Теперь вы можете начать кэшировать запросы. Рассмотрим пример:
const express = require(‘express’) const app = express() const redis = require(‘redis’) const redisClient = redis.createClient(6379) async function getSomethingFromDatabase (req, res, next) < try < const < id >= req.params; const data = await database.query() // Установим данные в Redis redisClient.setex(id, 3600, JSON.stringify(data)) res.status(200).send(data) > catch (err) < console.error(err) res.status(500) >> function cache (req, res, next) < const < id >= req.params redisClient.get(id, (err, data) => < if (err) < return res.status(500).send(err) >// Если данные существуют вернем кэшированное значение if (data != null) < return res.status(200).send(data) > // Если данные не существуют, идем в функцию getSomethingFromDatabase next() >) > app.get(‘/data/:id’, cache, getSomethingFromDatabase) app.listen(3000, () => console.log(`Server running on Port $`))
Этот код будет кэшировать ответ из БД в виде строки JSON в Redis в течение 3600 секунд. Вы можете изменить это в зависимости от требований.
Заключение
Идея этой статьи состояла в том, чтобы охватить лучшие практики, которых вы должны придерживаться и те, от которых следует держаться подальше.
Надеемся, что вам понравилось. Удачи в обучении!
Источник: proglib.io