#1 2021.04.04 07:38:08
0
Установим nginx:
Debian/Ubuntu:
CentOS/Fedora:
Далее переходим в nginx и удаляем стандартный конфиг:
И используем следующий конфиг:
Немного подробней о конфиге:
Начнём с директивы worker_processes. Если Nginx выполняет работу нагружающую процессор (например SSL или gzipping), то оптимально установить эту директиву в значение, равное количеству ядер процессора. Выигрыш при большем значении вы получите только в случае обработки очень большого количества статики.
# This number should be, at maximum, the number of CPU cores on your system.
Также, директива worker_processes, умноженная на worker_connections из секции event, даст максимально возможное количество клиентов.
# Determines how many clients will be served by each worker process.
Теперь разберёмся с логированием. Во-первых, оставим логирование только критических ошибок.
# Only log critical errors.
Если вы совсем бесстрашны и хотите отключить логирование ошибок целиком, то помните, что error_log off вам не поможет. Вы просто получите весь лог в файле off. Для отключения логирования ошибок надо делать так:
# Fully disable log errors.
А вот логи доступа не так страшно отключить полностью.
# Disable access log altogether.
Или, хотя бы, включить буфер чтения / записи.
# Buffer log writes to speed up IO.
Для обработки подключений Nginx поддерживает ряд методов. Наиболее эффективным для Linuxявляется метод epoll.
# The effective method, used on Linux 2.6+, optmized to serve many clients with each thread.
Для того, чтобы Nginx пытался принять максимальное количество подключений, необходимо включить директиву multi_accept. Однако при слишком маленьком значении worker_connections, их лимит может быть очень быстро исчерпан.
# Accept as many connections as possible, after nginx gets notification about a new connection.
Директива sendfile активирует копирование данных между файловыми дескрипторами средствами ядра, что намного эффективнее связки read() + write(), которая требует обмена данными с пользовательским пространством.
# Sendfile copies data between one FD and other from within the kernel.
После включения sendfile, можно заставить Nginx отправлять заголовки HTTP-ответов одним пакетом, а не отдельным частями.
# Causes nginx to attempt to send its HTTP response head in one packet, instead of using partial frames.
Для keep-alive подключений можно выключить буферизацию (алгоритм Нейгла). Это будет полезно при частом запросе маленьких объёмов данных в режиме реального времени, без получения немедленного ответа, когда важна своевременная доставка данных. Классический пример — события наведения мышкой.
# Don't buffer data-sends (disable Nagle algorithm).
И, конечно же, сжатие данных. Плюс — единственный и очевидный: уменьшение размера пересылаемого трафика. Минус — единственный и очевидный: не работает для MSIE 6 и ниже. Отключить сжатие для этих браузеров можно директивой gzip_disable, указав в качестве значения специальную маску “msie6”, которая соответствует регулярному выражению “MSIE [4-6]\.”, но работает быстрее
# Compression.
Далее создаём папку и прилинковываем файлы с папки cstrike к нашему серверу и перезапускаем nginx:
Проверяем доступность файлов по ссылке:
И добавляем в server.cfg следующие строки:
Debian/Ubuntu:
apt update && apt upgrade
apt install nginx
CentOS/Fedora:
yum update && yum upgrade
yum install nginx
Далее переходим в nginx и удаляем стандартный конфиг:
cd /etc/nginx
rm -f sites-available/default && rm nginx.conf
nano nginx.conf
И используем следующий конфиг:
user root;
worker_processes auto;
error_log /var/log/nginx/error.log crit;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
use epoll;
}
http {
include /etc/nginx/mime.types;
access_log off;
sendfile on;
tcp_nopush on;
keepalive_timeout 15;
tcp_nodelay on;
directio 5m;
expires max;
include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;
server {
#listen 80;
location / {
root /var/www/;
index index.html index.htm;
set $limit_rate 5m; #ограничение скорости скачивания до 5мбайт
}
location ~ /(.*)/.*\.cfg { # запрещаем скачивать cfg файлы
deny all;
}
location ~ /(.*)/addons/ { # запрещаем доступ к addons
deny all;
}
location ~ /(.*)/logs/ { # запрещаем доступ к addons
deny all;
}
}
}
Немного подробней о конфиге:
Начнём с директивы worker_processes. Если Nginx выполняет работу нагружающую процессор (например SSL или gzipping), то оптимально установить эту директиву в значение, равное количеству ядер процессора. Выигрыш при большем значении вы получите только в случае обработки очень большого количества статики.
# This number should be, at maximum, the number of CPU cores on your system.
worker_processes 24;
Также, директива worker_processes, умноженная на worker_connections из секции event, даст максимально возможное количество клиентов.
# Determines how many clients will be served by each worker process.
worker_connections 4000;
Теперь разберёмся с логированием. Во-первых, оставим логирование только критических ошибок.
# Only log critical errors.
error_log /var/log/nginx/error.log crit
Если вы совсем бесстрашны и хотите отключить логирование ошибок целиком, то помните, что error_log off вам не поможет. Вы просто получите весь лог в файле off. Для отключения логирования ошибок надо делать так:
# Fully disable log errors.
error_log /dev/null crit;
А вот логи доступа не так страшно отключить полностью.
# Disable access log altogether.
access_log off;
Или, хотя бы, включить буфер чтения / записи.
# Buffer log writes to speed up IO.
access_log /var/log/nginx/access.log main buffer=16k;
Для обработки подключений Nginx поддерживает ряд методов. Наиболее эффективным для Linuxявляется метод epoll.
# The effective method, used on Linux 2.6+, optmized to serve many clients with each thread.
use epoll;
Для того, чтобы Nginx пытался принять максимальное количество подключений, необходимо включить директиву multi_accept. Однако при слишком маленьком значении worker_connections, их лимит может быть очень быстро исчерпан.
# Accept as many connections as possible, after nginx gets notification about a new connection.
multi_accept on;
Директива sendfile активирует копирование данных между файловыми дескрипторами средствами ядра, что намного эффективнее связки read() + write(), которая требует обмена данными с пользовательским пространством.
# Sendfile copies data between one FD and other from within the kernel.
sendfile on;
После включения sendfile, можно заставить Nginx отправлять заголовки HTTP-ответов одним пакетом, а не отдельным частями.
# Causes nginx to attempt to send its HTTP response head in one packet, instead of using partial frames.
tcp_nopush on;
Для keep-alive подключений можно выключить буферизацию (алгоритм Нейгла). Это будет полезно при частом запросе маленьких объёмов данных в режиме реального времени, без получения немедленного ответа, когда важна своевременная доставка данных. Классический пример — события наведения мышкой.
# Don't buffer data-sends (disable Nagle algorithm).
tcp_nodelay on;
И, конечно же, сжатие данных. Плюс — единственный и очевидный: уменьшение размера пересылаемого трафика. Минус — единственный и очевидный: не работает для MSIE 6 и ниже. Отключить сжатие для этих браузеров можно директивой gzip_disable, указав в качестве значения специальную маску “msie6”, которая соответствует регулярному выражению “MSIE [4-6]\.”, но работает быстрее
# Compression.
gzip on;
gzip_min_length 10240;
gzip_proxied expired no-cache no-store private auth;
gzip_types text/plain text/css text/xml text/javascript application/x-javascript application/xml;
gzip_disable "msie6";
Далее создаём папку и прилинковываем файлы с папки cstrike к нашему серверу и перезапускаем nginx:
mkdir /var/www
ln -s /serv/cs_serv/cstrike /var/www/fastdl
/etc/init.d/nginx restart
Проверяем доступность файлов по ссылке:
http://IP/fastdl/maps/de_dust2.bsp
И добавляем в server.cfg следующие строки:
sv_downloadurl «http://IP/fastdl/»
sv_allowdownload 1
Отредактировано: Panda 2021.04.04 07:38:28