Разверните OpenClaw в облаке в один клик
Вход/ Регистрация
На главную
Сети

Ограничение прямого доступа к серверу-источнику

Для CDN-ресурса можно настроить пользовательский HTTP-заголовок, который будет автоматически добавляться ко всем запросам от CDN к серверу-источнику. На стороне сервера-источника можно проверять наличие и значение этого заголовка, отклоняя любые запросы без него.

Такой подход позволяет защитить сервер-источник от прямого доступа без необходимости использовать список IP-адресов CDN. Сервер остается доступен по сети, однако прямые обращения к нему будут получать ответ 403 Forbidden.

Этот механизм защищает только сервер-источник от обхода CDN. Он не ограничивает доступ пользователей к файлам через домен раздачи. Для ограничения доступа к контенту используйте Secure token.

Настройка HTTP-заголовка в CDN

Чтобы добавить пользовательский заголовок:

  1. Откройте нужный ресурс в разделе «CDN».

  2. Перейдите во вкладку «Управление».

  3. Нажмите кнопку «Настроить» напротив пункта «HTTP-заголовки».

  4. Включите опцию «Заголовки запросов».

  5. Укажите произвольное имя заголовка и его значение. В качестве значения рекомендуем использовать случайно сгенерированную строку — так ее невозможно будет подобрать стороннему пользователю.

  6. Нажмите кнопку «Сохранить» и дождитесь применения настроек.

Настройка HTTP-заголовка для CDN

Пример настройки ограничения доступа

В качестве примера настроим сервер-источник на базе Nginx, который будет отдавать статический файл только при наличии секретного заголовка.

Настройка сервера-источника

Установите Nginx:

    
sudo apt update sudo apt install -y nginx

Создайте директорию для статических файлов:

    
sudo mkdir -p /var/www/origin-static

Создайте html-страницу:

    
echo 'Привет с сервера-источника' | sudo tee /var/www/origin-static/hello.txt

Создайте файл конфигурации /etc/nginx/conf.d/cdn-origin.conf:

    
map $http_x_cdn_origin_secret $cdn_origin_secret_ok { default 0; "change-me-to-long-random-secret" 1; } server { listen 80; server_name origin.example.site; root /var/www/origin-static; location / { if ($cdn_origin_secret_ok = 0) { return 403; } try_files $uri =404; add_header Cache-Control "public, max-age=60"; } }

Замените значение change-me-to-long-random-secret на случайную строку. Сгенерировать ее можно командой:

    
openssl rand -base64 48 | tr -dc 'A-Za-z0-9' | head -c 30 echo

Также укажите собственный домен вместо origin.example.site.

В блоке:

    
map $http_x_cdn_origin_secret $cdn_origin_secret_ok { default 0; "change-me-to-long-random-secret" 1; }

Nginx проверяет значение заголовка X-CDN-Origin-Secret. Если значение совпадает с указанным в конфигурации, запрос будет обработан. В противном случае сервер вернет ошибку 403 Forbidden.

Если включен стандартный сайт Nginx, отключите его:

    
sudo rm -f /etc/nginx/sites-enabled/default

Проверьте конфигурацию:

    
sudo nginx -t

Примените изменения:

    
sudo systemctl reload nginx

Проверка работы сервера-источника

Выполните запрос без заголовка:

    
curl -i "http://origin.example.site/hello.txt"

В ответ должен быть получен статус:

    
403 Forbidden

Теперь выполните запрос с корректным заголовком:

    
curl -i -H "X-CDN-Origin-Secret: сгенерированная_случайная_строка" "http://origin.example.site/hello.txt"

Ожидаемый результат:

    
200 OK

Настройка сертификата

Установите Certbot:

    
sudo apt update sudo apt install -y certbot python3-certbot-nginx

Выпустите сертификат:

    
sudo certbot --nginx -d origin.example.site

Certbot автоматически добавит SSL-настройки в конфигурацию Nginx и предложит настроить перенаправление с HTTP на HTTPS.

Настройка CDN-ресурса

Создайте CDN-ресурс и в качестве источника укажите домен, настроенный на предыдущем этапе.

После создания ресурса:

  1. Откройте его в панели управления.

  2. Перейдите во вкладку «Управление».

  3. Нажмите кнопку «Настроить» напротив пункта «HTTP-заголовки».

  4. Включите опцию «Заголовки запросов».

  5. Укажите:

    • имя заголовка — X-CDN-Origin-Secret;

    • значение — ту же случайную строку, которая указана в конфигурации Nginx.

  6. Нажмите кнопку «Сохранить» и дождитесь обновления ресурса.

Проверка

Попробуйте обратиться к файлу напрямую на сервере-источнике:

    
curl -i "https://origin.example.site/hello.txt"

Сервер должен вернуть ошибку 403 Forbidden.

Теперь выполните запрос через CDN-домен:

    
curl -i "http://1cxiuba12bn.cdn.twcstorage.ru/hello.txt"

В ответ вы получите содержимое файла и статус 200 OK.

Обратите внимание, что заголовок X-CDN-Origin-Secret не передается конечному пользователю. Он используется только для взаимодействия между CDN и сервером-источником.

Была ли статья полезна?
Ваша оценка очень важна
Пока нет комментариев