1. Определение NGINX
2. Установите NGINX
3. Установите веб-приложение NodeJS (Express)
4. Внедрить резервный прокси-сервер
5. Внедрение ограничения скорости запроса
Что такое Nginx?
Как объяснялось выше, Nginx — это веб-сервер с открытым исходным кодом, преимущество которого заключается в том, что производительность вашего сайта выглядит более сложной и мощной. Одним из преимуществ Nginx является то, что его легко настроить.
Nginx — это веб-сервер, который был впервые выпущен в октябре 2004 года выходцем из России Игорем Сысоевым. Изначально Nginx функционировал только как HTTP веб-сервис.
Установите NGINX в Linux
Я буду использовать команды, приведенные ниже, с реализацией на Ubuntu 22.04 LTS
sudo apt-get update
sudo apt-get install nginx -y
Установите веб-приложение NodeJS (Express)
Сначала создайте каталог, а затем установите в него модуль node_module
sudo su -
mkdir radenfebri
cd radenfebri
Используйте команду npm init для создания package.jsonfile для вашего приложения. Для получения дополнительной информации о том, как работает package.json, смотрите раздел Особенности работы с package.json npm.
npm init
Эта команда запрашивает у вас некоторые данные, например, имя и версию вашего приложения. На данный момент вы можете просто нажать RETURN, чтобы принять значения по умолчанию для большинства из них, за следующими исключениями:
entry point: (index.js)
Введите app.js или любое другое имя основного файла. Если вы хотите, чтобы это был index.js, нажмите RETURN, чтобы принять предложенное по умолчанию имя файла.
Теперь установите Express в каталог myappdirectory и сохраните его в списке зависимостей. Например:
npm install express
Чтобы временно установить Express и не добавлять его в список зависимостей:
npm install express --no-save
Чтобы попытаться создать паутину, создайте файл с помощью приведенной ниже команды:
touch app.js
В этом руководстве я запускаю веб-приложение Express, используя порт 8000, вы можете отредактировать его в разделе app.js, отредактируйте его, как показано в документации ниже:
const express = require('express')
const app = express()
const port = 8000
app.get('/', (req, res) => {
res.send('Hello World!')
})
app.listen(port, () => {
console.log(`Example app listening on port ${port}`)
})
Следующий шаг — запустить приложение, набрав приведенную ниже команду:
node app.js
Реализация резервных доверенностей
Войдите в каталог /etc/nginx/sites-available/default и затем настройте, в дальнейшем доступ к приложению будет осуществляться через порт 3000, и этот порт 3000 будет обращаться к порту 8000 на localhost. Более или менее конфигурация, как указано ниже:
sudo nano /etc/nginx/sites-available/default
server {
listen 3000 default_server;
listen [::]:3000 default_server;
root /var/www/html;
# Add index.php to the list if you are using PHP
index index.html index.htm index.nginx-debian.html;SS
location / {
proxy_pass http://localhost:8000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
}
sudo service nginx restart
Применение предельной ставки запроса
Rate Limit на NGINX может использоваться для защиты веб-сервера, чтобы пользователь или злоумышленник нашего сайта не запрашивал пакеты постоянно, а также используется для защиты пропускной способности файлов на веб-сервере.
Войдите в каталог /etc/nginx/sites-available/default
sudo nano /etc/nginx/sites-available/default
Добавьте команду ниже:
limit_req_zone $binary_remote_addr zone=one:1m rate=6r/m;
Добавьте команду ниже:
limit_req zone=one;
Полный код:
limit_req_zone $binary_remote_addr zone=one:1m rate=6r/m;
server {
listen 3000 default_server;
listen [::]:3000 default_server;
root /var/www/html;
# Add index.php to the list if you are using PHP
index index.html index.htm index.nginx-debian.html;SS
location / {
proxy_pass http://localhost:8000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
limit_req zone=one;
}
}
Перезапустите веб-сервер NGINX, чтобы ограничение скорости могло быть применено и снова нормально работать
sudo service nginx restart