Что такое Nginx и как работает статический сайт

Что такое Nginx

Nginx — это веб-сервер, reverse proxy и балансировщик нагрузки.

Его основная задача — принимать HTTP/HTTPS запросы от клиентов (браузеров, приложений) и решать, что с ними делать.

Для чего используется Nginx

1. Раздача статических файлов

Nginx может напрямую отдавать:

https://example.com/logo.png

Сервер просто читает файл с диска и отправляет его браузеру.

2. Reverse Proxy

Nginx принимает запросы и пересылает их внутреннему приложению:

Browser
   ↓
Nginx
   ↓
App (localhost:3000)

3. HTTPS / SSL

Nginx хранит TLS сертификаты и обеспечивает HTTPS.

4. Балансировка нагрузки

Можно распределять запросы между несколькими приложениями.

Как работает запрос к сайту

  1. DNS переводит домен в IP адрес
  2. Браузер подключается к серверу
  3. Nginx/Caddy принимает запрос
  4. Сервер ищет нужный virtual host
  5. Находит файл или проксирует запрос
  6. Отправляет ответ браузеру
https://mysite.com
        ↓
DNS → IP
        ↓
Nginx/Caddy
        ↓
index.html

Твоя схема со статическим сайтом

Домен → IP сервера
↓
Docker контейнер с Caddy
↓
Проброс портов 80/443
↓
Caddy раздаёт папку
↓
index.html + другие файлы

Это нормальная и распространённая архитектура.

Как работает Caddy

Caddy похож на Nginx, но проще в настройке и автоматически получает HTTPS сертификаты.

example.com {
    root * /srv/site
    file_server
}

Это означает:

Главный вопрос — безопасность

Важно: веб-сервер отдаёт ВСЁ, что лежит внутри web root.

Если внутри папки лежат:

.env
backup.sql
docker-compose.yml
logs.txt

они могут стать доступными через браузер:

https://example.com/.env

Что безопасно хранить в public

Что нельзя хранить в public

Как делать правильно

Нужно разделять публичные и приватные файлы.

/site
    /public
        index.html
        app.js
        style.css

    /logs
    /.env
    /backups

И указывать web root только на public:

example.com {
    root * /site/public
    file_server
}

Итог