Серийные вопросы Nginx16, вам задавали!

сервер

Nginx также является одним из необходимых навыков для бэкенд-программиста.Как веб-сервер, производительность Nginx очень высока. В этой статье обобщаются 16 пунктов знаний или вопросы для интервью, которыми мы с вами поделимся, и она будет обновляться в будущем⛽️.

1. Что такое nginx?

Nginx — это высокопроизводительный HTTP-сервер и обратный прокси-сервер. Также прокси-сервер IMAP/POP3/SMTP. Официальный сайт:nginx.org.

2. Каковы основные возможности nginx?

Обработка статических файлов, индексных файлов и автоматическое индексирование, буферизация дескрипторов открытых файлов, ускорение обратного прокси без кэширования, простая балансировка нагрузки и отказоустойчивость, FastCGI, простая балансировка нагрузки и отказоустойчивость, модульная структура. Включая фильтры, такие как gzip, диапазоны байтов, фрагментированные ответы и SSI-фильтр. Если несколько SSI на одной странице обрабатываются FastCGI или другими прокси-серверами, эта обработка может выполняться параллельно, не ожидая друг друга.

Поддерживаются SSL и TLSSNI.

Nginx поддерживает модель опроса ядра, выдерживает испытание высокой нагрузкой, а в отчетах указывается, что он может поддерживать до 50 000 одновременных подключений.

Nginx отличается высокой стабильностью. Например, когда текущий apache достигает более 200 процессов, скорость веб-отклика, очевидно, очень низкая. Nginx использует технологию поэтапного распределения ресурсов, что снижает использование ЦП и памяти. Официальный представитель Nginx сказал, что поддерживает 10 000 неактивных подключений, он занимает всего 2,5 МБ памяти, поэтому атаки, подобные DOS, в основном бесполезны для nginx.

Nginx поддерживает горячее развертывание. Его особенно легко запустить, и он работает почти 24 часа в сутки 7 дней в неделю без перезапуска, даже если он работает в течение нескольких месяцев. Горячее обновление версии программного обеспечения.

Nginx использует модель master-slave, которая может в полной мере использовать преимущества SMP и уменьшить задержку блокировки рабочего процесса при дисковом вводе-выводе. При использовании вызовов select()/poll() также можно ограничить количество соединений на процесс.

Качество кода Nginx очень высокое, код очень стандартизирован, метод отработан, а расширение модуля также очень простое. Особо стоит отметить мощную цепочку Upstream и Filter.

Nginx использует некоторые из последних функций, предоставляемых ОС, такие как поддержка sendfile (Linux 2.2+), accept-filter (FreeBSD4.1+), TCP_DEFER_ACCEPT (Linux 2.4+), что значительно повышает производительность.

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

3. общие команды nginx?

Запустите нгинкс.

Stop nginx -s stop или nginx -s quit .

Перезагрузить конфигурацию ./sbin/nginx -s reload (плавный перезапуск) или service nginx reload .

Перезагрузите указанный файл конфигурации .nginx -c /usr/local/nginx/conf/nginx.conf.

Проверьте версию nginx с помощью nginx -v .

Проверьте правильность файла конфигурации с помощью nginx -t .

Показать справочную информацию nginx -h .

4. Какой режим работы и максимальное количество подключений?

events {

use epoll; #epoll 是多路复用 IO(I/O Multiplexing)中的一种方 式,但是仅用于 linux2.6 以上内核,可以大大提高 nginx 的性能

worker_connections 1024;#单个后台 worker process 进程的最大并发链接数

# multi_accept on; 
}

5. Несколько алгоритмов балансировки нагрузки nginx?

5 видов.

1. Режим опроса (по умолчанию) Каждый запрос назначен на другой бэкэнд-сервер один за другим в порядке повторного заказа. Если отброшен сервер Backend Down, он может быть автоматически удален. 2. Массовый режим Указание шансов из опроса, соотношение веса пропорционально производительности заднего сервера. 3.IP_HASH MODE (IP HASH) Каждый запрос назначается результатом хеша IP, поэтому каждый посетители фиксируются на бэкэнд-сервере, а проблема сеанса может быть решена. 4.URL_HASH РЕЖИМ 5.fair Режим Назначьте запросы по времени отклика сервера Backend, а время отклика - это краткое приоритетное распределение.

6. Сколько моделей процессов есть Nginx?

Делится на режим мастер-работник и режим одного процесса. В режиме мастер-рабочий есть один главный процесс и по крайней мере один рабочий процесс, а в режиме одного процесса, как следует из названия, только один процесс.

7. Как определить страницу сообщения об ошибке?

# Определить страницу сообщения об ошибке

error_page 500 502 503 504 /50x.html;

location = /50x.html { root /root;

}

8. Как точно сопоставить путь?

Начало местоположения = указывает на точное совпадение

location = /get {
#规则 A }

9. Приоритет сопоставления путей?

Конфигурации с несколькими местоположениями в случае Первое совпадение =, затем соответствие ^ ~, затем обычное совпадение по порядку и, наконец, дескриптор/универсальное совпадение. При успешном совпадении прекратите сопоставление и нажмите текущее правило сопоставления, чтобы обработать запрос.

10. Как перенаправить запрос на внутренний сервер приложений?

location = / {

proxy_pass http://tomcat:8080/index 

}

11. Как установить время истечения в зависимости от типа файла?

location ~* \.(js|css|jpg|jpeg|gif|png|swf)$ {
if (-f $request_filename) {
expires 1h;
break;
}
}

12. Запретить доступ к определенному каталогу?

location ^~/path/ {
    deny all;
}


13. Процесс реализации балансировки нагрузки nginx?

Сначала настройте пул веб-серверов в модуле http, который использует модуль восходящего потока для определения фона с именем proxy-web, В пул мы можем добавить несколько фоновых веб-серверов, в которых алгоритмы проверки состояния и планирования настроены в пуле. ; затем в модуле serverr Виртуальный хост определен в , но этот виртуальный хост не указывает свой собственный сайт веб-каталога.Он будет использовать местоположение для сопоставления с URL-адресом, а затем перенаправить его в веб-пул, определенный выше, и, наконец, перенаправить его на фоновый веб-сервер в соответствии с политикой планирования.

14. Конфигурация балансировки нагрузки?

Upstream proxy_nginx {

server 192.168.0.254  weight=1max_fails=2 fail_timeout=10s ; 
server 192.168.0.253 weight=2 max_fails=2fail_timeout=10s;
server192.168.0.252 backup; server192.168.0.251 down;

}

server{
 listen 80;
 server_name xiaoka.com;

location / {

 proxy_pass http:// proxy_nginx;
 proxy_set_header Host
 proxy_set_header X-Real-IP
 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

}

15. Установите период времени ожидания?

http {
 ……….
 keepalive_timeout 60; ###设置客户端连接保持会话的超时时间,超过这个时间,服务器会关闭该连接。 tcp_nodelay on;
 \####打开 tcp_nodelay,在包含了 keepalive 参数才有效
 client_header_timeout 15; ####设置客户端请求头读取超时时间,如果超过这个时间,客户端还没有发送任何数据, Nginx 将返回“Request time out(408)”错误
 client_body_timeout 15;

\####设置客户端请求主体读取超时时间,如果超过这个时间,客户端还没有发送任何数据, Nginx 将返回“Request time out(408)”错误
 send_timeout 15; ####指定响应客户端的超时时间。这个超过仅限于两个连接活动之间的时间,如果超过这 个时间,客户端没有任何活动,Nginx 将会关闭连接。

…… }

16. Каковы преимущества включения функции сжатия? вред?

Преимущества: сжатие может сэкономить полосу пропускания и повысить эффективность передачи.

Недостаток: но поскольку он сжат на сервере, он будет использовать источник сервера.

Ссылаться на:

  • «Nginx от входа до мастерства»

  • «Подробное объяснение высокопроизводительного веб-сервера Nginx»

  • "Глубокое понимание nginx"

Непрерывное обновление. . . ⛽️