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;