[{"data":1,"prerenderedAt":93},["ShallowReactive",2],{"article-8-en":3,"related-8":52,"ArticleBody_f4l5BXqiDV9dhbrhkObgoyDBRTGYkzAcVxmJEyzVE":88},{"id":4,"title":5,"slug":6,"content":7,"metaTitle":5,"metaDescription":8,"coverUrl":9,"views":10,"likes":11,"createdAt":12,"updatedAt":13,"category":14,"tags":23,"author":9,"tableOfContents":27,"locale":49,"translated":50,"indexable":51},8,"Как настроить Nginx как reverse proxy для нескольких сервисов","kak-nastroit-nginx-kak-reverse-proxy-dlya-neskolkih-servisov","# Как настроить Nginx как reverse proxy для нескольких сервисов\n\nЕсли у вас на одном сервере работает несколько приложений — например, Node.js-бэкенд, Python API и статический сайт — вам нужен reverse proxy. Nginx справляется с этой задачей отлично: он принимает входящие запросы и перенаправляет их к нужному сервису по порту или доменному имени.\n\n---\n\n## Что такое reverse proxy и зачем он нужен\n\nReverse proxy — это сервер-посредник, который стоит перед вашими приложениями и распределяет входящий трафик. Клиент обращается к Nginx на порту 80/443, а Nginx сам решает, куда отправить запрос.\n\n**Преимущества:**\n- Все сервисы доступны через стандартные порты (80/443), а не через 3000, 8080 и т.д.\n- Легко настроить HTTPS сразу для всех приложений\n- Nginx берёт на себя балансировку нагрузки и кэширование\n- Приложения не знают о внешнем мире — безопаснее\n\n---\n\n## Установка Nginx\n\nНа Ubuntu/Debian:\n\n```bash\nsudo apt update\nsudo apt install nginx -y\nsudo systemctl enable nginx\nsudo systemctl start nginx\n```\n\nПроверить статус:\n\n```bash\nsudo systemctl status nginx\n```\n\n---\n\n## Структура конфигурации\n\nNginx хранит конфиги в `/etc/nginx/`. Основной файл — `nginx.conf`, но для удобства лучше создавать отдельные файлы в `/etc/nginx/sites-available/` и делать симлинки в `sites-enabled/`.\n\n```\n/etc/nginx/\n├── nginx.conf\n├── sites-available/\n│   ├── app1.conf\n│   └── app2.conf\n└── sites-enabled/\n    ├── app1.conf -> ../sites-available/app1.conf\n    └── app2.conf -> ../sites-available/app2.conf\n```\n\n---\n\n## Настройка proxy по доменному имени\n\nДопустим, у вас есть два сервиса:\n- `api.example.com` → Node.js на порту `3000`\n- `app.example.com` → Python/Flask на порту `5000`\n\nСоздайте конфиг для первого сервиса:\n\n```bash\nsudo nano /etc/nginx/sites-available/api.conf\n```\n\n```nginx\nserver {\n    listen 80;\n    server_name api.example.com;\n\n    location / {\n        proxy_pass http://127.0.0.1:3000;\n        proxy_http_version 1.1;\n\n        proxy_set_header Host $host;\n        proxy_set_header X-Real-IP $remote_addr;\n        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\n        proxy_set_header X-Forwarded-Proto $scheme;\n\n        # Для WebSocket (если нужно)\n        proxy_set_header Upgrade $http_upgrade;\n        proxy_set_header Connection \"upgrade\";\n    }\n}\n```\n\nСоздайте конфиг для второго сервиса:\n\n```bash\nsudo nano /etc/nginx/sites-available/app.conf\n```\n\n```nginx\nserver {\n    listen 80;\n    server_name app.example.com;\n\n    location / {\n        proxy_pass http://127.0.0.1:5000;\n        proxy_http_version 1.1;\n\n        proxy_set_header Host $host;\n        proxy_set_header X-Real-IP $remote_addr;\n        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\n        proxy_set_header X-Forwarded-Proto $scheme;\n    }\n}\n```\n\nАктивируйте конфиги:\n\n```bash\nsudo ln -s /etc/nginx/sites-available/api.conf /etc/nginx/sites-enabled/\nsudo ln -s /etc/nginx/sites-available/app.conf /etc/nginx/sites-enabled/\n```\n\n---\n\n## Настройка proxy по пути (path-based)\n\nЕсли у вас один домен, но несколько сервисов по разным путям:\n\n```nginx\nserver {\n    listen 80;\n    server_name example.com;\n\n    # Запросы к /api/ идут на Node.js\n    location /api/ {\n        proxy_pass http://127.0.0.1:3000/;\n        proxy_set_header Host $host;\n        proxy_set_header X-Real-IP $remote_addr;\n    }\n\n    # Запросы к /admin/ идут на Flask\n    location /admin/ {\n        proxy_pass http://127.0.0.1:5000/;\n        proxy_set_header Host $host;\n        proxy_set_header X-Real-IP $remote_addr;\n    }\n\n    # Всё остальное — статика\n    location / {\n        root /var/www/html;\n        index index.html;\n        try_files $uri $uri/ =404;\n    }\n}\n```\n\n> **Важно:** Слэш в конце `proxy_pass http://127.0.0.1:3000/` имеет значение. Если он есть — Nginx убирает префикс `/api/` при передаче запроса. Если нет — передаёт путь целиком.\n\n---\n\n## Полезные параметры proxy\n\n| Параметр | Описание |\n|---|---|\n| `proxy_connect_timeout` | Таймаут на соединение с бэкендом |\n| `proxy_read_timeout` | Таймаут ожидания ответа |\n| `proxy_buffers` | Размер буферов для ответа |\n| `proxy_cache_path` | Кэширование ответов |\n\nПример с таймаутами:\n\n```nginx\nlocation / {\n    proxy_pass http://127.0.0.1:3000;\n    proxy_connect_timeout 10s;\n    proxy_read_timeout 30s;\n    proxy_send_timeout 30s;\n}\n```\n\n---\n\n## Проверка конфигурации и перезапуск\n\nВсегда проверяйте конфиг перед перезапуском:\n\n```bash\nsudo nginx -t\n```\n\nЕсли всё в порядке, перезагружаем без остановки сервиса:\n\n```bash\nsudo systemctl reload nginx\n```\n\n---\n\n## Добавление HTTPS через Let's Encrypt\n\nПосле того как reverse proxy работает, подключите бесплатный SSL:\n\n```bash\nsudo apt install certbot python3-certbot-nginx -y\nsudo certbot --nginx -d api.example.com -d app.example.com\n```\n\nCertbot сам изменит конфиг Nginx и настроит автоматическое обновление сертификата.\n\n---\n\n## Итог\n\nNginx как reverse proxy — это мощный и гибкий инструмент. Он позволяет держать несколько сервисов на одном сервере, не открывая лишних портов, и легко масштабировать архитектуру. Начните с простого конфига и расширяйте по мере необходимости.","Как настроить Nginx как reverse proxy для нескольких сервисов Если у вас на одном сервере работает несколько приложений — например, Node.js-бэкенд, Python API и",null,388,0,"2026-03-14T13:55:10.310Z","2026-09-01T19:52:25.000Z",{"id":15,"value":16,"content":17,"sortOrder":18,"parent":19},9,"networks","Networks",3,{"id":20,"value":21,"content":22,"sortOrder":18},6,"admin","Администрирование",[24],{"id":4,"value":25,"content":26},"nginx","Nginx",[28,30,33,35,37,39,41,43,45,47],{"level":29,"text":5},1,{"level":31,"text":32},2,"Что такое reverse proxy и зачем он нужен",{"level":31,"text":34},"Установка Nginx",{"level":31,"text":36},"Структура конфигурации",{"level":31,"text":38},"Настройка proxy по доменному имени",{"level":31,"text":40},"Настройка proxy по пути (path-based)",{"level":31,"text":42},"Полезные параметры proxy",{"level":31,"text":44},"Проверка конфигурации и перезапуск",{"level":31,"text":46},"Добавление HTTPS через Let's Encrypt",{"level":31,"text":48},"Итог","en",false,true,[53,68,82],{"id":54,"title":55,"slug":56,"content":57,"description":57,"coverUrl":9,"views":58,"likes":11,"createdAt":59,"category":60,"tags":66,"author":9},57,"DNS vs DoH vs DoT vs DoQ: зачем это нужно, чем отличается и что выбрать","dns-vs-doh-vs-dot-vs-doq-zachem-eto-nujno-chem-otlichaetsya-i-chto-vybrat","DNS vs DoH vs DoT vs DoQ: зачем это нужно, чем отличается и что выбрать Каждый заход на сайт, каждое сообщение в мессенджере, каждый запрос приложения начинаетс",75,"2026-07-11T22:41:10.390Z",{"id":61,"value":62,"content":63,"sortOrder":64,"parent":65},10,"security","Security",4,{"id":20,"value":21,"content":22,"sortOrder":18},[67],{"id":4,"value":25,"content":26},{"id":69,"title":70,"slug":71,"content":72,"description":72,"coverUrl":9,"views":73,"likes":11,"createdAt":74,"category":75,"tags":80,"author":9},12,"Хостинг или VPS: куда селить свой первый сайт?","hosting-ili-vps-kuda-selit-svoy-pervyy-sayt","Хостинг или VPS: куда селить свой первый сайт? Привет. Знаю эту боль выбора. Ты только решил запустить свой проект, блог или интернет-магазин, заходишь на сайт",599,"2026-03-17T02:14:23.465Z",{"id":76,"value":77,"content":78,"sortOrder":29,"parent":79},7,"linux","Linux",{"id":20,"value":21,"content":22,"sortOrder":18},[81],{"id":4,"value":25,"content":26},{"id":4,"title":5,"slug":6,"content":8,"description":8,"coverUrl":9,"views":83,"likes":11,"createdAt":12,"category":84,"tags":86,"author":9},386,{"id":15,"value":16,"content":17,"sortOrder":18,"parent":85},{"id":20,"value":21,"content":22,"sortOrder":18},[87],{"id":4,"value":25,"content":26},["Island",89],{"key":90,"result":91},"ArticleBody_f4l5BXqiDV9dhbrhkObgoyDBRTGYkzAcVxmJEyzVE",{"head":92},{},1788480157387]