Ответ
Nginx часто используется как обратный прокси-сервер (reverse proxy), который принимает клиентские запросы и перенаправляет их на один или несколько внутренних серверов приложений (например, Gunicorn, uWSGI, Node.js). Это позволяет скрыть внутреннюю архитектуру, распределять нагрузку, обрабатывать SSL-терминирование и эффективно раздавать статические файлы.
Ключевые директивы в конфигурации:
listen
: Указывает порт, который Nginx будет слушать (обычно 80 для HTTP и 443 для HTTPS).server_name
: Определяет доменное имя, на которое будет отвечать этот блокserver
.location
: Задает правила обработки запросов в зависимости от URI.proxy_pass
: Перенаправляет запрос на указанный адрес внутреннего сервера.proxy_set_header
: Позволяет изменять или добавлять заголовки, передаваемые проксируемому серверу.
Пример конфигурации для FastAPI-приложения, работающего на 127.0.0.1:8000
:
server {
# Слушаем стандартный HTTP порт
listen 80;
server_name api.example.com;
# Все запросы к корню сайта (/)
location / {
# Перенаправляем на внутреннее приложение
proxy_pass http://127.0.0.1:8000;
# Передаем важные заголовки, чтобы приложение знало
# о реальном клиенте и хосте
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
# Отдельная обработка для статических файлов
location /static/ {
# Путь к файлам на сервере
alias /var/www/app/static/;
# Устанавливаем длительное кеширование в браузере
expires 30d;
}
}
Перед применением конфигурации всегда рекомендуется проверять её на синтаксические ошибки командой sudo nginx -t
.