Skip to content

37 Назначение nginx Настройка nginx Работа с лога

37 Назначение nginx Настройка nginx Работа с логами на примере nginx

HTTP-сервер и обратный прокси-сервер, а также почтовый прокси-сервер. Он был разработан для решения проблемы C10k (обслуживание 10 тысяч одновременных соединений) и стал известен своей высокой производительностью, стабильностью, богатым набором функций и низким потреблением ресурсов

Веб-сервер: Nginx может выступать в роли основного веб-сервера, обслуживая статические файлы (HTML, CSS, JavaScript, изображения и т.д.) и динамические запросы через FastCGI, SCGI или uWSGI.

Обратный прокси-сервер: Nginx часто используется как обратный прокси для распределения нагрузки между несколькими серверами приложений или баз данных. Это позволяет улучшить производительность и надежность системы.

Балансировщик нагрузки: Nginx может распределять входящий трафик между несколькими серверами на основе различных алгоритмов балансировки нагрузки (например, round-robin, least connections).

Кэширование: Nginx поддерживает кэширование контента на стороне сервера для уменьшения нагрузки на серверы приложений и ускорения времени отклика для клиентов. SSL/TLS Терминация: Nginx может выполнять SSL/TLS-терминацию, принимая зашифрованные соединения от клиентов и передавая их в незашифрованном виде внутренним серверам.

Управление доступом и аутентификация: Nginx предоставляет возможности управления доступом к ресурсам с помощью различных методов аутентификации (базовая аутентификация HTTP, OAuth и др.).

Поддержка WebSockets: Начиная с версии 1.3, Nginx поддерживает работу с WebSocket-протоколом для создания приложений реального времени.

Для установки на убунту дебиан: sudo apt install nginx

Базовая конфигурация

Создайте новый файл конфигурации сайта в директории /etc/nginx/sites-available/ (например, mywebsite):

server {
    listen 80;
    server_name mywebsite.com www.mywebsite.com;

    root /var/www/mywebsite;
    index index.html index.htm;

    location / {
        try_files $uri $uri/ =404;
    }
}

Затем создайте символическую ссылку на этот файл в директорию /etc/nginx/sites-enabled/:

sudo ln -s /etc/nginx/sites-available/mywebsite /etc/nginx/sites-enabled/

Пример конфигурации обратного прокси

server {
    listen 80;
    server_name proxy.mywebsite.com;

    location / {
        proxy_pass http://localhost:3000;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }

    error_page 502 503 504 /50x.html;

    location = /50x.html {
        root /usr/share/nginx/html;
    }
}

Опять же, ссылочка:

sudo ln -s /etc/nginx/sites-available/proxy.mywebsite.com /etc/nginx/sites-enabled/

Проверка конфигов линтером

sudo nginx -t

SSL/TLS Настройки:Для добавления SSL/TLS listen 443 ssl; 

 server {
       listen 443 ssl;
       server_name mysecurewebsite.com;

       ssl_certificate /path/to/cert.pem;
       ssl_certificate_key /path/to/key.pem;

       location / {
           ...
       }
   }

Логи

Журнал доступа: /var/log/nginx/access.log

Журнал ошибок: /var/log/nginx/error.log

http {
    ...
    access_log /var/log/nginx/access.log combined;
    error_log /var/log/nginx/error.log warn;
    ...
}

Формат combined включает стандартную информацию о запросах, такую как IP-адрес клиента, время запроса, метод HTTP, URI, статус ответа и многое другое

Вы также можете определить свой формат:

log_format main '$remote_addr - $remote_user [$time_local] "$request" '
                  '$status $body_bytes_sent "$http_referer" '
                  '"$http_user_agent" "$http_x_forwarded_for"';

access_log /var/log/nginx/access.log main;