Nginx — различия между версиями

Материал из K.Wiki
Перейти к: навигация, поиск
(Ссылки)
Строка 93: Строка 93:
  
 
Для учета изменений настроек нужно выполнить
 
Для учета изменений настроек нужно выполнить
  # service nginx reload; service nginx restart
+
  # service nginx reload
  
 
=== Ссылки ===
 
=== Ссылки ===
Строка 106: Строка 106:
 
  # ln -s /etc/nginx/sites-available/{имя сайта} /etc/nginx/sites-enabled/{имя сайта}
 
  # ln -s /etc/nginx/sites-available/{имя сайта} /etc/nginx/sites-enabled/{имя сайта}
 
и перезапустить сервер
 
и перезапустить сервер
  # service nginx reload; service nginx restart
+
  # service nginx reload
  
 
Один файл может содержать описание для нескольких сайтов, каждое должно находиться логическом блоке
 
Один файл может содержать описание для нескольких сайтов, каждое должно находиться логическом блоке

Версия 22:23, 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

Ссылки

Виртуальные хосты

Виртуальные хосты используются для описания параметров отдельных сайтов, которые обслуживает 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.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;
}

Ссылки