HLS-кеширующий прокси с Nginx
Nginx можно использовать на edge-серверах в качестве HLS-кеширующего прокси. Если запрошенный файл не найден в кеше, он загружается с исходного сервера по адресу http://192.168.88.100:8000. Файл сохраняется в папке /opt/ramcache, а затем отдается клиенту.
Создайте конфигурационный файл Nginx для HLS-кеширующего прокси в /etc/nginx/conf.d/hls_proxy.conf:
proxy_cache_path "/opt/ramcache" use_temp_path=off keys_zone=hls:1m inactive=30s max_size=10g;
server { listen 4000; server_name _;
location ~* \.(m3u8)$ { proxy_cache off; expires -1; proxy_pass http://192.168.88.100:8000; include /etc/nginx/hls_proxy_params.conf; }
location ~* \.(ts)$ { proxy_pass http://192.168.88.100:8000; proxy_cache hls; proxy_cache_key $request_uri; proxy_cache_valid 200 10s; proxy_cache_lock on; proxy_cache_lock_timeout 5s; proxy_cache_lock_age 5s; include /etc/nginx/hls_proxy_params.conf; }}и общие параметры прокси в /etc/nginx/hls_proxy_params.conf:
proxy_redirect off;
proxy_connect_timeout 5s;proxy_send_timeout 180s;proxy_read_timeout 180s;
# Buffer for headersproxy_buffer_size 16k;proxy_buffers 512 32k;proxy_temp_file_write_size 512k;proxy_max_temp_file_size 256m;
# For keepaliveproxy_http_version 1.1;
proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $remote_addr;proxy_set_header X-Forwarded-Proto $scheme;
proxy_next_upstream error timeout http_502 http_504;proxy_next_upstream_tries 2;Создайте директорию для кеша nginx и установите владельца на соответствующего пользователя:
mkdir -p /opt/ramcachechown -R nginx:root /opt/ramcacheЗаголовок Expires
Заголовок раздела «Заголовок Expires»Важно, чтобы исходный сервер отправлял ответ с соответствующими заголовками, определяющими время истечения срока действия отдаваемого контента.
Заголовки Expires и X-Accel-Expires можно использовать для указания времени, в течение которого ответ считается актуальным и может кешироваться nginx. Заголовок Expires позволяет задать абсолютное время истечения контента, а X-Accel-Expires — относительное время в секундах.
В настройках Astra вы можете включить отправку этих заголовков в разделе Настройки -> HLS -> Использовать заголовок Expires