Вопрос или проблема
У меня есть несколько веб-сайтов, и я использую 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, важно учитывать следующие моменты:
-
Настройка Nginx как обратного прокси для Cloudflare:
Вы можете настроить ваш сервер Nginx на VPS для проксирования только запросов на порты 80 и 443 к Cloudflare. Для этого важно будет указать в конфигурации Nginx, что он должен пересылать запросы на определенный домен, который был настроен в Cloudflare.
-
Конфигурация 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; } }
-
Обработка других портов:
Для других служб, таких как ваш почтовый сервер или сервер видеонаблюдения, вы сможете настроить отдельные
server
блоки в той же конфигурации, чтобы они работали независимо от Nginx и не перенаправлялись на Cloudflare.Например:
server { listen 8080; # Или другой порт, который вы используете server_name ваш_домен.com; location / { # Здесь разместите свою логику для работы с другими сервисами proxy_pass http://localhost:ваш_порт; # Прокси внутрь VPS на локальный сервис } }
Основные моменты
-
Шифрование: Не забудьте установить SSL-сертификаты для работы с HTTPS, так как Cloudflare поддерживает шифрование данных.
-
Настройки Cloudflare: Убедитесь, что настройки DNS в Cloudflare корректно указывают на ваш VPS сервер, чтобы запросы правильно проходили через посреднический сервер.
-
Тестирование конфигурации: Рекомендуется тщательно протестировать новую архитектуру перед запуском в продакшн, чтобы избежать проблем с производительностью или доступностью.
Заключение
Использование Nginx в качестве обратного прокси между пользователем и Cloudflare возможно и может значительно улучшить гибкость и безопасность вашего веб-проектора. Правильная конфигурация также позволит вам локализовать другие виды трафика, обеспечивая при этом надежность и производительность.