Link Search Menu Expand Document
14 Марта 2021 г.

Настройка веб сервера Nginx

Содержание
  1. Рабочие процессы
  2. Пользователь
  3. Http сервер
  4. Полезные ссылки

  1. Сборка Nginx из исходников на Debian 10

В первой статье мы установили nginx из исходников. Сегодня продолжим и разберемся с настройкой и как он работает.

После запуска, nginx имеет один главный процесс и несколько рабочих процессов наследованных от главного процесса. Каждый рабочий процесс способен обрабатывать тысячи http соединений.

Количество рабочих процессов прописываются в конфигурационном файле в моем случае он лежит там куда мы ставили nginx /home/alex/nginx/conf/nginx.conf, в других дистрибутивах может быть по другому.

В конфигурационном файле, директивы могут быть простые:

user  nobody;

И блочные:

events {
    worker_connections  1024;
    multi_accept on;
}

Комментарий обозначается символом #.

Рабочие процессы

Как говорилось выше рабочие процессы можно определять.

# по умолчанию 1 процесс, auto значит nginx определит количество рабочих процессов автоматически равным числу ядер процессора
worker_processes  auto;

Посмотрим на это:

ps -ef --forest | grep nginx
root        728      1  0 15:04 ?        00:00:00 nginx: master process /home/alex/nginx/sbin/nginx
nobody     1258    728  0 16:31 ?        00:00:00  \_ nginx: worker process

Сейчас у меня 1 рабочий процесс, что вполне закономерно, по кол-ву ядер на сервере.

events {
    # Задаёт максимальное число соединений, которые одновременно может открыть рабочий процесс.
    # Как правило, число устанавливают в зависимости от числа ядер процессора по принципу n * 1024. Например, 2 ядра дадут worker_connections 2048
    worker_connections  1024; 
}

Пользователь

По умолчанию рабочие процессы nginx работают от пользователя nobody.

Создадим для этих целей системного пользователя nginx

sudo useradd -M -r -s /usr/sbin/nologin nginx

И пропишем в конфигурационном файле

user  nginx nginx;

Перезапускам сервер и проверяем

sudo ./sbin/nginx -s reload

Http сервер

Основное предназначение Nginx - это обработка http соединений, для настройки этого существует директива http

http {

}

Любой файл конфигурации можно подключать с помощью директивы include например include mime.types; с корректными директивами

Виртуальные хосты задаются директивой server. Их может быть несколько.

http {
    server {
    
    }
    server {
    
    }
    server {
    
    }
}

Их различают по портам и по имени сервера.

Каждая из секций server может содержать директивы:

  • listen - адрес и порт на которых сервер будет принимать запросы
  • server_name - имена виртуального сервера
listen 127.0.0.1:8000;
listen 127.0.0.1;
listen 8000;
listen *:8000;
listen localhost:8000;

server_name example.com www.example.com;

Примеры конфигураций

http {
    server {
        listen       8080;
        server_name  localhost;
    }
    server {
        listen       8081;
        listen       8082;
        listen       8083;
        server_name  test;
    }
    server {
        # Запрещаем обработку узла без имени сервера
        listen      80;
        server_name "";
        return      444;
    }
    server {
        listen      192.168.1.1:80;
        server_name example.org www.example.org;
    }
}

Рекомендуется каждый виртуальный хост указывать в отдельном файле. Подключенные в основном например так include /etc/nginx/vhosts/*;

Следующим шагом необходимо определить директиву location, которая задает конфигурацию в зависимости от URI запроса.

Директива root задает корневой каталог куда пойдет запрос.

location / {
    root html;
}

Пример конфигурации для php сайта

server {
    listen      80;
    server_name localhost;
    root        html;

    location / {
        index  index.php;
    }

    location ~* \.(gif|jpg|png)$ {
        expires 30d;
    }
    
    location ~ \.php$ {
        root           html;
        fastcgi_pass   127.0.0.1:9002;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        include        fastcgi_params;
     }
}

Полезные ссылки


Возник вопрос или предложение пиши на почту alexsey_89@bk.ru или в Телеграмм канал

Дата публикации: 14 Марта 2021 г.