Установка приложения Express/Nginx с SSL с помощью Certbot в Ubuntu 18.04
Это краткое руководство о том, как настроить NGINX в качестве обратного прокси-сервера перед приложением Express.js и как получить бесплатный SSL-сертификат с помощью Certbot менее чем за 10 минут!
Node.js и экспресс
Установка Node.js 10.x
curl -sL | sudo -E bash -
sudo apt-get install -y nodejs
Создание базового экспресс-приложения
mkdir my-app
cd my-app
npm init # Fill the form
npm install express
Создать index.js
файл и вставьте следующее:
nano index.js
'use strict';
const express = require('express');
const app = express();
app.get('/', (req, res) => {
res.send('Express/Nginx/Certbot tutorial');
});
app.listen(3001);
Установить PM2
PM2 — это диспетчер процессов Node.js, который запускает наше приложение в фоновом режиме и перезапускает его при загрузке или сбое.
sudo npm install -g pm2
sudo pm2 startup
sudo pm2 start index.js
sudo pm2 save
Мы можем проверить, что наше приложение работает, посетив (У вас еще нет SSL-сертификата, поэтому
https
не будет работать)
Установка и настройка Nginx
sudo apt install nginx
Теперь нам нужно создать конфигурацию сервера
sudo nano /etc/nginx/sites-available/yourdomain.com.conf
И скопируйте следующее:
server {
listen 80;
server_name yourdomain.com www.yourdomain.com;
location / {
proxy_pass # Change the port if needed
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;
}
}
Nginx не хватает команды a2ensite
что апач2 имеет на Ubuntu, поэтому мы должны создать символическую ссылку, выполнив следующую команду:
sudo ln -s /etc/nginx/sites-available/yourdomain.com.conf /etc/nginx/sites-enabled/
После этого нам нужно запустить:
sudo service nginx restart
Проверить Nginx выезд на установку:
Вам нужно будет увидеть, как обслуживается приложение Express.
Сертбот:
Монтаж
sudo apt update
sudo apt install software-properties-common
sudo add-apt-repository ppa:certbot/certbot
sudo apt update
sudo apt install python-certbot-nginx
Получение сертификата:
sudo certbot --nginx
Команда автоматически обнаружит домен/ы, используемые в server_name
директива nginx conf.
После выполнения у вас будет сертификат, и конфигурация Nginx будет автоматически изменена для его использования.
Запустить снова Nginx
sudo service nginx restart
А теперь перейдите к: