В какой-то момент для владельца нескольких сайтов возникает задача настроить проксирование, то есть программного посредника для загрузки контента на свой конкретный сайт из других источников — не обязательно своих. Причины могут быть разными, но результат сводится к тому, чтобы показывать по определённому пути сайта контент из стороннего источника, как в буквенном виде (URL), так и в цифровом (IP). Cloudflare — это крупнейший провайдер таких сервисов, как сеть доставки содержимого (CDN), защита от распределённых атак (DDoS) и обслуживание доменных имён (DNS). В нашем случае, инструментом для проксирования выбран веб-сервер Nginx.
Приведу примеры самых распространённых ситуаций, которые потребуют применение этой технологии:
- Обеспечение стабильной работы сайта при возрастающей нагрузке на сервер, который может ней не справиться (load balancer).
- Обход блокировок, чтобы создать полноценное зеркало заблокированного ресурса.
- Подключение на свой сайт какого-нибудь дополнительного внешнего сервиса (например, кредитного калькулятора и т.п).
Именно о третьем варианте и пойдёт речь в этой статье.
Как человек, трепетно относящийся к удобству использования, скорости загрузки и безопасности, в качестве управления своими доменными именами выбрал Cloudflare.
Задача: подключить кредитный калькулятор, который реализован на одном из моих сайтов https://example-1.com/calculator к другому https://example-2.com/tools/calculator. Оба домена управляются через консоль Cloudflare с SSL настройками — Full (strict).
Часть конфигурации сайта https://example-1.com для понимания, как реализован на нём протокол SSL для Nginx:
server {
listen 80;
server_name example-1.com;
return 301 https://$server_name$request_uri;
}server {
listen 443 ssl;
server_name example-1.com;ssl_certificate /etc/nginx/ssl/example-1.com.pem;
ssl_certificate_key /etc/nginx/ssl/example-1.com.key;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
}
Конфигурация сайта https://example-2.com локации /tools/calculator для Nginx:
location /tools/calculator {
proxy_pass https://example-1.com/calculator;
proxy_pass_header Server;
}
При такой конфигурации Nginx мы получаем следующую ошибку (error 1000) от Cloudflare:
Чтобы избавиться от этой ошибки, добавляем параметр proxy_ssl_server_name on
и наш Nginx прокси начинает подтаскивать контент из https://example-1.com/calculator. Зайдя на https://example-2.com/tools/calculator вы не поймёте, что все вычисления происходят на другом сайте.
location /tools/calculator {
proxy_pass https://example-1.com/calculator;
proxy_pass_header Server;
proxy_ssl_server_name on;
}
Обсуждение закрыто.