Этот блог является второй частью настройки Nginx. В нем в основном представлены три основных момента, связанных с Nginx: настройка обратного прокси-сервера, кэша и балансировки нагрузки. Он обобщает и обобщает проблемы, возникшие в предыдущих практиках производства, и делится ими для удобства студентов. У них лучший рост.
При написании обратного прокси-сервера Nginx сначала суммируйте некоторые важные параметры:
1. Процессор и память
worker_cpu_affinity (важный элемент оптимизации): привязка процесса к процессору повышает скорость обращения к кэшу процессора, тем самым уменьшая потери доступа к памяти и увеличивая скорость работы программы.
#2 основной процессор, запуск 2 процессов
worker_processes 2;
worker_cpu_affinity 01 10;
#2 основной процессор, открыты 4 процесса
worker_processes 4;
worker_cpu_affinity 01 10 01 10;
#4 процессор, запуск 4 процессов
worker_processes 4;
worker_cpu_affinity 0001 0010 0100 1000;
#4 основной процессор, запустить 2 процесса
worker_processes 2;
worker_cpu_affinity 0101 1010;
#8 основной процессор, открытые 8 процессов
worker_processes 8;
worker_cpu_affinity 00000001 00000010 00000100 00001000 00010000 00100000 01000000 10000000;
2. Статические файлы
Для статических больших файлов включите sendfile для ускорения чтения файлов. Включите параметр TCP_CORK в сокете Linux и используйте его с sendfile для ускорения чтения больших файлов.
http {
sendfile on;
tcp_nopush on;
}
3. Тайм-аут
Nginx широко используется на рынке. Помимо высокой производительности, высокой масштабируемости, богатых функций и простой настройки, наиболее важными являются характеристики и функции его прокси-сервера. Благодаря простой настройке можно обеспечить обратный прокси-сервер и балансировку нагрузки. достигнуто. Эта функция не имеет себе равных среди предыдущих веб-сервисов.
Обратный прокси-сервер Nginx реализован через модуль http_proxy. Целью установки буфера в Nginx является кэширование больших запросов или ответов, уменьшение частых запросов к внутреннему серверу и тем самым повышение производительности.
location /api {
proxy_pass http://127.0.0.1:90; # Адрес внутреннего сервера
}
Когда прокси-сервер пересылает запрос на реальный сервер, он часто получает небольшую часть информации заголовка запроса. Если proxy_buffering включен, прокси-сервер изо всех сил старается собрать запрос и затем вернуть его клиенту. Это начинается. Он функционирует как кэш.
location /api {
proxy_pass http://127.0.0.1:90; # Адрес внутреннего сервера
proxy_buffering on;
proxy_buffer_size 32k;
proxy_buffers 4 128k;
proxy_busy_buffers_size 256k;
proxy_max_temp_file_size 256k;
proxy_temp_file_write_size 256k;
}
Описание параметра:
location /api {
proxy_pass http://127.0.0.1:90;
proxy_set_header Host $host; # Установите заголовок Host, полученный внутренним сервером, на Host исходного запроса.
proxy_set_header X-Real-IP $remote_addr; # Установите заголовок X-Real-IP на IP-адрес клиента.
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; #Используется для представления реального IP-адреса HTTP-запросчика.
}
В предыдущем практическом сценарии я столкнулся с этим сценарием при настройке информации заголовка, как показано на рисунке ниже. Если заголовок информации заголовка установлен, это приведет к тайм-ауту. Причины могут быть следующими:
1. Мой обратный прокси и Nginx были развернуты на одном сервере. Анализ Nginx должен был войти в бесконечный цикл. Позже я изменил метод прослушивания, и его можно использовать в обычном режиме.
location /api {
proxy_pass http://127.0.0.1:90;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
2. Выбор протокола Nginx Proxy:
При использовании протокола Http обратного прокси-сервера Nginx по умолчанию используется Http1.0 для перехода на внутренний сервер для получения содержимого ответа, а затем возврата его клиенту.
Важная разница между Http 1.0 и Http 1.1 заключается в том, что первая не поддерживает Http Kepp-Alive.
http {
upstream backend {
keepalive 50; # Должен быть настроен, рекомендуется 50-100
server http://127.0.0.1:90; # Адрес внутреннего сервера
}
server {
listen 80;
location / {
proxy_pass http://backend;
proxy_http_version 1.1; ## должен
proxy_set_header Connection "keep-alive";
proxy_keepalive_timeout 60s; # Тайм-аут поддержания активности
}
}
}
Синтаксис конфигурации кэша прокси-сервера следующий, параметры подробно объяснены:
upstream klsgapi {
server 127.0.0.1:90;
}
proxy_cache_path /usr/local/nginx/proxy_cache levels=1:2 keys_zone=klsgapi_cache:10m max_size=10g inactive=60m use_temp_path=off;
server {
listen 80;
server_name localhost;
if ($request_uri ~ ^/(index.html|login|register|password|\/reset)) {
set $cookie_nocache 1;
}
location / {
proxy_cache klsgapi_cache;
proxy_pass http://klsgapi;
proxy_cache_valid 200 304 12h;
proxy_cache_valid any 10m;
proxy_cache_key $host$uri$is_args$args;
proxy_no_cache $cookie_nocache $arg_nocache $arg_comment;
proxy_no_cache $http_pragma $http_authorization;
add_header Nginx-Cache "$upstream_cache_status";
}
}
Описание параметра кэша:
proxy_cache_path /usr/local/nginx/proxy_cache levels=1:2 keys_zone=klsgapi_cache:10m max_size=10g inactive=60m use_temp_path=off;
proxy_cache_key $host$uri$is_args$args
: В этой конфигурации proxy_cache_key Ему присваивается комбинация запрошенного имени хоста ($host), URI ($uri), наличия параметров ($is_args) и параметров ($args). Таким образом, каждый уникальный запрос будет направлен в место, соответствующее значению ключа, сгенерированному на основе этой информации.Это обобщенные знания об обратном прокси-сервере Nginx и кеше настроек обратного прокси-сервера. Обновлять другие знания Nginx непросто, когда у меня будет время.
Документация официального сайта обратного прокси-сервера Nginx http://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_cache_path