Nginx — различия между версиями
Kirill (обсуждение | вклад) |
Kirill (обсуждение | вклад) (→Виртуальные хосты) |
||
| Строка 110: | Строка 110: | ||
Один файл может содержать описание для нескольких сайтов, каждое должно находиться логическом блоке | Один файл может содержать описание для нескольких сайтов, каждое должно находиться логическом блоке | ||
server { | server { | ||
| − | ... | + | # Обрабатываемый порт. |
| + | listen 80; | ||
| + | # Обрабатываемый порт для определенного домена. | ||
| + | # listen {имя домена} 8080; | ||
| + | # Обрабатываемый порт для ipv6. | ||
| + | # listen [::]:80 [{имя домена}] ipv6only=on; | ||
| + | |||
| + | # Директория с файлами сайта. | ||
| + | root /var/www/{имя сайта}/www; | ||
| + | |||
| + | # Для того, чтобы сайт был доступен по адресам <nowiki>http://{имя домена 1}/</nowiki> и <nowiki>http://{имя домена 2}/</nowiki>. | ||
| + | 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; | ||
| + | # } | ||
} | } | ||
=== Шаблоны === | === Шаблоны === | ||
| − | Шаблоны | + | Благодаря директиве <tt>include</tt> в блок настроек виртуального хоста можно включать внешние файлы. |
| + | Шаблоны принято использовать для описания общих настроек. | ||
| + | Файлы шаблонов, как правило, сохраняются в директорию <tt>/etc/nginx/templates/</tt>. | ||
| + | |||
| + | Например, стандартные настройки HTTP-хоста в файле <tt>/etc/nginx/templates/default</tt>: | ||
| + | # Файлы, открываемые при пустом пути, в порядке приоритета. | ||
| + | index index.php 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; | ||
| + | } | ||
== Ссылки == | == Ссылки == | ||
Версия 20:50, 8 сентября 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; service nginx restart
Ссылки
- Основная функциональность - 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; service nginx restart
Один файл может содержать описание для нескольких сайтов, каждое должно находиться логическом блоке
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.php 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;
}