Конфиг nginx под сервер с 1гб портом

FF
На сайте с 02.10.2013
Offline
2
927

Нужен совет бывалых.

Имеется сервер:

S5 Dell UK

Quad Core 3.30Ghz (E3-1230v2)

32GB DDR3 ECC Memory

2 x 600GB SAS 15,000 RPM + 240GB Cachecade

H700 Raid Controller with BBU - Raid 0

4 Usable IP Addresses (RIPE /29)

DRAC Enterprise (Virtual KVM)

Unlimited

1Gbps Unmetered Port - 1Gbps Guaranteed

Debian Linux 6

На нём вертится сайт, посетителей ~ 5500, просмотров ~ 30000, главная задача сайта онлайн просмотр видео, средний вес которых 150Mb.

Нужно порекомендовать, чего не хватает в конфиге nginx или может наоборот, вот сам конфиг:

user www-data;

worker_processes 8;

#----------------Установка логов----------------------------------

error_log /var/log/nginx/error.log;

pid /var/run/nginx.pid;

events {

worker_connections 1024;

}

http {

include mime.types;

default_type application/octet-stream;

log_format main '$remote_addr - $remote_user [$time_local] "$request" '

'$status $body_bytes_sent "$http_referer" '

'"$http_user_agent" "$http_x_forwarded_for"';

#sendfile on;

client_max_body_size 5m;

#tcp_nopush on;

#keepalive_timeout 0;

keepalive_timeout 65;

#limit_req_zone $binary_remote_addr zone=one:10m rate=25r/s;

# Включение модуля для сжатия

gzip on;

# Минимальная длина ответа, при которой модуль будет жать, в байтах

gzip_min_length 1000;

# Разрешить сжатие для всех проксированных запросов

gzip_proxied any;

# MIME-типы которые необходимо жать (text/html указывать не надо, он сжимается всегда)

gzip_types text/css application/x-javascript text/plain text/xml image/x-icon;

# Запрещает сжатие ответа методом gzip для IE6

gzip_disable "msie6";

# Уровень gzip-компрессии

gzip_comp_level 8;

##

# Virtual Host Configs

##

include /etc/nginx/conf.d/*.conf;

server {

listen 80;

server_name domain.ru www.domain.ru;

access_log off;

root /home/user/www/domain.ru;

charset utf8;

location / {

index index.php;

proxy_pass http://127.0.0.1:8080/;

proxy_set_header Host $host;

proxy_set_header X-Real-IP $remote_addr;

proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

}

location ~* ^.+\.(jpg|jpeg|gif|png|ico|css|zip|tgz|gz|rar|bz2|doc|xls|exe|pdf|ppt|txt|tar|wav|bmp|rtf|js|docx|odt|7z|avi|mpeg|mpg|mp3|ogg|mov)$ {

#limit_req zone=one burst=30;

error_page 404 = @fallback;

}

location @fallback {

proxy_pass http://127.0.0.1:8080;

proxy_set_header Host $host;

proxy_set_header X-Real-IP $remote_addr;

proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

}

location ~ \.flv$ {

flv;

limit_rate 300k;

limit_rate_after 1m;

}

error_page 500 502 503 504 /50x.html;

location = /50x.html {

root html;

}

location ~ /\.ht {

deny all;

}

}

#include /usr/local/ispmgr/etc/nginx.domain;

}

Glueon
На сайте с 26.07.2013
Offline
172
#1

Сходу могу предложить поднять worker_connections. В остальном числа с потолка брать сложновато.

Есть много IP-сетей в аренду под прокси, парсинг, рассылки (optin), vpn и хостинг. Телега: @contactroot ⚒ ContactRoot команда опытных сисадминов (/ru/forum/861038), свой LIR: сдаем в аренду сети IPv4/v6 (/ru/forum/1012475).
P
На сайте с 16.03.2009
Offline
144
#2

user www-data;
worker_processes 8;
worker_rlimit_nofile 10240;
pid /var/run/nginx.pid;

events {
worker_connections 4096;
use epoll;
}

...

sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 30;

error_log /var/log/nginx/error.log;


location ~ \.flv$ {
root /home/user/www/domain.ru;
directio 4m;
flv;
limit_rate 300k;
limit_rate_after 1m;
}

Статику лучше отдавать nginx

location ~* ^.+\.(jpg|jpeg|gif|png|ico|css|zip|tgz|gz|rar|bz2|doc|xls|exe|pdf|ppt|txt|tar|wav|bmp|rtf|js|docx|odt|7z|avi|mpeg|mpg|mp3|ogg|mov)$ {
root /home/user/www/domain.ru;
}

Это стоит в конц самый запихнуть.

location @fallback {
proxy_pass http://127.0.0.1:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}

______________________________________

user www-data;
worker_processes 8;
worker_rlimit_nofile 10240;
pid /var/run/nginx.pid;

events {
worker_connections 4096;
use epoll;
}

http {
include mime.types;
default_type application/octet-stream;

log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';

error_log /var/log/nginx/error.log;

sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 30;



gzip on;
gzip_min_length 1000;
gzip_proxied any;
gzip_types text/css application/x-javascript text/plain text/xml image/x-icon;
gzip_disable "msie6";
gzip_comp_level 6;


##
# Virtual Host Configs
##
include /etc/nginx/conf.d/*.conf;

server {
listen 80;
server_name domain.ru www.domain.ru;
access_log off;
root /home/user/www/domain.ru;
charset utf8;

error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}

location ~ /\.ht {
deny all;
}

location ~* ^.+\.(jpg|jpeg|gif|png|ico|css|zip|tgz|gz|rar|bz2|doc|xls|exe|pdf|ppt|txt|tar|wav|bmp|rtf|js|docx|odt|7z|avi|mpeg|mpg|mp3|ogg|mov)$ {
root /home/user/www/domain.ru;
expires 1d;
error_page 404 = @fallback;
}

location ~ \.flv$ {
root /home/user/www/domain.ru;
directio 4m;
flv;
limit_rate 300k;
limit_rate_after 1m;
}

location / {
index index.php;
proxy_pass http://127.0.0.1:8080/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}


location @fallback {
proxy_pass http://127.0.0.1:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
}
FF
На сайте с 02.10.2013
Offline
2
#3

Спасибо за столь развернутый совет, но вот можешь объяснить, зачем location root /home/user/www/domain.ru; в

location ~ \.flv$ {

root /home/user/www/domain.ru;

directio 4m;

flv;

limit_rate 300k;

limit_rate_after 1m;

}

и 300k достаточно для меня?

P
На сайте с 16.03.2009
Offline
144
#4

На сколько я помню, в каждом новом location - под статику, нужно указывать root диру откуда nginx будет брать файлы.

Впрочем, можно проверить, не указать в location -> root. Далее по логам посмотреть, кто отдает пикчи -> nginx или apache.

limit_rate -> ограничивает скорость передачи ответа клиент. Тут исходя из битрейта видео. Думаю, 300k ~ 500k будет нормально.

limit_rate_after -> задаёт начальный объём данных, после передачи которого начинает ограничиваться скорость передачи ответа клиенту.

Здесь имеет смысл поставить 1-5m, чтобы пользователь не ждал, когда загружаются первые минуты видео.

iHead
На сайте с 25.04.2008
Offline
137
#5

root наследуется от вышестоящего уровня.

Рекомендуемый хостинг партнер 1С-Битрикс (https://www.ihead.ru/bitrix/), PHP-хостинг (https://www.ihead.ru/php/), доверенный партнер RU-CENTER (https://www.ihead.ru/news/573.html), официальный представитель REG.RU в Кирове (https://www.ihead.ru/news/851.html)
Mik Foxi
На сайте с 02.03.2011
Offline
1216
#6

gzip_comp_level 8;

Это бесполезно много, хватит 4-5, при более сильном сжатии нагрузка заметно больше, а качество сжатия не существенно улучшается.

Антибот, антиспам, веб фаервол, защита от накрутки поведенческих: https://antibot.cloud/ (8 лет на защите сайтов). Форум на замену серчу: https://foxi.biz/

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий