Настройка и установка FastDL для сервера CS 1.6

#1 2021.04.04 07:38:08

0

Установим nginx:

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