В последнее время при создании веб-сайта использование Nginx неизбежно, поэтому я только что опубликовал вводное руководство по Nginx, надеюсь, оно поможет всем~😁
Как разработчик, я считаю, что все знают о важности Nginx. Nginx — высокопроизводительный веб-сервер HTTP и обратного прокси, разработанный Игорем Сейсуевым в России, первая версия выпущена 4 октября 2004 года.
Особенности Nginx:
- низкое использование памяти
- Сильный параллелизм (может поддерживать около 50 000 одновременных подключений)
- Конфигурация очень проста
- очень мало ошибок
- Установка очень проста
- Сервис особенно стабилен (не требует перезапуска в течение нескольких месяцев)
Исходя из этих характеристик, все больше и больше веб-сайтов начинают использовать Nginx. В результате освоение Nginx стало важным навыком для разработчиков.
Эта статья включена в статью "Nginx" рубрики "Дорога к продвинутым программистам на Java". Друзья, которым нравится эта рубрика, могут перейти к звезде и подписаться на нее. Набери 1000 звезд!
1. Роль Nginx
обратный проксиЭто одна из наиболее часто используемых функций Nginx в качестве веб-сервера. Что такое обратный прокси? У многих новичков неизбежно будет много вопросительных знаков, когда они впервые столкнутся с этим термином.
Если вы хотите понять, что такое обратный прокси, вы должны понимать, что такое прямой прокси.
Например, браузер Сяо Эр не может получить прямой доступ к Гу Гэ, но прокси-сервер в Гонконге может получить доступ к Гу Гэ, поэтому Сяо Эр получает доступ к прокси-серверу Гонконга и косвенно посещает Гу Гэ. Этот прокси-серверпрямой прокси.
Подвести итог,Форвардные прокси — это прокси-клиенты., чтобы вы могли нормально получить доступ к целевому серверу.
наоборот,Обратный прокси — это прокси-сервер., чтобы большое количество запросов равномерно обращалось к определенному серверу.
Например, к itwanger.com одновременно обращаются 100 000 детей.Если есть только один сервер, его легко парализовать, поэтому в случае высокого параллелизма будет много серверов (скажем, 10), чтобы подобрать этот job. , то как разрешить доступ к этим 10 серверам 100 000 детей?
Для этого требуется обратный прокси-сервер.Обратный прокси-сервер позволяет 10 000 вторичных серверов обращаться к серверу А, 10 000 вторичным серверам — к серверу Б и 1 секунде — к серверу С. В этом случае нагрузка на каждый сервер будет снижена. это очень приятно?
Вот вопрос. Емкость каждого сервера может быть разной, например, память сервера А больше, 100 Гб, память сервера Б меньше, 10 Гб, память сервера С меньше, всего 1 Гб. Как мы можем сделать так, чтобы ни один сервер не выполнял доступ в пределах своих возможностей?
Nginx имеет встроенный циклический и взвешенный циклический перебор для достижения балансировки нагрузки.. Если сервер A слишком силен, он немного увеличит свой вес, и к нему будут иметь доступ 50 000 детей; если сервер B слабее, его вес будет меньше, и к нему будут иметь доступ 20 000 детей; если сервер C слабее, его вес уменьшится. будь самым маленьким. , пусть его посещают 10 000 детей.
Кроме того, у Nginx есть еще одна очень крутая функция:Динамическое и статическое разделение.
В нашей разработке программного обеспечения некоторые запросы требуют фоновой обработки, некоторые запросы не требуют фоновой обработки, например запросы файлов css, js, эти файлы, не требующие фоновой обработки, называются статическими файлами.
Мы можем разделить динамические ресурсы и статические ресурсы по некоторым правилам, а затем разделить запросы через Nginx, чтобы запросы на статические ресурсы не нужно было обрабатывать веб-серверу, тем самым улучшая общую скорость отклика ресурсов.
Во-вторых, установка Nginx
Установка Nginx различается для разных операционных систем. Windows может перейти непосредственно на официальный сайт, чтобы загрузить зеленый установочный пакет zip и разархивировать его.
Я провел вас через серверы Alibaba Cloud раньше.Если у вас есть сервер Linux, вы можете напрямую пройтипанель пагодыЭтот артефакт можно установить.
Однако, если при установке необходимого набора инструментов для панели пагоды выбран phpmyadmin (инструмент управления MySQL), порт 80 будет перезаписан, что сделает невозможным прямой доступ к стартовой странице Nginx через конфигурацию по умолчанию.
Я буду использовать среду macOS в качестве примера для демонстрации.
Первый шаг, черезbrew info nginx
Команда, чтобы узнать, установлен ли Nginx.
Второй шаг, черезbrew install nginx
команда для установки Nginx.
Из приведенной выше информации можно сделать вывод, что:
- корневой каталог
/usr/local/var/www
- файл конфигурации
/usr/local/etc/nginx/nginx.conf
- Порт по умолчанию 8080
Третий шаг, черезnginx
команда для запуска Nginx.
Четвертый шаг, в адресной строке браузера черезlocalhost:8080
Посетите, вы можете увидеть следующую страницу приветствия.
3. Общие команды Nginx
Вообще говоря, когда Nginx запущен, мы редко позволяем ему завершить работу, и чаще всего используется команда перезагрузки. Когда мы изменяем файл конфигурации, нам нужно выполнить команду перезагрузки, чтобы Nginx вступил в силу.
nginx 启动
nginx -s stop 停止
nginx -s quit 安全退出
nginx -s reload 重新加载配置文件
ps aux|grep nginx 查看nginx进程
Вы знаете, перезагрузка Nginx нечувствительна к пользователям, и я думаю, что это очень круто~
В-четвертых, конфигурация Nginx
Давайте сначала посмотрим на схему конфигурации Nginx:
main # 全局配置
├── events # 配置网络连接
├── http # 配置代理、缓存、日志等
│ ├── upstream # 配置负载均衡
│ ├── server # 配置虚拟主机,可以有多个 server
│ ├── server
│ │ ├── location # 用于匹配 URI(URL 是 URI 的一种),可以有多个 location
│ │ ├── location
│ │ └── ...
│ └── ...
└── ...
Давайте вытащим конфигурацию Nginx по умолчанию и посмотрим, я добавил комментарии, чтобы каждый мог легко понять, для чего используется эта строка конфигурации.
worker_processes 1; # Nginx 进程数,一般设置为和 CPU 核数一样
events {
worker_connections 1024; # 每个进程允许最大并发数
}
http {
include mime.types; # 文件扩展名与类型映射表
default_type application/octet-stream;
sendfile on; # 开启高效传输模式
keepalive_timeout 65; # 保持连接的时间,也叫超时时间,单位秒
server {
listen 8080; # 配置监听的端口
server_name localhost; # 配置的域名
location / {
root html; # 网站根目录
index index.html index.htm; # 默认首页文件
}
error_page 500 502 503 504 /50x.html; # 默认50x对应的访问页面
location = /50x.html {
root html;
}
}
include servers/*; # 加载子配置项
}
Хорошо, теперь мы входим в панель пагоды и пытаемся скопировать конфигурацию сервера по умолчанию в конфигурацию Nginx на сервере Linux.
Кратко объяснить.
Поскольку на моем сервере по умолчанию открыт порт 80, я настроил порт прослушивания на 80. Если вы настроите его на другой порт, не забудьте открыть порт в группе безопасности панели pagoda и облачного сервиса.
корень я указал/home/www
каталог, файл домашней страницы — index.html. Этот файл настроен мной, давайте посмотрим на содержимое.
<!DOCTYPE html>
<html>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>沉默王二</title>
<body>
<img src="niubi.jpeg" />
</body>
</html>
Очень лаконично, короче, второй брат, офигенно~
Хорошо, сохраняем файл конфигурации и перезагружаем Nginx, мы можем увидеть эффект, введя IP-адрес сервера в локальном браузере.
Пять, учебные материалы Nginx
Что касается балансировки нагрузки Nginx, то здесь также есть разделение на динамическую и статическую.После того, как сайт второго брата будет запущен и запущен, мы можем сделать видео, чтобы продемонстрировать это вам, что более интуитивно понятно. Начать работу с Nginx очень просто, но позвольте мне сказать, что если вы хотите хорошо использовать Nginx на работе, это все равно потребует много работы.
Здесь я порекомендую вам несколько хороших учебных материалов.
1) Видео вводный урок Mad God X, я лично считаю, что вводный урок Mad God по-прежнему очень удобен, а скорость и содержание в самый раз.
2) Учебник Nginx программиста Black X, всего 159 лекций, в основном очень подробный видеоурок по Nginx.
3) Nginx100 на Geek XX говорит, который идет немного глубже и включает в себя множество вещей на уровне принципов. Если кошелек относительно пухлый, вы можете заплатить за это. Однако я слышал, что где-то есть и белый билет.
4) Nginx от начала до практики, подробное объяснение из десяти тысяч слов, Для графической версии, вы можете перейти к Nuggets, чтобы прочитать эту статью.Содержание в основном покрыто (вы можете посмотреть оглавление ниже).С предыдущими видео-уроками, в основном стабильно выигрывать Nginx.
Если вы сможете просмотреть все эти материалы, я буду называть вас маленьким принцем Nginx. Считается, что если компания столкнется с проблемами Nginx, вы должны решить проблему.
Эта статья была включена в колонку с открытым исходным кодом «Дорога к продвинутым программистам Java» на GitHub. Недавно было обновлено много галантереи, поэтому те, у кого нет звезды, должны пойти и заказать волну. В конце концов, просмотр этого репозитория эквивалентен тому, чтобы стать лучшим программистом Java.