Многие сайты и сервисы прячутся за Cloudflare. Это дешёвый щит от тупых ботов и лютых сканеров. Но иногда этот щит мешает тебе же: например, если надо забрать данные через свой прокси или сделать «проброс» API внутрь твоего проекта.

Самый частый облом — 403 Forbidden или редирект на страницу Cloudflare с капчей. Суть в том, что Cloudflare смотрит на User-Agent, заголовки и сертификат SSL. Если ты пытаешься пробиться curl’ом в лоб — получаешь бан или редирект.

Как обойти

Решается всё через proxy_ssl_server_name и proxy_ssl_name в твоём конфиге Nginx. Минимум — это чтобы прокси не палился, что он не браузер.

Пример:

location / {
    proxy_pass https://api-твоего-сервиса;
    proxy_ssl_server_name on;
    proxy_ssl_name $proxy_host;
}

Если надо ещё переписать урлы внутри запроса — юзаешь rewrite:

КопироватьРедактировать
location / {
    rewrite /(.*) /$1 break;
    proxy_pass https://api-твоего-сервиса;
    proxy_ssl_server_name on;
    proxy_ssl_name $proxy_host;
}

Зачем это нужно

📌 Сценариев — миллион:

  • Парсишь защищённый контент.
  • Делаешь свой гейтвей к стороннему API.
  • Хочешь скрыть прямой вызов у себя на фронте.
  • Обходишь лимиты по IP.

Что может пойти не так

👉 Если Cloudflare видит, что ты заходишь странно — будет требовать JavaScript-чек или капчу. Тут Nginx уже не поможет — нужен полноценный headless-браузер или прокси через Puppeteer.

👉 Если API требует авторизацию по токену — не забудь прокинуть заголовки:

proxy_set_header Authorization "Bearer твой_токен";

👉 Не держи proxy_pass на весь мир без ограничений — потом удивишься, почему трафик улетает в потолок.