Home » Развёртывание React-приложения с помощью Nginx на Ubuntu
Развёртывание React-приложения с помощью Nginx на Ubuntu

Развёртывание React-приложения с помощью Nginx на Ubuntu

Попробуем разобраться, как быстро закинуть своё React-приложение на сервер с Ubuntu, чтобы оно бодро крутилось под Nginx. Эта статья для тех, кто устал от красоты локального npm start и решил показать миру свой фронтенд — с SSL, красивым доменом и адекватной скоростью. Поговорим, как за 15 минут собрать, развернуть и запустить React под Nginx, не наступив на типовые грабли. Будет пара живых кейсов, советы по автоматизации и немного (но вкусно) про альтернативы.

Как это вообще работает?

  • Собираем React-приложение: в папке build оказывается кучка статических файлов (HTML, JS, CSS, медиа).
  • Nginx выступает в роли прокси/веб-сервера: он раздаёт статику и умеет проксировать запросы на API.
  • Ubuntu — просто надёжная ОС, которую легко настраивать и автоматизировать.

На пальцах: вот ты сделал npm run build, залил на сервер, подрубил конфиг Nginx — и сайт уже в сети. Single Page Application феноменально быстро грузится, HTTPS подключается одной командой — кто бы мог подумать ещё пару лет назад?

Express Setup: Разворачиваем React под Nginx на Ubuntu

  1. Собираем приложение локально (или на сервере — как нравится):

    cd my-react-app
    npm run build
  2. Устанавливаем Nginx на Ubuntu:

    sudo apt update
    sudo apt install nginx
  3. Копируем build на сервер:

    scp -r build/ user@your_server:/var/www/myapp

    • Можно закинуть через rsync или залить через GitHub Actions — автоматизация наше всё.
  4. Делаем простой конфиг для Nginx:

    sudo nano /etc/nginx/sites-available/myapp

    server {
        listen 80;
        server_name yourdomain.com;
    
        root /var/www/myapp;
        index index.html;
    
        location / {
            try_files $uri /index.html;
        }
    }
        
    • Активируем сайт:

      sudo ln -s /etc/nginx/sites-available/myapp /etc/nginx/sites-enabled/
      sudo nginx -t
      sudo systemctl reload nginx
  5. Бонус: включаем бесплатный SSL через Let’s Encrypt (рекомендуется):

    sudo apt install certbot python3-certbot-nginx
    sudo certbot --nginx -d yourdomain.com

Таблица: Быстрые команды и что делают

Команда Зачем нужна Альтернатива
npm run build Собрать статику React в production-варианте yarn build
sudo apt install nginx Установить веб-сервер на Ubuntu aptitude install nginx
sudo systemctl reload nginx Перезапустить nginx без остановки сервиса sudo service nginx reload
scp -r build/ user@host:/var/www/myapp Скопировать build на сервер rsync -av build/ user@host:/var/www/myapp
certbot --nginx -d domain Быстро получить SSL-сертификат acme.sh, ручной OpenSSL

Похожие решения & альтернативы

  • serve (https://www.npmjs.com/package/serve) — npm-пакет для локального и простого прод-сервера без Nginx. Прекрасен для тестов или микросервисов.
  • Caddy (https://caddyserver.com/) — модный автоконфигурируемый сервер, любит HTTPS “из коробки”, часто проще Nginx для начинающих.
  • Apache2 — ещё один монстр, но с React редко используют.
  • PM2 + Express.js — если хочешь оборачивать React в Node.js (например, SSR или бэкенд на том же сервере).

Плюсы/Минусы: Nginx vs. Другие Способы

Способ Плюсы Минусы
Nginx + статика Скорость, надёжность, автоматизация, легко масштабируется Нужно ручками конфигурировать перенаправления, заголовки CORS
serve Запустить в одну команду, npm install и всё Не для продакшена, слабее по безопасности
Caddy Автоматический SSL, юзер-френдли конфиги Меньше туториалов, необычный синтаксис

Кейсы и интересные находки

  • Скрипты для автообновления — связка git pull + npm run build + rsync превращает сервер в CI/CD ласточку.
  • Можно скрыть API-сервер за прокси: допиши в nginx.conf location /api/ { proxy_pass http://localhost:PORT; } и вся магия на одном домене.
  • Nginx быстро режет DDOS, а ещё умеет GZIP сжимать ваши .js файлы — экономия трафика, быстрее для юзера.
  • Ставили React-приложения в Docker-контейнеры с Alpine — Nginx с React влазит в 40 МБ, можно ворочать как угодно.
  • Иногда забывают про try_files $uri /index.html — и роутинг падает при обновлении страницы (404). Не забывай!

Автоматизация и скрипты: что нового можно?

  • Собрал build — сразу пушнул на сервер через Git, где хук автоматом разворачивает статику (см. Gitea, GitHub Actions).
  • Мониторинг статуса через curl -I https://вашдомен/ — легко встроить в bash-скрипт и оповещать в Telegram о падениях.
  • Переиспользуй конфиги через include — сразу десятки приложений на одном сервере.

Выводы & Рекомендации

Деплой React-приложения на Ubuntu с помощью Nginx — реально просто, когда понимаешь суть: собрать, скопировать, настроить. Производительность и гибкость выше, чем у всяких serve, а автоматизация и безопасность на уровне. Хочется меньше возиться с конфигами — смотри в сторону Caddy. Для продакшн-проектов — только Nginx с SSL.

Пиши bash-скрипты для автоматизации, делай бэкапы, следи за безопасностью. И пусть твой фронтенд светит ярче, чем у конкурентов!


В этой статье собрана информация и материалы из различных интернет-источников. Мы признаем и ценим работу всех оригинальных авторов, издателей и веб-сайтов. Несмотря на то, что были приложены все усилия для надлежащего указания исходного материала, любая непреднамеренная оплошность или упущение не являются нарушением авторских прав. Все упомянутые товарные знаки, логотипы и изображения являются собственностью соответствующих владельцев. Если вы считаете, что какой-либо контент, использованный в этой статье, нарушает ваши авторские права, немедленно свяжитесь с нами для рассмотрения и принятия оперативных мер.

Данная статья предназначена исключительно для ознакомительных и образовательных целей и не ущемляет права правообладателей. Если какой-либо материал, защищенный авторским правом, был использован без должного упоминания или с нарушением законов об авторском праве, это непреднамеренно, и мы исправим это незамедлительно после уведомления. Обратите внимание, что переиздание, распространение или воспроизведение части или всего содержимого в любой форме запрещено без письменного разрешения автора и владельца веб-сайта. Для получения разрешений или дополнительных запросов, пожалуйста, свяжитесь с нами.

Leave a reply

Your email address will not be published. Required fields are marked