Можно ли использовать обратный прокси nginx между пользователем (посетителем сайта) и CDN Cloudflare?

Вопрос или проблема

У меня есть несколько веб-сайтов, и я использую Cloudflare CDN с включенной настройкой прокси. Таким образом, сейчас цепочка выглядит так:

посетитель сайта -> Cloudflare -> мой веб-сервер

Я хочу добавить одну хитрость – добавить еще один VPS сервер в цепочку, который будет проксировать запросы только на портах 80 и 443 от посетителя сайта к Cloudflare и выполнять некоторые другие задачи для других портов (иметь свой почтовый сервер / сервер наблюдения и т.д.). Так что я в конечном итоге хочу получить:

посетитель сайта -> VPS с nginx как обратный прокси -> Cloudflare -> мой веб-сервер

Таким образом, для запросов на портах 80/443 VPS с nginx проксирует к Cloudflare, для других портов – не проксирует, а работает самостоятельно.

Я знаю, как использовать обратный прокси nginx для проксирования запросов на некоторых портах к другому внешнему IP-адресу, редактируя конфигурационный файл, например, etc/nginx/conf.d/1.2.3.4.conf, где 1.2.3.4 – это IP nginx сервера, вот так:

server {
listen 80;
server_name 1.2.3.4;
location / {
proxy_pass http://5.6.7.8; # внешний адрес реального веб-сервера
proxy_cache off;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $host;
proxy_redirect off;
charset off;
proxy_set_header X-Forwarder-For $proxy_add_x_forwarded_for;
}
}

Но вместо proxy_pass к http://5.6.7.8 мне нужно проксировать к Cloudflare CDN, где, конечно, известны только DNS-серверы, но нет внешнего IP-адреса. Потому что удалите Cloudflare CDN из цепочки.

Какое может быть решение в моем случае?

Я искал информацию об этом в Google, также в документации nginx, но без успеха.

Ответ или решение

Вопрос о возможности использования Nginx в качестве обратного прокси между пользователем и CDN Cloudflare является актуальным для многих веб-разработчиков и системных администраторов, стремящихся оптимизировать свою архитектуру серверов. Рассмотрим, как реализовать эту задачу, учитывая предложенные параметры и требования.

Существующий сценарий

На данный момент ваш сценарий выглядит следующим образом:

посетитель сайта -> Cloudflare -> ваш веб-сервер

Когда вы активируете проксирование в Cloudflare, это позволяет вам воспользоваться преимуществами, такими как кэширование, защита от DDoS-атак и ускорение загрузки страниц для пользователей. Однако вы хотите добавить промежуточный сервер, который будет выполнять функцию обратного прокси для серверов Cloudflare.

Предложенное решение

Перед тем как получить дополнительный VPS с установленным Nginx, важно учитывать следующие моменты:

  1. Настройка Nginx как обратного прокси для Cloudflare:

    Вы можете настроить ваш сервер Nginx на VPS для проксирования только запросов на порты 80 и 443 к Cloudflare. Для этого важно будет указать в конфигурации Nginx, что он должен пересылать запросы на определенный домен, который был настроен в Cloudflare.

  2. Конфигурация Nginx:

    Ниже приведен пример конфигурации, который можно использовать:

    server {
       listen 80;
       server_name ваш_домен.com; # Ваш домен, который проксируется через Cloudflare
    
       location / {
           proxy_pass https://ваш_домен.com;  # Перенаправление на Cloudflare
           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_redirect off;
           proxy_cache off;
       }
    }
    
    server {
       listen 443 ssl;  # Для HTTPS необходимо настроить SSL
       server_name ваш_домен.com;
    
       ssl_certificate /path/to/your/cert.pem;  # Укажите путь к SSL-сертификату
       ssl_certificate_key /path/to/your/key.pem;  # Укажите путь к закрытому ключу
    
       location / {
           proxy_pass https://ваш_домен.com;
           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_redirect off;
           proxy_cache off;
       }
    }
  3. Обработка других портов:

    Для других служб, таких как ваш почтовый сервер или сервер видеонаблюдения, вы сможете настроить отдельные server блоки в той же конфигурации, чтобы они работали независимо от Nginx и не перенаправлялись на Cloudflare.

    Например:

    server {
       listen 8080;  # Или другой порт, который вы используете
       server_name ваш_домен.com;
    
       location / {
           # Здесь разместите свою логику для работы с другими сервисами
           proxy_pass http://localhost:ваш_порт;  # Прокси внутрь VPS на локальный сервис
       }
    }

Основные моменты

  • Шифрование: Не забудьте установить SSL-сертификаты для работы с HTTPS, так как Cloudflare поддерживает шифрование данных.

  • Настройки Cloudflare: Убедитесь, что настройки DNS в Cloudflare корректно указывают на ваш VPS сервер, чтобы запросы правильно проходили через посреднический сервер.

  • Тестирование конфигурации: Рекомендуется тщательно протестировать новую архитектуру перед запуском в продакшн, чтобы избежать проблем с производительностью или доступностью.

Заключение

Использование Nginx в качестве обратного прокси между пользователем и Cloudflare возможно и может значительно улучшить гибкость и безопасность вашего веб-проектора. Правильная конфигурация также позволит вам локализовать другие виды трафика, обеспечивая при этом надежность и производительность.

Оцените материал
Добавить комментарий

Капча загружается...