Nginx — это высокопроизводительный HTTP-сервер и обратный прокси-сервер, который широко используется на различных веб-серверах. Инженеру по тестированию понимание деталей файлов конфигурации Nginx помогает лучше тестировать и оптимизировать производительность сервера. В этой статье подробно представлена структура файла конфигурации Nginx и его основные элементы конфигурации.
NginxКонфигурационный файл обычно находится по адресу/etc/nginx/nginx.conf
。Его основная структура выглядит следующим образом:
user nginx;
worker_processes 1;
error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
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;
sendfile on;
#tcp_nopush on;
keepalive_timeout 65;
#gzip on;
include /etc/nginx/conf.d/*.conf;
}
user
: обозначениеNginxПользователь, под которым запущен процесс。Значение по умолчанию обычноnginx
。worker_processes
: Укажите количество рабочих процессов Nginx. Настройка в зависимости от количества ядер ЦП сервера может повысить производительность.error_log
: Определите расположение файла журнала ошибок и уровень журнала.。Уровни журнала включают в себяdebug
、info
、notice
、warn
、error
、crit
ждать。pid
: Укажите место, где хранится файл идентификатора процесса Nginx.events {
worker_connections 1024;
}
worker_connections
: Максимальное количество соединений, которые каждый рабочий процесс может обрабатывать одновременно.。иworker_processes
Решили вместеNginxвозможности одновременной обработки。http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
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;
sendfile on;
keepalive_timeout 65;
include /etc/nginx/conf.d/*.conf;
}
include
: Содержит другие файлы конфигурации。/etc/nginx/mime.types
определенныйMIMEтип,/etc/nginx/conf.d/*.conf
Содержит другие файлы подконфигурации.。default_type
: Установите тип MIME по умолчанию.log_format
: Определите формат журнала.access_log:
Определите расположение файлов журнала доступа и используемый формат журнала.sendfile
: Включите эффективный режим передачи файлов. Включено по умолчанию.keepalive_timeout
: Определяет, как долго клиентское соединение остается активным.http
в модулеserver
кусокопределенный Конфигурация виртуального хоста:
server {
listen 80;
server_name localhost;
location / {
root /usr/share/nginx/html;
index index.html index.htm;
}
error_page 404 /404.html;
location = /404.html {
internal;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
internal;
}
}
listen
: Определите порт, который прослушивает сервер.server_name
: Определите имя виртуального хоста.location
: Используется для сопоставления URI и определения способа обработки запросов.root
: Устанавливает корневой каталог запроса.index
: Определите индексный файл по умолчанию.error_page
: обозначениестраница ошибки。когда произойдет404При ошибке,Перейти к/404.html
。location
Директивы, используемые для сопоставления запросовURI,Запросы могут обрабатываться на основе различных правил сопоставления.
location = / {
# точное совпадение
}
location /images/ {
# сопоставление префиксов
}
location ~* \.(gif|jpg|jpeg)$ {
# Обычный матч
}
Обратный прокси-сервер — одна из часто используемых функций Nginx. Настроив Nginx в качестве обратного прокси-сервера, вы можете добиться балансировки нагрузки, кэширования, завершения SSL и других функций.
server {
listen 80;
server_name example.com;
location / {
proxy_pass http://backend_server;
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;
}
}
proxy_pass
: Укажите адрес внутреннего сервера.proxy_set_header
: Установите информацию заголовка запроса и передайте реальный IP-адрес клиента и другую информацию.Nginx поддерживает различные стратегии балансировки нагрузки, включая опрос, хеширование IP, наименьшее количество соединений и т. д.
http {
upstream backend {
server backend1.example.com;
server backend2.example.com;
}
server {
listen 80;
server_name example.com;
location / {
proxy_pass http://backend;
}
}
}
upstream
: Определите группу внутренних серверов.proxy_pass
: Перенаправьте запрос группе внутренних серверов.Файл конфигурации Nginx имеет четкую структуру и мощные функции. Понимание и освоение конфигурации Nginx может помочь оптимизировать производительность сервера и повысить надежность и стабильность веб-приложений. Я надеюсь, что эта статья поможет вам глубже понять файлы конфигурации Nginx.