Created
July 29, 2023 13:39
-
-
Save CHERTS/4b1ad58e06404267591636a9f2b08114 to your computer and use it in GitHub Desktop.
Nginx best config (base config) for Ubuntu
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
user nginx; | |
worker_processes auto; | |
worker_cpu_affinity auto; | |
worker_rlimit_nofile 10000; | |
worker_shutdown_timeout 30; | |
pid /var/run/nginx.pid; | |
events { | |
worker_connections 1024; | |
# Для Linux 2.6+ - epool, Для FreeBSD - kqueue | |
use epoll; | |
multi_accept on; | |
} | |
http { | |
## | |
# Basic Settings | |
## | |
# Удаляем информацию об nginx в headers | |
server_tokens off; | |
# Метод отправки данных sendfile более эффективен, чем стандартный метод read+write (по умолчанию: off) | |
sendfile on; | |
# Будет отправлять заголовки и и начало файла в одном пакете (по умолчанию: off) | |
tcp_nopush on; | |
tcp_nodelay on; | |
# Будет ждать 60 секунд перед закрытием keepalive соединения (по умолчанию: 75s) | |
keepalive_timeout 60s; | |
# Задаёт максимальное число запросов, которые можно сделать по одному keep-alive соединению. После того, как сделано максимальное число запросов, соединение закрывается. (по умолчанию: 100) | |
keepalive_requests 500; | |
# Разрешает или запрещает сброс соединений по таймауту (по умолчанию: off) | |
reset_timedout_connection on; | |
# Будет ждать 30 секунд тело запроса от клиента, после чего сбросит соединение (по умолчанию: 60s) | |
client_body_timeout 30s; | |
# В этом случае сервер не будет принимать запросы размером более 256Мб (по умолчанию: 1m) | |
client_max_body_size 256m; | |
# Если клиент прекратит чтение ответа, Nginx подождет 30 секунд и сбросит соединение (по умолчанию: 60s) | |
send_timeout 30s; | |
# Задаёт максимальный размер хэш-таблиц типов (по умолчанию: 1024) | |
types_hash_max_size 2048; | |
# Задаёт максимальный размер хэш-таблиц имён серверов (по умолчанию: 512) | |
server_names_hash_max_size 8192; | |
# Задаёт размер корзины в хэш-таблицах имён серверов (по умолчанию: зависит от размера строки кэша процессора) | |
server_names_hash_bucket_size 128; | |
include /etc/nginx/mime.types; | |
default_type application/octet-stream; | |
## | |
# SSL Settings | |
## | |
# Разрешает указанные протоколы | |
ssl_protocols TLSv1.2; | |
# Набор шифров, использовался сайт https://ssl-config.mozilla.org/ в режиме Intermediate | |
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384; | |
# Задаем кривую для ECDHE-шифров | |
ssl_ecdh_curve prime256v1:secp384r1:secp521r1; | |
# Указываем, что при использовании протоколов SSLv3 и TLSv1 (мы их не используем, они устарели) серверные шифры были более приоритетны, чем клиентские | |
ssl_prefer_server_ciphers off; | |
# Указываем файл с параметрами для DHE-шифров | |
ssl_dhparam /etc/nginx/ssl/dhparams.pem; | |
# Задаём тип (разделяемый) и размеры кэшей для хранения параметров сессий | |
ssl_session_cache shared:MAINSSL:10m; | |
# Задаёт время, в течение которого клиент может повторно использовать параметры сессии | |
ssl_session_timeout 1d; | |
## | |
# Logging Settings | |
## | |
log_format hosting '$remote_addr - $remote_user [$time_local] ' | |
'"$request" $status $bytes_sent ' | |
'"$http_referer" "$http_user_agent" ' | |
'"$gzip_ratio"'; | |
log_format main '$remote_addr - $remote_user [$time_local] ' | |
'"$request" $status $bytes_sent ' | |
'"$http_referer" "$http_user_agent" "$http_x_forwarded_for" "$host" $upstream_response_time'; | |
log_format bytes '$bytes_sent'; | |
log_format download '$remote_addr - $remote_user [$time_local] ' | |
'"$request" $status $bytes_sent ' | |
'"$http_referer" "$http_user_agent" ' | |
'"$http_range" "$sent_http_content_range"'; | |
log_format postdata '$remote_addr [$time_local] "$request" $status "$request_body" "$http_cookie"'; | |
access_log /var/log/nginx/access.log; | |
error_log /var/log/nginx/error.log; | |
## | |
# Gzip Settings | |
## | |
# Включаем сжатие gzip (по умолчанию: off) | |
gzip on; | |
# Устанавливает минимальную HTTP-версию запроса, необходимую для сжатия ответа. (по умолчанию: 1.1) | |
gzip_http_version 1.0; | |
# Задаёт число и размер буферов, в которые будет сжиматься ответ. | |
gzip_buffers 64 8k; | |
# Устанавливает степень сжатия ответа методом gzip. Более 5 лучше не ставить, т.к. будет повышеная нагрузка на CPU, а уровень сжатия изменится незначительно. | |
gzip_comp_level 5; | |
# Минимальная длина файла, которую нужно сжимать | |
gzip_min_length 512; | |
# MIME-типы файлов в дополнение к text/html, которые нужно сжимать | |
gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript application/javascript; | |
# Для IE6 отключить | |
gzip_disable msie6; | |
# Cжатие для всех проксированных запросов (для работы NGINX+Apache)(по умолчанию: off) | |
gzip_proxied any; | |
## | |
# nginx fastcgi config | |
## | |
# Задаёт размер буфера, в который будет читаться первая часть ответа, получаемого от FastCGI-сервера (по умолчанию: 4k или 8k) | |
fastcgi_buffer_size 128k; | |
# Задаёт число и размер буферов для одного соединения, в которые будет читаться ответ, получаемый от FastCGI-сервера(по умолчанию: 8 и 4k или 8k) | |
fastcgi_buffers 4 256k; | |
# При включённой буферизации ответов FastCGI-сервера, ограничивает суммарный размер буферов, которые могут быть заняты для отправки ответа клиенту, пока ответ ещё не прочитан целиком (по умолчанию 8k|16k размер ограничен двумя буферами, заданными директивами fastcgi_buffer_size и fastcgi_buffers) | |
fastcgi_busy_buffers_size 256k; | |
# Задаёт таймаут при чтении ответа FastCGI-сервера (по умолчанию: 60s) | |
fastcgi_read_timeout 120s; | |
## Detect when HTTPS is used | |
map $scheme $fastcgi_https { | |
default off; | |
https on; | |
} | |
## | |
# Virtual Host Configs | |
## | |
include /etc/nginx/conf.d/*.conf; | |
include /etc/nginx/sites-enabled/*; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment