Настройка proxy_pass в Nginx: практические примеры для 2026 года
Коротко
---
Узнайте, как настроить proxy_pass в Nginx — пошаговые примеры для различных сценариев, чтобы эффективно управлять трафиком и обеспечить стабильную работу ваших сервисов.
---
В этой статье мы подробно разберём, как использовать директиву proxy_pass в Nginx для различных задач. Вам будут даны конкретные примеры, объяснения и советы по настройке, чтобы вы могли легко реализовать нужное решение на практике.
---
Что такое proxy_pass и зачем он нужен
proxy_pass — это директива в Nginx, которая позволяет перенаправлять входящие HTTP-запросы на другой сервер или сервис. Это основной инструмент при создании обратных прокси, балансировщиков нагрузки, а также при организации микросервисной архитектуры.
Например, у вас есть фронтенд-приложение, а API находится на другом сервере. Через proxy_pass вы можете связать эти компоненты, создавая прозрачный для пользователя интерфейс.
---
Основные случаи использования proxy_pass
- 01Обратный прокси для API или приложений
- 02Балансировка нагрузки между несколькими серверами
- 03Обеспечение безопасности и скрытие внутренней инфраструктуры
- 04Реализация микросервисной архитектуры
Рассмотрим каждый случай с практическими примерами.
---
Общая структура настройки proxy_pass
Пример базовой конфигурации:
`nginx server { listen 80; server_name example.com;
location /api/ { proxy_pass 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; } } `
Основные моменты:
- proxy_pass указывает целевой сервер.
- proxy_set_header передает заголовки, обеспечивая корректную работу приложений.
- В конце URL в proxy_pass обычно ставится /, чтобы правильно передавать URI.
---
Примеры использования proxy_pass на практике
Простая прокси-настройка для API
Задача: Перенаправить все запросы /api/ на локальный сервер API, работающий на порту 3000.
Конфигурация:
`nginx server { listen 80; server_name api.example.com;
location / { proxy_pass proxy_http_version 1.1; 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; proxy_cache_bypass $http_upgrade; } } `
Объяснение:
- Все запросы к api.example.com/ будут перенаправлены на localhost:3000.
- Используются стандартные заголовки для корректной работы приложений.
---
Балансировка нагрузки между несколькими серверами
Задача: Распределить трафик между двумя приложениями на серверах с IP 192.168.1.101 и 192.168.1.102.
Конфигурация:
`nginx upstream my_app { server 192.168.1.101 weight=1; server 192.168.1.102 weight=2; }
server { listen 80; server_name app.example.com;
location / { proxy_pass 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; } } `
Объяснение:
- upstream определяет группу серверов.
- Вес (weight) управляет распределением трафика.
- Вся нагрузка делится между двумя серверами по заданным весам.
---
Обеспечение HTTPS и редирект с HTTP
Задача: Перенаправить весь HTTP трафик на HTTPS и настроить прокси на защищённом соединении.
Конфигурация:
`nginx server { listen 80; server_name secure.example.com; return 301 }
server { listen 443 ssl; server_name secure.example.com;
ssl_certificate /path/to/cert.pem; ssl_certificate_key /path/to/key.pem;
location / { proxy_pass proxy_ssl_server_name on; 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 https; } } `
Объяснение:
- Перенаправление на HTTPS происходит на порту 80.
- В proxy_pass указывается HTTPS-адрес внутреннего сервиса.
- Включается proxy_ssl_server_name для поддержки SNI.
---
Передача и изменение URL
Задача: Перенаправлять запросы /blog/ на внешний сайт с изменением URL.
Решение: Использовать rewrite или proxy_pass с изменением URI.
Пример:
`nginx location /blog/ { proxy_pass proxy_redirect off; proxy_set_header Host external-blog.com; 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; } `
Обратите внимание, что в proxy_pass указан URL без дополнительных путей, чтобы избежать автоматического добавления исходного URI.
---
Важные нюансы при использовании proxy_pass
- Передача исходного URI: Если нужно сохранить путь после /api/, необходимо оставить / в конце proxy_pass.
- Обработка ошибок: Используйте proxy_intercept_errors для обработки ошибок на стороне Nginx.
- Кеширование: Для ускорения можно включить кеширование с помощью proxy_cache.
- Безопасность: Настраивайте HTTPS, используйте актуальные сертификаты, избегайте передачи чувствительных данных по незашищённым соединениям.
---
Итог
Настройка proxy_pass в Nginx — мощный инструмент для организации гибких и масштабируемых инфраструктурных решений. В статье представлены ключевые сценарии и практические примеры, которые помогут вам реализовать обратный прокси, балансировку нагрузки и обеспечить безопасность ваших сервисов.
Если у вас остались вопросы или нужна помощь с конкретным кейсом, команда SANSARA всегда готова помочь — мы предоставляем профессиональные услуги по настройке и оптимизации VPS и инфраструктуры.
---
Пусть ваши серверы работают стабильно и безопасно!
Ещё по теме
Читайте также
CTA · VPSHOST
Личный VPS — без терминала и очередей
Регистрация, импорт профиля и стабильный канал на телефон и компьютер. Тот же принцип, о котором мы пишем в блоге — на практике.