Nginx — это веб-сервер, reverse proxy и балансировщик нагрузки.
Его основная задача — принимать HTTP/HTTPS запросы от клиентов (браузеров, приложений) и решать, что с ними делать.
Nginx может напрямую отдавать:
https://example.com/logo.png
Сервер просто читает файл с диска и отправляет его браузеру.
Nginx принимает запросы и пересылает их внутреннему приложению:
Browser
↓
Nginx
↓
App (localhost:3000)
Nginx хранит TLS сертификаты и обеспечивает HTTPS.
Можно распределять запросы между несколькими приложениями.
https://mysite.com
↓
DNS → IP
↓
Nginx/Caddy
↓
index.html
Домен → IP сервера
↓
Docker контейнер с Caddy
↓
Проброс портов 80/443
↓
Caddy раздаёт папку
↓
index.html + другие файлы
Это нормальная и распространённая архитектура.
Caddy похож на Nginx, но проще в настройке и автоматически получает HTTPS сертификаты.
example.com {
root * /srv/site
file_server
}
Это означает:
Важно: веб-сервер отдаёт ВСЁ, что лежит внутри web root.
Если внутри папки лежат:
.env
backup.sql
docker-compose.yml
logs.txt
они могут стать доступными через браузер:
https://example.com/.env
Нужно разделять публичные и приватные файлы.
/site
/public
index.html
app.js
style.css
/logs
/.env
/backups
И указывать web root только на public:
example.com {
root * /site/public
file_server
}