Nginx — различия между версиями
Материал из K.Wiki
Kirill (обсуждение | вклад) (→PHP) |
Kirill (обсуждение | вклад) |
||
| Строка 1: | Строка 1: | ||
| + | В этой статье описывается установка и настройка веб-сервера nginx для работы с [[PHP]] и [[MySQL]] в операционной системе [[Ubuntu]]. | ||
| + | |||
== Установка == | == Установка == | ||
# apt-get install nginx | # apt-get install nginx | ||
| + | |||
| + | == Файл конфигурации == | ||
| + | Настройки хранятся в файле <tt>/etc/nginx/nginx.conf</tt>. | ||
| + | |||
| + | # Пользователь, от имени которого запускается 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; service nginx restart | ||
| + | |||
== PHP == | == PHP == | ||
=== Установка php-fpm === | === Установка php-fpm === | ||
| Строка 11: | Строка 105: | ||
# service php5-fpm restart | # service php5-fpm restart | ||
для устранения некой уязвимости. | для устранения некой уязвимости. | ||
| + | |||
| + | == Ссылки == | ||
| + | * [http://nginx.org/ru/docs/ngx_core_module.html Основная функциональность - nginx.org] | ||
| + | * [http://nginx.org/ru/docs/http/ngx_http_core_module.html Модуль ngx_http_core_module - nginx.org] | ||
| + | * [http://nginx.org/ru/docs/http/ngx_http_gzip_module.html Модуль ngx_http_gzip_module - nginx.org] | ||
| + | * [http://howitmake.ru/blog/ubuntu/80.html Настройка Nginx с поддержкой PHP-FPM в Ubuntu 12.04 (включает: Nginx, php-fpm, MySQL, Memcached)] | ||
| + | * [http://rusadmin.biz/rukovodstva/ustanovka-i-nastrojka-php-fpm-na-debian/ Php-fpm + nginx на Debian 7: устанавливаем и настраиваем] | ||
| + | * [http://manualpages.pro/node/31 Полноценный http-сервер без Apache, на nginx+php-fpm под Debian Squeeze] | ||
Версия 08:12, 8 сентября 2014
В этой статье описывается установка и настройка веб-сервера nginx для работы с PHP и 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; service nginx restart
PHP
Установка php-fpm
# apt-get install php5-mysql php5-fpm
После установки нужно в файле /etc/php5/fpm/php.ini заменить
;cgi.fix_pathinfo=1
на
cgi.fix_pathinfo = 0
и перезапустить сервис
# service php5-fpm restart
для устранения некой уязвимости.
Ссылки
- Основная функциональность - nginx.org
- Модуль ngx_http_core_module - nginx.org
- Модуль ngx_http_gzip_module - nginx.org
- Настройка Nginx с поддержкой PHP-FPM в Ubuntu 12.04 (включает: Nginx, php-fpm, MySQL, Memcached)
- Php-fpm + nginx на Debian 7: устанавливаем и настраиваем
- Полноценный http-сервер без Apache, на nginx+php-fpm под Debian Squeeze