Привилегии Sudo
sudo su
Установка NGINX из исходного кода
Чтобы установить NGINX в качестве CDN:
- Установка Nginx на FreeBSD
- 🌐 Как разместить несколько сайтов на Nginx с одним и тем же доменом (FQDN)
Конфигурация NGINX
Сначала создадим резервную копию конфигурации nginx
mv /etc/nginx/nginx.conf /etc/nginx/nginx.conf.backup
nano nginx.conf
Скопируйте и вставьте эту конфигурацию
user www-data;
worker_processes auto;
worker_rlimit_nofile 4096;
pid /run/nginx.pid;
events {
worker_connections 4096;
# multi_accept on;
}
http {
# Basic Setings
include mime.types;
default_type application/octet-stream;
sendfile on;
tcp_nopush on;
tcp_nodelay on;
server_tokens off;
keepalive_timeout 65;
# Log Settings
log_format video_log '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for" '
'rt=$request_time '
'ua="$upstream_addr" us="$upstream_status" '
'ut="$upstream_response_time" ul="$upstream_response_length" '
'cs=$upstream_cache_status';
access_log /var/log/nginx/access.log video_log;
# SSL Settings if needed
# ssl_protocols TLSv1.2 TLSv1.1 TLSv1;
# ssl_prefer_server_ciphers on;
# ssl_ciphers 'kEECDH+ECDSA+AES128 kEECDH+ECDSA+AES256 kEECDH+AES128 kEECDH+AES256 kEDH+AES128 kEDH+AES256 DES-CBC3-SHA +SHA !aNULL !eNULL !LOW !kECDH !DSS !MD5 !RC4 !EXP !PSK !SRP !CAMELLIA !SEED';
# add_header Strict-Transport-Security "max-age=31536000; preload" always;
# ssl_session_cache shared:SSL:10m;
# ssl_session_timeout 20m;
# ssl_certificate /etc/ssl/cert_file.crt;
# ssl_certificate_key /etc/ssl/key_file.key;
# ssl_dhparam /etc/ssl/dhparam_file.pem;
# Core Cache Setting
proxy_cache_key $uri;
proxy_cache_path /etc/nginx/cache levels=1:2 keys_zone=video_cache:10m max_size=10g
inactive=30d use_temp_path=off;
# Server For VoD Caching
server {
listen 80; # or use 443 if you use SSL
server_name your.domain.com;
location / {
# cache path
proxy_cache video_cache;
# server resends file only if the file changed
proxy_cache_revalidate on;
# use stale cache when updating on background
proxy_cache_background_update on;
proxy_cache_use_stale updating;
# Only 1 request gets to the origin at a time
proxy_cache_lock on;
# Set caching time to any HTTP response
proxy_cache_valid 200 7d;
# ignore request header
proxy_ignore_headers Cache-Control;
proxy_ignore_headers Set-Cookie;
proxy_ignore_headers Expires;
# addcache status header
add_header X-Cache-Status $upstream_cache_status;
# Using HTTP 1.1 protocol
proxy_http_version 1.1;
proxy_set_header Conenction "";
proxy_set_header Host $host;
proxy_pass http://upstreamserver;
}
}
}
Обратите внимание, что я отметил несколько директив в конфигурации, они напрямую влияют на функциональность CDN. Давайте обсудим их по порядку.
1. Первая – это, конечно же, server_name. Она используется для задания вашего домена. Измените их так, чтобы они соответствовали вашему домену.
2. proxy_cache_key, эта директива задает ключ файла кэша, или просто имя файла кэша. Имя файла кэша является результатом применения шифрования MD5 к ключу кэша. Например, если мы зададим $uri в качестве ключа, а затем от пользователя поступит запрос с uri: /images/my-sweet-cat.jpg, имя файла кэша будет c223cd4fbcf6ae9c78ab4f6dabd0beab.
3. proxy_cache_path, эта директива задает путь, где хранятся файлы кэша, и несколько важных параметров кэша. уровни определяют систему папок. Например, мы задаем директиву следующим образом
proxy_cache_path /etc/nginx/cache levels=1:2
система папок кэша будет выглядеть следующим образом:
/etc/nginx/cache/b/ea/c223cd4fbcf6ae9c78ab4f6dabd0beab
Обратите внимание, что в папке будет 1 цифра (b), а затем 2 цифры (ea). keys_zone – это размер общей памяти, используемой для хранения кэш-ключа и его метаданных в определенной зоне.
1 м key_zone достаточно для хранения 8 тыс. ключей. max_size контролирует максимальный объем данных кэша, который может быть сохранен на сервере, поэтому всегда устанавливайте max_size меньше, чем объем хранилища вашей виртуальной машины.
параметр inactive устанавливает, через какое время кэш будет удален, если к нему не обращался пользователь.
Например, если мы установим inactive=30d, то кэш будет автоматически удален с сервера, если к файлу кэша не обращались в течение 30 дней.
4. proxy_cache используется для присвоения идентификатора/имени и активации системы кэширования в определенном месте в конфигурации NGINX, чтобы соответствовать keys_zone в конфигурации proxy_cache_path. Обратите внимание, что proxy_cache video_cache соответствует keys_zone=video_cache:10m.
5. proxy_cache_revalidate включает повторную проверку элементов кэша с истекшим сроком хранения с помощью условных запросов с полями заголовков «If-Modified-Since» и «If-None-Match». Если кэш с истекшим сроком хранения все еще совпадает с версией upstream (на основе заголовка), CDN не будет загружать файл с сервера upstream, что повышает производительность CDN.
6. proxy_cache_background_update и proxy_cache_use_stale создадут фоновое задание в NGINX, чтобы обновить элемент кэша с истекшим сроком хранения, в то время как неактуальный кэшированный ответ будет возвращен клиенту, когда кэш все еще находится в состоянии обновления. Таким образом, клиенту не нужно ждать от вышестоящего сервера.
7. proxy_cache_lock минимизирует количество обращений к восходящему потоку за один раз. Только один запрос за раз будет допущен к заполнению нового кэша в соответствии с директивой proxy_cache_key.
8. proxy_cache_valid задает, сколько времени мы будем считать кэш действительным после запроса с сервера upstream. proxy_cache_valid 200 7d; означает, что мы будем кэшировать успешный запрос upstream (успех определяется HTTP-кодом 200) в течение 7 дней.
9. Последний, но не менее важный параметр proxy_pass определяет местоположение восходящего сервера или сервера, который мы хотим кэшировать. Вы можете изменить местоположение, чтобы оно соответствовало домену вашего сервера.
см. также:
- 🌐 Как отключить ведение журнала NGINX на Linux
- 🌐Как добавить конфигурационные файлы Nginx и куда их поместить
- 🌐 Список всех виртуальных хостов в Nginx
- 🐳 Как установить PHP, MySQL и Nginx с помощью Docker Compose
- 🌐 Формирование логов доступа Nginx для тестирования и анализа