# Определяем пользователя, под которым работает nginx
user www-data;
# Определяем количество рабочих процессов автоматически
# Параметр auto поддерживается только начиная с версий 1.3.8 и 1.2.5.
worker_processes auto;
# Определяем, куда писать лог ошибок и уровень логирования
error_log /var/log/nginx/error.log warn;
# Задаём файл, в котором будет храниться номер (PID) основного процесса
pid /var/run/nginx.pid;
events {
# Устанавливает максимальное количество соединений одного рабочего процесса. Следует выбирать значения от 1024 до 4096.
worker_connections 1024;
# Метод обработки соединений. Наличие того или иного метода определяется платформой.
# Как правило, NGINX сам умеет определять оптимальный метод, однако, его можно указать явно.
# use epoll - используется в Linux 2.6+
# use kqueue - FreeBSD 4.1+, OpenBSD 2.9+, NetBSD 2.0 и Mac OS X
use epoll
# Будет принимать максимально возможное количество соединений
#multi_accept on;
}
http {
include /etc/nginx/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"';
# Куда писать лог доступа и уровень логирования
access_log /var/log/nginx/access.log main;
##
# Basic Settings
##
# Используется, если количество имен серверов большое
#server_names_hash_max_size 1200;
#server_names_hash_bucket_size 64;
### Обработка запросов ###
# Метод отправки данных sendfile более эффективен, чем стандартный метод read+write
sendfile on;
# Будет отправлять заголовки и и начало файла в одном пакете
tcp_nopush on;
tcp_nodelay on;
### Информация о файлах ###
# Максимальное количество файлов, информация о которых будет содержаться в кеше
open_file_cache max=200000 inactive=20s;
# Через какое время информация будет удалена из кеша
open_file_cache_valid 30s;
# Кеширование информации о тех файлах, которые были использованы хотя бы 2 раза
open_file_cache_min_uses 2;
# Кеширование информации об отсутствующих файлах
open_file_cache_errors on;
# Удаляем информацию об nginx в headers
server_tokens off;
# Будет ждать 30 секунд перед закрытием keepalive соединения
keepalive_timeout 30s;
## Максимальное количество keepalive запросов от одного клиента
keepalive_requests 100;
# Разрешает или запрещает сброс соединений по таймауту
reset_timedout_connection on;
# Будет ждать 30 секунд тело запроса от клиента, после чего сбросит соединение
client_body_timeout 30s;
# В этом случае сервер не будет принимать запросы размером более 1Мб
client_max_body_size 1m;
# Если клиент прекратит чтение ответа, Nginx подождет 30 секунд и сбросит соединение
send_timeout 30s;
# Proxy #
# Задаёт таймаут для установления соединения с проксированным сервером.
# Необходимо иметь в виду, что этот таймаут обычно не может превышать 75 секунд.
proxy_connect_timeout 30s;
# Задаёт таймаут при передаче запроса проксированному серверу.
# Таймаут устанавливается не на всю передачу запроса, а только между двумя операциями записи.
# Если по истечении этого времени проксируемый сервер не примет новых данных, соединение закрывается.
proxy_send_timeout 30s;
# Задаёт таймаут при чтении ответа проксированного сервера.
# Таймаут устанавливается не на всю передачу ответа, а только между двумя операциями чтения.
# Если по истечении этого времени проксируемый сервер ничего не передаст, соединение закрывается.
proxy_read_timeout 30s;
##
# Gzip Settings
##
# Включаем сжатие gzip
gzip on;
# Для IE6 отключить
gzip_disable "msie6";
# Добавляет Vary: Accept-Encoding в Headers
gzip_vary on;
# Cжатие для всех проксированных запросов (для работы NGINX+Apache)
gzip_proxied any;
# Устанавливает степень сжатия ответа методом gzip. Допустимые значения находятся в диапазоне от 1 до 9
gzip_comp_level 6;
# Задаёт число и размер буферов, в которые будет сжиматься ответ
gzip_buffers 16 8k;
# Устанавливает минимальную HTTP-версию запроса, необходимую для сжатия ответа. Значение по умолчанию
gzip_http_version 1.1;
# 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;
# Минимальная длина файла, которую нужно сжимать
gzip_min_length 10;
# Подключаем конфиги конкретных сайтов
include /etc/nginx/conf.d/*.conf;
include /etc/nginx/vhosts/*/*;
# Далее определяем localhost
server {
server_name localhost;
disable_symlinks if_not_owner;
listen 80;
include /etc/nginx/vhosts-includes/*.conf;
location @fallback {
error_log /dev/null crit;
proxy_pass http://127.0.0.1:8080;
proxy_redirect http://127.0.0.1:8080 /;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
access_log off ;
}
}
}
Строка include /etc/nginx/vhosts/*; указывает на поддиректорию vhosts, в которой содержатся конфиги конкретно под каждый домен.
Пример того, что может содержаться там – example.com.conf
server {
server_name example.com www.example.com;
charset off;
disable_symlinks if_not_owner from=$root_path;
index index.html;
root $root_path;
set $root_path /var/www/example/data/www/example.com;
access_log /var/www/httpd-logs/example.com.access.log ;
error_log /var/www/httpd-logs/example.com.error.log notice;
#IP:Port сервера NGINX
listen 192.168.1.1:80;
include /etc/nginx/vhosts-includes/*.conf;
location / {
location ~ [^/]\.ph(p\d*|tml)$ {
try_files /does_not_exists @fallback;
}
location ~* ^.+\.(jpe?g|gif|png|svg|js|css|mp3|ogg|mpe?g|avi|zip|gz|bz2?|rar|swf)$ {
expires 365d;
try_files $uri $uri/ @fallback;
}
location / {
try_files /does_not_exists @fallback;
}
}
location @fallback {
proxy_pass http://127.0.0.1:8080;
proxy_redirect http://127.0.0.1:8080 /;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
access_log off ;
}
}
Настройка отладки в NGINX
В целях отладки настройки NGINX вы можете писать данные в логи, но я советую воспользоваться директивой add_header. С её помощью вы можете выводить различные данные в http headers.
Пример, как можно определить, в каком location обрабатывается правило:
location ~ [^/]\.ph(p\d*|tml)$ {
try_files /does_not_exists @fallback;
add_header X-debug-message "This is php" always;
}
location ~* ^.+\.(jpe?g|gif|png|svg|js|css|mp3|ogg|mpe?g|avi|zip|gz|bz2?|rar|swf)$ {
expires 365d; log_not_found off; access_log off;
try_files $uri $uri/ @fallback;
add_header X-debug-message "This is static file" always;
}
Теперь, если проверить, какие заголовки отдаёт статичный файл, например http://sheensay.ru/wp-content/uploads/2015/06/nginx.png, то вы увидите среди них и наш X-debug-message
Отладочная информация NGINX в заголовках HTTP headers
Отладочная информация NGINX в заголовках HTTP headers
Last active
October 17, 2016 16:48
-
-
Save vbratkev/87e226776490908fc57b2b384bb2c042 to your computer and use it in GitHub Desktop.
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment