предисловие
Эта статья участвовала в [Пожалуйста, проверьте|У вас есть возможность подать заявку на бесплатные подарки в Nuggets.】Мероприятия.
Примите участие в комментариях и получите шанс выиграть 2 новых значка, предоставленных официальным лицом Nuggets.Пожалуйста, обратитесь к концу статьи для получения подробной информации о лотерее.
Для начального развития, особенно для студентов Xiaobai, я надеюсь, что вы внимательно прочитаете его, я верю, что вы что-то приобретете.
Не легко создать, помнитеНравится, Следуй, ИзбранноеЭй.
Концепция Nginx
Nginx — этоВысокопроизводительные службы HTTP и обратного прокси-сервера. Его характеристики заключаются в том, что он занимает меньше памяти и обладает сильными возможностями параллелизма.На самом деле, возможности параллелизма nginx лучше работают на веб-серверах того же типа.
Nginx специально разработан для оптимизации производительности.Производительность является его наиболее важным фактором.В реализации уделяется большое внимание эффективности и выдерживает испытание высокой нагрузкой.Согласно отчетам, он может поддерживать до 50 000 одновременных подключений.
В случае высокого параллелизма соединений Nginx является хорошей заменой службам Apache: Nginx — одна из программных платформ, которую часто выбирают владельцы веб-хостинговых компаний в США.
обратный прокси
Прежде чем говорить об обратном прокси, давайте поговорим о том, что такое прокси и прямой прокси.
играет роль
Агент на самом деле является посредником, А и В могли быть связаны напрямую, а С был вставлен посередине, а С был посредником. В начале агент в основном помогаетИнтранет-клиент(ЛВС) доступИнтернет-сервериспользовать.
Затем появился обратный прокси,反向
Значение слова здесь на самом деле относится к противоположному направлению, то есть прокси перенаправляет запрос от клиента внешней сети на сервер внутренней сети, снаружи внутрь.
прямой прокси
Прямой прокси-сервер — это прокси-сервер клиента, прокси-клиент, и сервер не знает, какой клиент фактически инициировал запрос.
Прямой прокси-сервер похож на трамплин, и прокси-сервер получает доступ к внешним ресурсам.
Например, когда мы получаем доступ к Google в Китае, мы не можем получить к нему доступ напрямую.Мы можем отправить запрос в прокси-сервис через прямой прокси-сервер, и прокси-сервер может получить доступ к Google, чтобы прокси-сервер мог получить доступ к Google, чтобы получить возвращенные данные и вернуть их нам. , чтобы мы могли получить доступ к Google.
обратный прокси
Обратный прокси-сервер — это прокси-сервер на стороне сервера, прокси-сервер, и клиент не знает, какой сервер фактически предоставляет услугу.
Клиент не знает о существовании прокси-сервера.
Это относится к прокси-серверу, который принимает запрос на подключение в Интернете, а затем перенаправляет запрос на сервер во внутренней сети и возвращает результат, полученный от сервера, клиенту, запрашивающему подключение в Интернете. прокси-сервер ведет себя как обратный прокси-сервер.
балансировки нагрузки
Что касается балансировки нагрузки, давайте возьмем пример:
Все должны были быть в метро: когда мы едем в метро в утренний час пик, всегда есть самый загруженный вход в метро.Кто торопится, пожалуйста, идите в порт B, порт B менее загружен и пуст.". А этот работник метрополитена А отвечает за балансировку нагрузки.
Чтобы улучшить возможности веб-сайта во всех аспектах, мы обычно формируем кластер из нескольких машин для предоставления внешних услуг. Однако вход для доступа, предоставляемый нашим сайтом, является одним, например
www.taobao.com
. Затем, когда пользователь вводит в браузереwww.taobao.com
Как распределить запрос пользователя по разным машинам в кластере, этим занимается балансировка нагрузки.
Балансировка нагрузки (Load Balance) означает балансировку и распределение нагрузки (рабочие задачи, запросы доступа) на несколько операционных единиц (серверов, компонентов) для выполнения. Это идеальное решение для обеспечения высокой производительности, единой точки отказа (высокая доступность) и масштабируемости (горизонтальное масштабирование).
Существует три основных способа балансировки нагрузки, предоставляемых Nginx: циклический перебор, взвешенный циклический перебор и IP-хэш.
голосование
По умолчанию nginx по умолчанию опрашивает свой вес равный 1, а порядок, в котором сервер обрабатывает запросы: ABCABCABCABC....
upstream mysvr {
server 192.168.8.1:7070;
server 192.168.8.2:7071;
server 192.168.8.3:7072;
}
взвешенная круговая система
Разное количество запросов распределяется по разным серверам в зависимости от размера настроенного веса. Если не установлено, по умолчанию используется значение 1. Последовательность запросов для следующих серверов: ABBCCCABBCCC....
upstream mysvr {
server 192.168.8.1:7070 weight=1;
server 192.168.8.2:7071 weight=2;
server 192.168.8.3:7072 weight=3;
}
ip_hash
iphash выполняет хэш-операцию над ip, запрошенным клиентом, а затем распределяет запрос того же ip клиента на тот же сервер для обработки в соответствии с результатом хеширования, что может решить проблему неразделения сеанса.
upstream mysvr {
server 192.168.8.1:7070;
server 192.168.8.2:7071;
server 192.168.8.3:7072;
ip_hash;
}
Динамическое и статическое разделение
Разница между динамическими и статическими страницами
- Статические ресурсы: когда пользователи обращаются к этому ресурсу несколько раз, исходный код ресурса никогда не изменится (например, файлы HTML, JavaScript, CSS, img и т. д.).
- Динамический ресурс: когда пользователь обращается к этому ресурсу несколько раз, исходный код ресурса может отправлять изменения (например: .jsp, сервлет и т. д.).
Что такое динамическое разделение
-
Динамическое и статическое разделение позволяет динамическим веб-страницам на динамическом веб-сайте отличать постоянные ресурсы от часто меняющихся ресурсов в соответствии с определенными правилами.После разделения динамических и статических ресурсов мы можем кэшировать их в соответствии с характеристиками статических ресурсов.Это является основной идеей статической обработки веб-сайта.
-
Простое резюме разделения динамических и статических файлов: разделение динамических файлов и статических файлов.
Зачем использовать статическое и динамическое разделение
Чтобы ускорить анализ веб-сайта, вы можете использовать разные серверы для анализа динамических ресурсов и статических ресурсов для ускорения анализа. Уменьшите нагрузку на один сервер.
Установка Nginx
Установить под окна
1. Скачайте нгинкс
nginx.org/ru/download…Загрузите стабильную версию. Возьмите nginx/Windows-1.20.1 в качестве примера, загрузите nginx-1.20.1.zip напрямую. После загрузки разархивируйте его, и распаковка выглядит следующим образом:
2. Запустите nginx
-
Дважды щелкните nginx.exe напрямую, и после двойного щелчка начнет мигать черное всплывающее окно.
-
Откройте командное окно cmd, перейдите в каталог распаковки nginx и введите команду
nginx.exe
, просто нажмите Enter
3. Проверьте, успешно ли запущен nginx
Введите URL прямо в адресную строку браузераhttp://localhost:80Нажмите Enter, появится следующая страница, свидетельствующая об успешном запуске!
Докер устанавливает nginx
Моя предыдущая статья также рассказывала об этапах установки под Linux, я использовал установку докера, которая очень проста.
Соответствующие ссылки следующие:Docker (3): Docker развертывает Nginx и Tomcat.
1. Просмотр зеркал на всех локальных хостах, с помощью командыdocker images
2. Создайте контейнер nginx и запустите контейнер, с помощью командыdocker run -d --name nginx01 -p 3344:80 nginx
3. Просмотр запущенного контейнера, с помощью командыdocker ps
доступ через браузер服务器ip:3344
, как показано ниже, что указывает на то, что установка была успешно начата.
注意
: Как подключиться, проверьте, открыты ли порты у группы безопасности Alibaba Cloud, или у брандмауэра сервера есть открытые порты!
Установка под линукс
1. Установите gcc
Для установки nginx нужно сначала скомпилировать исходный код, скачанный с официального сайта, компиляция зависит от среды gcc, если среды gcc нет, то нужно установить:
yum install gcc-c++
2. Установка PCRE pcre-devel
PCRE (Perl-совместимые регулярные выражения) — это Perl-библиотека, включающая Perl-совместимую библиотеку регулярных выражений. Модуль http nginx использует pcre для анализа регулярных выражений, поэтому в Linux необходимо установить библиотеку pcre.pcre-devel — это дополнительная библиотека разработки, разработанная с помощью pcre. nginx также требует эту библиотеку. Заказ:
yum install -y pcre pcre-devel
3. установка zlib
Библиотека zlib предоставляет множество способов сжатия и распаковки.nginx использует zlib для сжатия содержимого http-пакета, поэтому библиотеку zlib необходимо установить на Centos.
yum install -y zlib zlib-devel
4. Установка OpenSSL
OpenSSL — это мощная криптографическая библиотека на уровне защищенных сокетов, включающая основные криптографические алгоритмы, часто используемые функции управления инкапсуляцией ключей и сертификатов и протоколы SSL, а также предоставляет разнообразные приложения для тестирования и других целей. Nginx поддерживает не только протокол http, но и https (то есть передачу http по протоколу ssl), поэтому на Centos нужно установить библиотеку OpenSSL.
yum install -y openssl openssl-devel
5. Скачайте установочный пакет
Вручную загрузите установочный пакет .tar.gz по адресу:nginx.org/ru/download…
После скачивания залить на сервер /root
6. Декомпрессия
tar -zxvf nginx-1.20.1.tar.gz
cd nginx-1.20.1
7. Конфигурация
Используя конфигурацию по умолчанию, выполните в корневом каталоге nginx
./configue
make
make install
Найдите путь установки:whereis nginx
8. Запустите nginx
./nginx
Запущено успешно, посетите страницу: ip:80
Общие команды Nginx
注意
: Перед использованием команды операции Nginx необходимо войти в каталог Nginx./usr/local/nginx/sbin
1. Проверьте номер версии Nginx:./nginx -v
2. Запустите Nginx:./nginx
3. Остановить Nginx:./nginx -s stop
или./nginx -s quit
4. Перезагрузите файл конфигурации:./nginx -s reload
5. Просмотрите процесс nginx:ps -ef|grep nginx
Конфигурационный файл Nginx
Расположение файла конфигурации Nginx:/usr/local/nginx/conf/nginx.conf
Конфигурационный файл Nginx состоит из 3 частей:
1. Глобальный блок
От начала файла конфигурации до содержимого между блоком событий будут установлены некоторые инструкции по настройке, влияющие на общую работу сервера nginx, например:worker_processes 1
.
Это ключевая конфигурация сервиса параллельной обработки сервера Nginx.Чем больше значение worker_processes, тем больше параллельных процессов он может поддерживать, но это будет ограничено аппаратным, программным и другим оборудованием. Общее значение параметра соответствует количеству ядер ЦП.
2. Блок событий
Директивы, задействованные в блоке событий, в основном влияют на сетевое соединение между сервером Nginx и пользователем, например:worker_connections 1024
Указывает, что максимальное количество подключений, поддерживаемых каждым рабочим процессом, равно 1024. Эта часть конфигурации оказывает большое влияние на производительность Nginx и на практике должна быть гибко настроена.
3. http-блок
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
listen 80;#监听端口
server_name localhost;#域名
location / {
root html;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}
Это наиболее частая часть конфигурации сервера Nginx.
Демонстрационный пример
Обратный прокси/балансировщик нагрузки
Демонстрируем под windows, сначала создаем два проекта springboot, порты 9001 и 9002, следующим образом:
Все, что нам нужно сделать, этоlocalhost:80
играет рольlocalhost:9001
иlocalhost:9002
Эти две службы, и пусть опрос доступа к обеим службам.
Конфигурация nginx выглядит следующим образом:
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
upstream jiangwang {
server 127.0.0.1:9001 weight=1;//轮询其权重都默认为1
server 127.0.0.1:9002 weight=1;
}
server {
listen 80;
server_name localhost;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
root html;
index index.html index.htm;
proxy_pass http://jiangwang;
}
}
}
Сначала мы вводим проект в пакет jar, затем запускаем проект из командной строки, а затем получаем доступ к нему в браузере.localhost
Чтобы получить доступ к этим двум проектам, я также распечатал журнал в проекте и использовал его, чтобы увидеть результат, были ли опрошены два проекта и доступ к ним.
можно увидеть, посетитьlocalhost
, осуществляется доступ к двум опрошенным элементам.
Далее мы меняем веса на следующие настройки:
upstream jiangwang {
server 127.0.0.1:9001 weight=1;
server 127.0.0.1:9002 weight=3;
}
Перезагрузите файл конфигурации nginx:nginx -s reload
После загрузки посетим егоlocalhost
, обратите внимание на долю его посещений:
Результаты показывают, что количество посещений порта 9002 в основном такое же, как и количество посещений порта 9001.3:1
.
Динамическое и статическое разделение
1. Поместите статические ресурсы во вновь созданные файлы локально, например: создайте новый файл данных на диске D, а затем создайте две новые папки в папке данных, папку img для хранения изображений, папку html для хранения html файл; как показано ниже:
2. Создайте новый в папке htmla.html
файл со следующим содержимым:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Html文件</title>
</head>
<body>
<p>Hello World</p>
</body>
</html>
3. Поместите фото в папку img следующим образом:
4. Настройте nginxnginx.conf
документ:
location /html/ {
root D:/data/;
index index.html index.htm;
}
location /img/ {
root D:/data/;
autoindex on;#表示列出当前文件夹中的所有内容
}
5. Запустите nginx, откройте путь к его файлу и введите в браузереhttp://localhost/html/a.html
,следующее:
6. Введите в браузереhttp://localhost/img/
Как работает Nginx
mater&worker
После того, как мастер получает сигнал, он назначает задачу на выполнение воркеру, воркеров может быть несколько.
Как работают рабочие
После того, как клиент отправляет запрос мастеру, рабочий механизм получения задач - это не прямое назначение или опрос, а механизм скремблирования.После "захвата" задачи выполнить задачу, то есть выбрать целевой сервер tomcat и т.д. , а затем вернуть результат.
worker_connection
Максимальное количество одновременных обычных статических обращений:worker_connections * worker_processes/ 2
; Если в качестве обратного прокси-сервера используется HTTP, максимальное количество одновременныхworker_connections * worker_processes/ 4
, поскольку в качестве обратного прокси-сервера каждый параллелизм будет устанавливать соединение с клиентом и соединение с внутренним сервером, что займет два соединения.
Конечно, количество воркеров не самое лучшее, и лучше всего, когда количество воркеров равно количеству процессоров сервера.
преимущество
можно использоватьnginx –s reload
Горячее развертывание с использованием nginx для горячего развертывания Каждый пробуждающий процесс является независимым процессом.Если у одного из них возникает проблема, другие продолжат конкурировать за выполнение процесса запроса, не вызывая прерывания службы.
Суммировать
В этой статье подробно описаны основные концепции, руководства по установке, конфигурация, примеры использования и принципы работы Nginx. Надеюсь, эта статья будет вам полезна.
Подробности о лотерее
-
Прежде всего, вы должны участвовать в комментариях, я надеюсь, что вы можете прочитать статью, а не просто делать смайлики или что-то в этом роде.
-
Помните
点赞、关注
, пошевелите мизинцем, спасибо! -
Насчет того, как быть честным, я тоже думал об этом, я создам лотерейную группу, я пришлю красный конверт, ты его возьмешь, и тот, у кого будет наименьшая сумма, получит приз. Или у вас, ребята, есть лучший способ рассказать мне в разделе комментариев. Если я думаю, что это лучше, я возьму его.
-
Если моя область комментариев будет в топе 1-5, я получу 1 новый набор значков или 1 новую футболку Nuggets IPT, а также подарю друзьям в области комментариев, при условии, что вы обратите внимание на мой публичный аккаунт: WeChat Найдите [первые мысли и первую любовь].