Иногда требуется, чтобы сайт, размещённый на другом сервере, открывался через ваш VPS — например, при тестировании, миграции или балансировке нагрузки. В таких случаях помогает настройка проксирования в Nginx. Разберём, как через Nginx настроить прокси и корректно отобразить удалённый сайт по нужному IP.
Введение
Проксирование в Nginx — один из ключевых инструментов системного администратора. Оно позволяет перенаправлять запросы с одного сервера на другой, скрывать внутреннюю структуру инфраструктуры, объединять несколько веб-приложений или балансировать нагрузку.
Самый частый сценарий — необходимость показать сайт, физически размещённый на другом хосте, под вашим доменом или IP. Например:
- ваш VPS с IP 1.1.1.1 должен отдавать содержимое сайта, расположенного на сервере с IP 2.2.2.2;
- пользователи обращаются к test.com, но контент фактически подгружается с другого хоста;
- Nginx выполняет роль «прозрачного посредника», принимая запросы и передавая их к удалённому серверу.
Такое решение удобно при:
- миграции сайтов на новый сервер без простоя;
- тестировании обновлений на боевом домене;
- организации кеш-прокси для ускорения загрузки страниц;
- создании балансировщика между несколькими веб-серверами.
Ниже — пример конфигурации обратного прокси на Nginx для подобных задач.
Настройка обратного прокси в Nginx
Создайте или откройте конфигурационный файл сайта, например:
/etc/nginx/conf.d/test.conf
Впишите следующий код:
server {
listen 80;
server_name test.com;
root /var/www/test.com;
location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_set_header X-NginX-Proxy true;
proxy_pass http://2.2.2.2;
proxy_redirect off;
port_in_redirect off;
}
}**
В этом примере:
- сервер с IP 1.1.1.1 принимает все HTTP-запросы;
- они перенаправляются на удалённый хост 2.2.2.2;
- при этом сохраняются исходные заголовки (IP клиента, Host, Forwarded-For), что важно для корректной работы логов и приложений.
Если вы хотите использовать домен вместо IP, замените:
http://2.2.2.2
на
http://test.com
Добавление блока upstream
Чтобы упростить управление, можно вынести удалённый сервер в отдельный блок upstream. Это особенно полезно, если в будущем нужно будет добавить балансировку или несколько источников.
upstream backend {
server 2.2.2.2:80;
}
А в основной секции заменить строку:
proxy_pass http://backend;
Проверка конфигурации
После сохранения файла обязательно проверьте синтаксис:
nginx -t
Если ошибок нет, перезапустите службу:
systemctl reload nginx
Теперь ваш сервер по IP 1.1.1.1 или домену test.com будет проксировать весь трафик на удалённый сайт.
Безопасность и оптимизация
Чтобы прокси-сервер работал безопасно и эффективно:
- добавьте SSL-сертификат и включите HTTPS;
- ограничьте доступ по IP, если прокси используется для тестирования;
- при необходимости включите кеширование через директиву proxy_cache;
- используйте proxy_read_timeout и proxy_connect_timeout, чтобы избежать зависаний при медленных ответах источника.
Заключение
Настройка обратного прокси в Nginx — простой и гибкий способ показать удалённый сайт через свой VPS. Она подходит для временных миграций, балансировки или защиты инфраструктуры.
С помощью нескольких строк в конфигурации можно сделать сервер связующим звеном между пользователем и целевым хостом, сохранив стабильность и контроль над трафиком.
Используя VPS от AdminVPS, вы получаете все возможности для развёртывания производительного прокси-сервера с гибкой настройкой Nginx, SSL и автоматическими бекапами.
Читайте в блоге:
- Как проверить надёжность хостинга и выбрать лучшего провайдера
- Скрытый майнер на Windows Server: как обнаружить и удалить
- Оптимизация изображений на WordPress-сайте: простые шаги для ускорения загрузки