Nginx — различия между версиями
Kirill (обсуждение | вклад) (→Виртуальные хосты) |
Kirill (обсуждение | вклад) (→Файл конфигурации) |
||
| Строка 9: | Строка 9: | ||
# Пользователь, от имени которого запускается nginx. | # Пользователь, от имени которого запускается nginx. | ||
user www-data; | user www-data; | ||
| + | |||
# Количество рабочих процессов, рекомендуется устанавливать по числу ядер. | # Количество рабочих процессов, рекомендуется устанавливать по числу ядер. | ||
worker_processes 4; | worker_processes 4; | ||
| + | |||
# Файл с ID процесса. | # Файл с ID процесса. | ||
pid /run/nginx.pid; | pid /run/nginx.pid; | ||
| + | |||
# Директива уменьшает разрешение времени в рабочих процессах, за счёт чего уменьшается число системных вызовов gettimeofday(). | # Директива уменьшает разрешение времени в рабочих процессах, за счёт чего уменьшается число системных вызовов gettimeofday(). | ||
timer_resolution 100ms; | timer_resolution 100ms; | ||
| + | |||
# Ограничение на максимальное число открытых файлов. | # Ограничение на максимальное число открытых файлов. | ||
worker_rlimit_nofile 8192; | worker_rlimit_nofile 8192; | ||
| Строка 21: | Строка 25: | ||
# Максимальное число подключений к серверу на один рабочий процесс. | # Максимальное число подключений к серверу на один рабочий процесс. | ||
worker_connections 768; | worker_connections 768; | ||
| + | |||
# Эффективный метод обработки соединений, используемый в Linux 2.6+ | # Эффективный метод обработки соединений, используемый в Linux 2.6+ | ||
use epoll; | use epoll; | ||
| + | |||
# Если выключен, то рабочий процесс за один раз принимает только одно новое соединение. | # Если выключен, то рабочий процесс за один раз принимает только одно новое соединение. | ||
| − | # multi_accept on; | + | #multi_accept on; |
} | } | ||
| Строка 32: | Строка 38: | ||
## | ## | ||
| − | # | + | # Разрешить использовать sendfile(). |
sendfile on; | sendfile on; | ||
| − | # | + | |
| + | # Разрешить использование параметра сокета TCP_NOPUSH во FreeBSD или TCP_CORK в Linux. | ||
| + | # Параметр включается только при использовании sendfile. | ||
tcp_nopush on; | tcp_nopush on; | ||
| − | # | + | |
| + | # Разрешить использование параметра TCP_NODELAY. | ||
| + | # Параметр включаются только при переходе соединения в состояние keep-alive. | ||
tcp_nodelay on; | tcp_nodelay on; | ||
| − | # Таймаут, в течение которого keep-alive соединение с клиентом не будет закрыто со стороны сервера. Значение 0 запрещает keep-alive соединения с клиентами. | + | |
| + | # Таймаут, в течение которого keep-alive соединение с клиентом не будет закрыто со стороны сервера. | ||
| + | # Значение 0 запрещает keep-alive соединения с клиентами. | ||
keepalive_timeout 65; | keepalive_timeout 65; | ||
| − | # | + | |
| + | # Максимальный размер хэш-таблиц типов. | ||
types_hash_max_size 2048; | types_hash_max_size 2048; | ||
| − | # | + | |
| + | # Запретить выдавать версию nginx’а в сообщениях об ошибках и в поле “Server” заголовка ответа. | ||
server_tokens off; | server_tokens off; | ||
| − | # | + | |
| + | # Подключить описание MIME-типов. | ||
include /etc/nginx/mime.types; | include /etc/nginx/mime.types; | ||
| − | # | + | |
| + | # MIME-тип ответов по умолчанию. | ||
default_type application/octet-stream; | default_type application/octet-stream; | ||
| − | + | ||
## | ## | ||
# Настройки логов. | # Настройки логов. | ||
| Строка 56: | Строка 72: | ||
# Настройки файла логов доступа. | # Настройки файла логов доступа. | ||
access_log /var/log/nginx/access.log; | access_log /var/log/nginx/access.log; | ||
| + | |||
# Настройки файла логов ошибок. | # Настройки файла логов ошибок. | ||
error_log /var/log/nginx/error.log; | error_log /var/log/nginx/error.log; | ||
| Строка 64: | Строка 81: | ||
## | ## | ||
| − | # | + | # Разрешить сжатие ответа методом gzip. |
gzip on; | gzip on; | ||
| − | # | + | |
| + | # Запретить сжатие ответа методом gzip для запросов с полями заголовка “User-Agent”, совпадающими с заданными регулярными выражениями. | ||
gzip_disable "msie6"; | gzip_disable "msie6"; | ||
| − | # | + | |
| − | # gzip_vary on; | + | # Разрешить или запретить выдавать в ответе поле заголовка “Vary: Accept-Encoding”, если активны директивы gzip, gzip_static или gunzip. |
| − | # | + | #gzip_vary on; |
| − | # gzip_proxied any; | + | |
| − | # | + | # Разрешить или запретить сжатие ответа методом gzip для проксированных запросов в зависимости от запроса и ответа. |
| − | # gzip_comp_level 6; | + | #gzip_proxied any; |
| − | # | + | |
| − | # gzip_buffers 16 8k; | + | # Степень сжатия ответа методом gzip. |
| − | # | + | # Допустимые значения находятся в диапазоне от 1 до 9. |
| − | # gzip_http_version 1.1; | + | #gzip_comp_level 6; |
| − | # | + | |
| + | # Число и размер буферов, в которые будет сжиматься ответ. | ||
| + | #gzip_buffers 16 8k; | ||
| + | |||
| + | # Минимальная HTTP-версия запроса, необходимую для сжатия ответа. | ||
| + | #gzip_http_version 1.1; | ||
| + | |||
| + | # Разрешить сжатие ответа методом gzip для указанных MIME-типов в дополнение к “text/html”. | ||
gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript; | gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript; | ||
| Строка 88: | Строка 113: | ||
# Подключить дополнительные файлы настроек. | # Подключить дополнительные файлы настроек. | ||
include /etc/nginx/conf.d/*.conf; | include /etc/nginx/conf.d/*.conf; | ||
| + | |||
# Подключить настройки активных сайтов. | # Подключить настройки активных сайтов. | ||
include /etc/nginx/sites-enabled/*; | include /etc/nginx/sites-enabled/*; | ||
} | } | ||
| − | Для учета изменений настроек нужно | + | Для учета изменений настроек нужно перезагрузить службу |
# service nginx reload | # service nginx reload | ||
Версия 10:53, 12 сентября 2014
В этой статье описывается установка и настройка веб-сервера nginx для работы с PHP-FPM и MySQL в операционной системе Ubuntu.
Содержание
Установка
# apt-get install nginx
Файл конфигурации
Настройки хранятся в файле /etc/nginx/nginx.conf.
# Пользователь, от имени которого запускается nginx.
user www-data;
# Количество рабочих процессов, рекомендуется устанавливать по числу ядер.
worker_processes 4;
# Файл с ID процесса.
pid /run/nginx.pid;
# Директива уменьшает разрешение времени в рабочих процессах, за счёт чего уменьшается число системных вызовов gettimeofday().
timer_resolution 100ms;
# Ограничение на максимальное число открытых файлов.
worker_rlimit_nofile 8192;
events {
# Максимальное число подключений к серверу на один рабочий процесс.
worker_connections 768;
# Эффективный метод обработки соединений, используемый в Linux 2.6+
use epoll;
# Если выключен, то рабочий процесс за один раз принимает только одно новое соединение.
#multi_accept on;
}
http {
##
# Основные настройки.
##
# Разрешить использовать sendfile().
sendfile on;
# Разрешить использование параметра сокета TCP_NOPUSH во FreeBSD или TCP_CORK в Linux.
# Параметр включается только при использовании sendfile.
tcp_nopush on;
# Разрешить использование параметра TCP_NODELAY.
# Параметр включаются только при переходе соединения в состояние keep-alive.
tcp_nodelay on;
# Таймаут, в течение которого keep-alive соединение с клиентом не будет закрыто со стороны сервера.
# Значение 0 запрещает keep-alive соединения с клиентами.
keepalive_timeout 65;
# Максимальный размер хэш-таблиц типов.
types_hash_max_size 2048;
# Запретить выдавать версию nginx’а в сообщениях об ошибках и в поле “Server” заголовка ответа.
server_tokens off;
# Подключить описание MIME-типов.
include /etc/nginx/mime.types;
# MIME-тип ответов по умолчанию.
default_type application/octet-stream;
##
# Настройки логов.
##
# Настройки файла логов доступа.
access_log /var/log/nginx/access.log;
# Настройки файла логов ошибок.
error_log /var/log/nginx/error.log;
##
# Настройки сжатия.
##
# Разрешить сжатие ответа методом gzip.
gzip on;
# Запретить сжатие ответа методом gzip для запросов с полями заголовка “User-Agent”, совпадающими с заданными регулярными выражениями.
gzip_disable "msie6";
# Разрешить или запретить выдавать в ответе поле заголовка “Vary: Accept-Encoding”, если активны директивы gzip, gzip_static или gunzip.
#gzip_vary on;
# Разрешить или запретить сжатие ответа методом gzip для проксированных запросов в зависимости от запроса и ответа.
#gzip_proxied any;
# Степень сжатия ответа методом gzip.
# Допустимые значения находятся в диапазоне от 1 до 9.
#gzip_comp_level 6;
# Число и размер буферов, в которые будет сжиматься ответ.
#gzip_buffers 16 8k;
# Минимальная HTTP-версия запроса, необходимую для сжатия ответа.
#gzip_http_version 1.1;
# Разрешить сжатие ответа методом gzip для указанных MIME-типов в дополнение к “text/html”.
gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript;
##
# Настройки виртуальных хостов.
##
# Подключить дополнительные файлы настроек.
include /etc/nginx/conf.d/*.conf;
# Подключить настройки активных сайтов.
include /etc/nginx/sites-enabled/*;
}
Для учета изменений настроек нужно перезагрузить службу
# service nginx reload
Ссылки
- Основная функциональность - nginx.org
- Модуль ngx_http_core_module - nginx.org
- Модуль ngx_http_gzip_module - nginx.org
Виртуальные хосты
Виртуальные хосты используются для описания параметров отдельных сайтов, которые обслуживает nginx. По-умолчанию, настройки хранятся в отдельных файлах в директории /etc/nginx/sites-available/, а для активации хоста нужно создать символьную ссылку в директории /etc/nginx/sites-enabled/ на соответствующий файл настроек
# ln -s /etc/nginx/sites-available/{имя сайта} /etc/nginx/sites-enabled/{имя сайта}
и перезапустить сервер
# service nginx reload
Один файл может содержать описание для нескольких сайтов, каждое должно находиться логическом блоке
server {
# Обрабатываемый порт.
listen 80;
# Обрабатываемый порт для определенного домена.
#listen {имя домена} 8080;
# Обрабатываемый порт для ipv6.
#listen [::]:80 [{имя домена}] ipv6only=on;
# Директория с файлами сайта.
root /var/www/{имя сайта}/www;
# Для того, чтобы сайт был доступен по адресам http://{имя домена 1}/ и http://{имя домена 2}/.
server_name {имя домена 1} {имя домена 2};
# Файл лога для проблем доступа.
access_log /var/www/{имя сайта}/access.log;
# Файл лога для ошибок.
error_log /var/www/{имя сайта}/error.log;
# Подключение шаблона со стандартными настройками.
include /etc/nginx/templates/default;
# Страница для ошибки 404.
#error_page 404 /404.html;
# Перенаправление при ошибках на статическую страницу /50x.html.
#error_page 500 502 503 504 /50x.html;
#location = /50x.html {
# root /var/www/{имя сайта}/www;
#}
}
Шаблоны
Благодаря директиве include в блок настроек виртуального хоста можно включать внешние файлы. Шаблоны принято использовать для описания общих настроек. Файлы шаблонов, как правило, сохраняются в директорию /etc/nginx/templates/.
Например, стандартные настройки HTTP-хоста в файле /etc/nginx/templates/default
# Файлы, открываемые при пустом пути, в порядке приоритета.
index index.html index.htm;
location / {
# Сначала запрос обрабатывается как файл, потом как директория, потом происходит переход на страницу 404.
try_files $uri $uri/ =404;
# Раскоментировать для использования naxsi в этой области.
#include /etc/nginx/naxsi.rules
}
# Закрыть доступ к файлами .htaccess и .htpassword.
location ~ /\.ht {
deny all;
}
# Отключить логи, связанные с отсутствием иконки сайта.
location = /favicon.ico {
log_not_found off;
access_log off;
}
# Доступ к файлу с настройками для поисковых роботов.
location = /robots.txt {
allow all;
log_not_found off;
access_log off;
}
PHP
Для работы с PHP-FPM достаточно создать шаблон /etc/nginx/templates/php ({имя домена} нужно заменить своим значением)
# Адрес FastCGI-сервера (имя или адрес и порт или путь к UNIX-сокету).
# Указывается в настройках виртуального хоста.
#fastcgi_pass
# Имя файла, который при создании переменной $fastcgi_script_name будет добавляться после URI, если URI заканчивается слэшом.
fastcgi_index index.php;
# Передавать ли клиенту ответы FastCGI-сервера с кодом больше либо равным 300.
#fastcgi_intercept_errors on;
# Добавить параметры из /etc/nginx/fastcgi_param.
include fastcgi_params;
# Путь к скрипту, который будет передан в PHP-FPM.
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
# При использовании chroot окружения нужно указывать путь по-другому.
#fastcgi_param SCRIPT_FILENAME /{имя домена}$fastcgi_script_name;
# Закрывать ли соединение с FastCGI-сервером в случае, если клиент закрыл соединение, не дождавшись ответа.
fastcgi_ignore_client_abort off;
и добавить в настройки виртуального хоста блок ({имя сайта} нужно заменить своим значением)
# Настройки обработки PHP-скриптов.
location ~ \.php$ {
# Подключение шаблона с настройками PHP.
include /etc/nginx/templates/php;
# Путь к UNIX-сокету PHP-FPM.
fastcgi_pass unix:/var/run/php5-fpm_{имя сайта}.sock;
}
С помощью директивы fastcgi_param и параметра PHP_VALUE можно изменять настройки службы PHP. Если использовать параметр PHP_ADMIN_VALUE, то указанная настройка не сможет быть изменена скриптом. Например
fastcgi_param PHP_VALUE "memory_limit = 256M"; fastcgi_param PHP_VALUE "max_execution_time = 60";