Nginx — различия между версиями
Kirill (обсуждение | вклад) (→PHP) |
Kirill (обсуждение | вклад) (→Виртуальные хосты) |
||
Строка 113: | Строка 113: | ||
listen 80; | listen 80; | ||
# Обрабатываемый порт для определенного домена. | # Обрабатываемый порт для определенного домена. | ||
− | # listen {имя домена} 8080; | + | #listen {имя домена} 8080; |
# Обрабатываемый порт для ipv6. | # Обрабатываемый порт для ipv6. | ||
− | # listen [::]:80 [{имя домена}] ipv6only=on; | + | #listen [::]:80 [{имя домена}] ipv6only=on; |
# Директория с файлами сайта. | # Директория с файлами сайта. | ||
Строка 125: | Строка 125: | ||
# Файл лога для проблем доступа. | # Файл лога для проблем доступа. | ||
access_log /var/www/{имя сайта}/access.log; | access_log /var/www/{имя сайта}/access.log; | ||
+ | |||
# Файл лога для ошибок. | # Файл лога для ошибок. | ||
error_log /var/www/{имя сайта}/error.log; | error_log /var/www/{имя сайта}/error.log; | ||
Строка 132: | Строка 133: | ||
# Страница для ошибки 404. | # Страница для ошибки 404. | ||
− | # error_page 404 /404.html; | + | #error_page 404 /404.html; |
+ | |||
# Перенаправление при ошибках на статическую страницу /50x.html. | # Перенаправление при ошибках на статическую страницу /50x.html. | ||
− | # error_page 500 502 503 504 /50x.html; | + | #error_page 500 502 503 504 /50x.html; |
− | # location = /50x.html { | + | #location = /50x.html { |
− | # | + | # root /var/www/{имя сайта}/www; |
− | # } | + | #} |
} | } | ||
Строка 152: | Строка 154: | ||
# Сначала запрос обрабатывается как файл, потом как директория, потом происходит переход на страницу 404. | # Сначала запрос обрабатывается как файл, потом как директория, потом происходит переход на страницу 404. | ||
try_files $uri $uri/ =404; | try_files $uri $uri/ =404; | ||
+ | |||
# Раскоментировать для использования naxsi в этой области. | # Раскоментировать для использования naxsi в этой области. | ||
− | # include /etc/nginx/naxsi.rules | + | #include /etc/nginx/naxsi.rules |
} | } | ||
Строка 176: | Строка 179: | ||
=== PHP === | === PHP === | ||
Для работы с [[PHP-FPM]] достаточно создать шаблон <tt>/etc/nginx/templates/php</tt> (<tt>{имя домена}</tt> нужно заменить своим значением) | Для работы с [[PHP-FPM]] достаточно создать шаблон <tt>/etc/nginx/templates/php</tt> (<tt>{имя домена}</tt> нужно заменить своим значением) | ||
− | # Адрес FastCGI-сервера (имя или адрес и порт или путь к UNIX-сокету). Указывается в настройках виртуального хоста. | + | # Адрес FastCGI-сервера (имя или адрес и порт или путь к UNIX-сокету). |
+ | # Указывается в настройках виртуального хоста. | ||
#fastcgi_pass | #fastcgi_pass | ||
+ | |||
# Имя файла, который при создании переменной $fastcgi_script_name будет добавляться после URI, если URI заканчивается слэшом. | # Имя файла, который при создании переменной $fastcgi_script_name будет добавляться после URI, если URI заканчивается слэшом. | ||
fastcgi_index index.php; | fastcgi_index index.php; | ||
+ | |||
# Передавать ли клиенту ответы FastCGI-сервера с кодом больше либо равным 300. | # Передавать ли клиенту ответы FastCGI-сервера с кодом больше либо равным 300. | ||
#fastcgi_intercept_errors on; | #fastcgi_intercept_errors on; | ||
+ | |||
# Добавить параметры из /etc/nginx/fastcgi_param. | # Добавить параметры из /etc/nginx/fastcgi_param. | ||
include fastcgi_params; | include fastcgi_params; | ||
+ | |||
# Путь к скрипту, который будет передан в PHP-FPM. | # Путь к скрипту, который будет передан в PHP-FPM. | ||
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; | fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; | ||
# При использовании chroot окружения нужно указывать путь по-другому. | # При использовании chroot окружения нужно указывать путь по-другому. | ||
#fastcgi_param SCRIPT_FILENAME /{имя домена}$fastcgi_script_name; | #fastcgi_param SCRIPT_FILENAME /{имя домена}$fastcgi_script_name; | ||
+ | |||
# Закрывать ли соединение с FastCGI-сервером в случае, если клиент закрыл соединение, не дождавшись ответа. | # Закрывать ли соединение с FastCGI-сервером в случае, если клиент закрыл соединение, не дождавшись ответа. | ||
fastcgi_ignore_client_abort off; | fastcgi_ignore_client_abort off; | ||
Строка 195: | Строка 204: | ||
# Подключение шаблона с настройками PHP. | # Подключение шаблона с настройками PHP. | ||
include /etc/nginx/templates/php; | include /etc/nginx/templates/php; | ||
+ | |||
# Путь к UNIX-сокету PHP-FPM. | # Путь к UNIX-сокету PHP-FPM. | ||
fastcgi_pass unix:/var/run/php5-fpm_{имя сайта}.sock; | fastcgi_pass unix:/var/run/php5-fpm_{имя сайта}.sock; | ||
} | } | ||
− | + | С помощью директивы <tt>fastcgi_param</tt> и параметра <tt>PHP_VALUE</tt> можно изменять настройки службы PHP. | |
+ | Если использовать параметр <tt>PHP_ADMIN_VALUE</tt>, то указанная настройка не сможет быть изменена скриптом. | ||
+ | Например | ||
+ | fastcgi_param PHP_VALUE "memory_limit = 256M"; | ||
+ | fastcgi_param PHP_VALUE "max_execution_time = 60"; | ||
+ | |||
+ | === Ссылки === | ||
+ | * [http://nginx.org/ru/docs/http/ngx_http_fastcgi_module.html Модуль ngx_http_fastcgi_module - nginx.org] | ||
+ | * [https://modx.pro/hosting/797-set-php-options-through-nginx/ Установка параметров php через Nginx] | ||
== Ссылки == | == Ссылки == |
Версия 10:47, 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";