Отлично, вот подробная пошаговая инструкция по созданию простой приветственной страницы на Node.js, которая будет работать на вашем сервере на порту 9000 и будет доступна из интернета по защищенному протоколу HTTPS (SSL) с помощью Cloudflare.
Эта схема идеально подходит для начинающих, так как вся сложная работа с SSL-сертификатами ложится на плечи Cloudflare, а на вашем сервере будет работать простой HTTP-сервер.
Создадим простой веб-сервер на Node.js, который будет отдавать приветственную HTML-страницу.
Настроим этот сервер на работу на порту 9000.
Запустим его на постоянную работу с помощью менеджера процессов pm2.
Настроим Cloudflare так, чтобы он принимал HTTPS-трафик и безопасно перенаправлял его на порт 9000 нашего сервера.
Сервер (VPS/VDS) с любой ОС Linux (например, Ubuntu 22.04).
Установленный Node.js и npm. Если их нет, установите командой: sudo apt update && sudo apt install nodejs npm -y.
Доменное имя, которое вы уже добавили в свой аккаунт Cloudflare.
IP-адрес вашего сервера.
Сначала подключитесь к вашему серверу по SSH.
Создайте папку для проекта и перейдите в нее:
mkdir welcome-page
cd welcome-page
Создайте файл сервера. Назовем его server.js.
nano server.js
Вставьте в этот файл следующий код:
// Подключаем встроенный в Node.js модуль для создания HTTP-сервера
const http = require('http');
// Указываем порт, на котором будет работать наше приложение
const port = 9000;
// Создаем сервер
const server = http.createServer((req, res) => {
// Устанавливаем код ответа 200 (ОК)
res.statusCode = 200;
// Устанавливаем заголовок, сообщающий браузеру, что мы отправляем HTML
res.setHeader('Content-Type', 'text/html; charset=utf-8');
// Формируем и отправляем HTML-страницу в качестве ответа
res.end(`
<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="UTF-8">
<title>Добро пожаловать!</title>
<style>
body {
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
display: flex;
justify-content: center;
align-items: center;
height: 100vh;
margin: 0;
background-color: #282c34;
color: white;
}
.container {
text-align: center;
padding: 40px;
border-radius: 15px;
background-color: #20232a;
box-shadow: 0 10px 25px rgba(0,0,0,0.5);
}
h1 {
color: #61dafb;
}
</style>
</head>
<body>
<div class="container">
<h1>🎉 Добро пожаловать! 🎉</h1>
<p>Эта страница работает на Node.js на порту ${port}.</p>
<p>SSL-шифрование обеспечивается с помощью Cloudflare.</p>
</div>
</body>
</html>
`);
});
// Запускаем сервер и заставляем его "слушать" указанный порт
server.listen(port, () => {
console.log(`Сервер успешно запущен и работает на http://localhost:${port}`);
});
Сохраните файл и закройте редактор (в nano это Ctrl+X, затем Y, затем Enter).
Если вы просто запустите сервер командой node server.js, он остановится, как только вы закроете SSH-сессию. Чтобы он работал постоянно, используем pm2.
Установите pm2 глобально:
sudo npm install pm2 -g
Запустите ваше приложение с помощью pm2:
pm2 start server.js --name welcome-page
-name welcome-page дает процессу понятное имя.
Убедитесь, что приложение работает:
pm2 list
Вы должны увидеть welcome-page в статусе online.
Сохраните список процессов pm2, чтобы он автоматически запускался после перезагрузки сервера:
pm2 save
pm2 startup
Система даст вам команду, которую нужно выполнить с правами sudo. Скопируйте и выполните ее.
Ваш сервер должен разрешать входящие подключения на порт 9000.
Откройте порт 9000 (на примере ufw для Ubuntu):
sudo ufw allow 9000/tcp
Убедитесь, что правило добавлено:
sudo ufw status
Вы должны увидеть порт 9000 в списке разрешенных.
Это самый важный шаг для обеспечения SSL.
Зайдите в панель управления Cloudflare и выберите ваш домен.
Настройте DNS:
Перейдите в раздел DNS -> Records.
Создайте A-запись, которая указывает на IP-адрес вашего сервера. Вы можете использовать основной домен (@) или поддомен (например, hello).
Самое главное: убедитесь, что для этой записи включен прокси-режим (облачко оранжевого цвета, статус "Proxied"). Это активирует защиту и SSL от Cloudflare.
Пример:
Type: A
Name: hello (страница будет доступна по https://hello.your-domain.com)
IPv4 address: ВАШ_IP_АДРЕС_СЕРВЕРА
Proxy status: Proxied (оранжевое облако)
Настройте режим SSL/TLS:
Перейдите в раздел SSL/TLS -> Overview.
Выберите режим шифрования Flexible.
Почему Flexible? Этот режим означает, что соединение между пользователем и серверами Cloudflare будет зашифровано (HTTPS), а соединение между Cloudflare и вашим сервером — нет (HTTP). Это идеально для нашей ситуации, так как наш Node.js сервер работает по HTTP.
Перенаправьте трафик на нужный порт (9000):
По умолчанию Cloudflare отправляет трафик на стандартные порты 80 (HTTP) и 443 (HTTPS). Нам нужно сказать ему отправлять трафик на порт 9000. Для этого используются Origin Rules.
Перейдите в раздел Rules -> Origin Rules.
Нажмите Create origin rule.
Rule name: Redirect to Port 9000 (или любое другое имя).
В разделе "When incoming requests match..." настройте условие. Например, чтобы правило срабатывало для вашего поддомена:
Field: Hostname
Operator: equals
Value: hello.your-domain.com (имя, которое вы указали в DNS)
В разделе "Then..." укажите действие:
В поле Port, выберите Rewrite to... и введите 9000.
Нажмите Deploy.
Подождите пару минут, пока настройки DNS и правила Cloudflare вступят в силу.
Откройте ваш браузер и перейдите по адресу https:// + имя_из_DNS (например, https://hello.your-domain.com).
Результат: Вы должны увидеть вашу приветственную страницу с фиолетовым фоном, а в адресной строке браузера будет замочек, подтверждающий безопасное SSL-соединение. Поздравляем, все готово
Нет комментариев.