Nginx reverse proxy с Docker Compose на личном VPS SANSARA (2026)
Практическая настройка nginx reverse proxy через Docker Compose на личном VPS SANSARA в 2026 году. Пошаговая инструкция для iPhone, Android, Windows, macOS без терминала. Защищённый канал и выделенный узел.
Чтобы развернуть nginx reverse proxy на своём VPS, используйте Docker Compose: опишите конфигурацию в docker-compose.yml, подключите конфиги nginx как volume и запустите одним командой. В SANSARA это делается после регистрации и импорта данных в клиент — без установки панелей и без терминала для обычного пользователя. Вы получаете выделенный узел в одной из 9+ стран и готовый канал.
Коротко:
- Docker Compose позволяет описывать сервисы в одном файле и запускать их одной командой.
- Nginx как обратный прокси принимает запросы и перенаправляет их на внутренние сервисы (веб-приложения, API, базы).
- На личном VPS SANSARA вы разворачиваете контейнеры после получения данных в кабинете и импорта в клиент.
- Поддерживаются iPhone, Android, Windows, macOS через официальные клиенты.
- Telegram-бот SANSARA помогает управлять подключением и напоминает о переключении локаций.
Что это и кому подходит
Обратный прокси — это сервер, который принимает входящие запросы от клиентов и передаёт их на внутренние сервисы, скрывая их от внешней сети. Nginx — популярный инструмент для этой задачи.
С Docker Compose вы описываете nginx и другие сервисы (веб-приложение, база данных, кеш) в одном файле docker-compose.yml. При запуске Docker создаёт сеть, монтирует конфиги и запускает всё вместе.
Такая схема подходит:
- Владельцам личных VPS, которые хотят разместить несколько веб-сервисов на одном IP.
- Тем, кто хочет изолировать приложения в контейнерах и управлять ими через Compose.
- Пользователям SANSARA, которые уже получили данные в кабинете и хотят добавить собственные сервисы поверх готового канала.
Если вы используете личный VPS SANSARA, у вас уже есть выделенный узел и защищённый канал. Остаётся развернуть контейнеры поверх этого.
Как настроить по шагам (с личным VPS SANSARA)
Ниже — минимальный рабочий пример. Предполагается, что у вас уже есть доступ к VPS (например, по SSH) и установлены Docker и Docker Compose.
- 01Подготовьте структуру файлов
Создайте папку для проекта, например nginx-proxy:
` mkdir nginx-proxy cd nginx-proxy `
Внутри создайте две папки:
` mkdir nginx mkdir app `
- 01Создайте конфиг nginx
В папке nginx создайте файл nginx.conf:
`nginx events {}
http { upstream backend { server app:8080; }
server { listen 80; server_name _;
location / { proxy_pass http://backend; 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; } } } `
Этот конфиг говорит nginx слушать порт 80 и проксировать запросы на контейнер с именем app на порту 8080.
- 01Создайте простое приложение для теста
В папке app создайте Dockerfile:
`dockerfile FROM python:3.9-alpine
WORKDIR /app COPY app.py .
RUN pip install flask
CMD ["python", "app.py"] `
И файл app.py:
`python from flask import Flask
app = Flask(name)
@app.route("/") def hello(): return "Привет от приложения за nginx reverse proxy!"
if name == "main": app.run(host="0.0.0.0", port=8080) `
- 01Опишите сервисы в docker-compose.yml
В корне проекта создайте docker-compose.yml:
`yaml version: '3.8'
services: nginx: image: nginx:alpine ports:
- "80:80"
volumes:
- ./nginx/nginx.conf:/etc/nginx/nginx.conf:ro
depends_on:
- app
networks:
- app-network
app: build: ./app networks:
- app-network
networks: app-network: driver: bridge `
Здесь:
- Сервис nginx использует официальный образ, пробрасывает порт 80 и монтирует ваш конфиг.
- Сервис app собирается из Dockerfile в папке ./app.
- Оба сервиса подключены к одной сети app-network, чтобы nginx мог обращаться к app по имени.
- 01Запустите стек
Выполните в корне проекта:
`bash docker-compose up -d `
После этого nginx будет принимать запросы на порт 80 вашего VPS и проксировать их на Flask-приложение.
Если вы используете личный VPS SANSARA, то после регистрации и импорта данных в клиент вы получаете доступ к своему узлу. Дальше можно развернуть этот стек поверх готового канала.
Устройства: iPhone, Android, Windows, macOS
Nginx reverse proxy работает на стороне сервера, поэтому клиентские устройства подключаются к нему стандартными способами:
- Windows / macOS: браузеры (Chrome, Firefox, Safari), утилиты командной строки (curl), REST-клиенты.
- iPhone / Android: мобильные браузеры, нативные приложения, которые обращаются к вашему API через домен или IP VPS.
Если вы разместили веб-приложение за nginx, то с любого устройства можно открыть http://IP_ВАШЕГО_VPS и увидеть ответ приложения.
В контексте SANSARA:
- Вы регистрируетесь, получаете данные в кабинете.
- Импортируете их в клиент на своём устройстве (iPhone, Android, Windows, macOS).
- После этого можете настраивать серверные сервисы (nginx, приложения) на своём VPS.
- Telegram-бот SANSARA напоминает о смене локаций и помогает управлять подключением.
Клиенты на устройствах подключаются к вашему VPS по защищённому каналу, а nginx уже распределяет трафик между внутренними сервисами.
Частые ошибки и как их избежать
- 01Неправильные имена сервисов в nginx.conf
В Docker Compose имена сервисов (app, nginx) используются как имена хостов внутри сети. Убедитесь, что в proxy_pass вы указываете то же имя, что в docker-compose.yml.
Как избежать: используйте имя сервиса из services: как хост в upstream.
- 01Порты не открыты или заблокированы брандмауэром
Если вы не видите ответ от nginx, проверьте, что порт 80 открыт на VPS и не блокируется файрволом.
Как избежать: настройте брандмауэр (например, ufw на Ubuntu) или используйте облачные правила безопасности, если они есть у провайдера.
- 01Конфиг nginx не замонтирован или содержит ошибки
Если вы меняете nginx.conf, но изменения не применяются, возможно, файл не перемонтирован или есть синтаксическая ошибка.
Как избежать:
- Проверьте синтаксис: docker-compose exec nginx nginx -t
- Пересоздайте контейнеры: docker-compose down && docker-compose up -d
- 01Сеть между контейнерами не настроена
Если nginx не может достучаться до app, убедитесь, что оба сервиса в одной сети (networks).
Как избежать: явно задайте сеть в docker-compose.yml и подключите к ней все сервисы.
- 01Приложение не слушает 0.0.0.0
Если ваше приложение (например, Flask) слушает только 127.0.0.1, контейнер nginx не сможет к нему обратиться.
Как избежать: в коде приложения указывайте host="0.0.0.0".
FAQ
Зачем использовать nginx reverse proxy, если приложение и так отвечает на порту?+
Nginx добавляет балансировку, кеширование, SSL-терминацию, защиту от некоторых атак и позволяет скрыть внутренние сервисы. Также через один порт можно обслуживать несколько приложений.
Можно ли использовать HTTPS с таким setup?+
Да, нужно добавить SSL-сертификаты и настроить listen 443 ssl в nginx.conf, а также пробросить порт 443 в docker-compose.yml.
Подойдёт ли это для продакшена?+
Для небольших проектов — да. Для высоконагруженных систем лучше добавить мониторинг, логирование, репликацию и, возможно, оркестратор типа Kubernetes.
Как обновить приложение без простоя?+
Вы можете собрать новый образ и выполнить docker-compose up -d --build. Docker Compose обновит контейнеры с минимальным простоем, если правильно настроены healthchecks и зависимости.
Что делать, если nginx не стартует из-за ошибки в конфиге?+
Проверьте синтаксис через docker-compose exec nginx nginx -t. Если ошибка есть, исправьте nginx.conf и перезапустите сервис.
Итог
- Опишите nginx и приложение в docker-compose.yml, используя общую сеть и volumes для конфигов.
- Настройте nginx.conf с proxy_pass на имя сервиса приложения.
- Запустите стек командой docker-compose up -d на своём VPS.
- На клиентских устройствах (iPhone, Android, Windows, macOS) обращайтесь к IP или домену VPS через защищённый канал.
- Используйте Telegram-бота SANSARA для управления подключением и смены локаций среди 9+ стран.
Ещё по теме
Читайте также
CTA · SANSARA
Личный VPS — без терминала и очередей
Регистрация, импорт профиля и стабильный канал на телефон и компьютер. Тот же принцип, о котором мы пишем в блоге — на практике.