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"
Непрерывное обновление. . . ⛽️