❝С трансформацией интерфейса Nginx также стал незаменимым навыком для разработчиков интерфейса.Сыграет ли nginx роль в конце концов? На самом деле, Nginx всегда был тесно связан с нами, его можно использовать и как веб-сервер, и как сервер балансировки нагрузки, с высокой производительностью, большим количеством одновременных подключений и т. д.
❞
1. Балансировка нагрузки
❝Когда количество посещений приложения быстро увеличивается в единицу времени, это влияет на пропускную способность и производительность сервера, и влияние настолько велико, что оно может выдержать свою собственную мощность, и сервер выйдет из строя. это явление и добиться лучшего взаимодействия с пользователем, мы можем разделить нагрузку на сервер, настроив балансировку нагрузки Nginx
❞
Когда один сервер выйдет из строя, балансировщик нагрузки назначит пользователям другие серверы, что значительно повысит стабильность веб-сайта. Когда пользователи выходят в Интернет, они сначала обращаются к балансировщику нагрузки, а затем перенаправляют запрос на фоновый сервер через балансировщик нагрузки.
1.1 Несколько распространенных способов балансировки нагрузки
- опрос (по умолчанию)
// nginx.config
upstream backserver {
server 192.168.0.1;
server 192.168.0.2;
}
- масса
❝Укажите вес различных IP-адресов. Вес положительно связан с коэффициентом доступа. Чем выше вес, тем больше доступ. Подходит для машин с разной производительностью.
❞
// nginx.config
upstream backserver {
server 192.168.0.1 weight=2;
server 192.168.0.2 weight=8;
}
- время отклика назначить
❝Честная конкуренция, кто быстрее ответит, кто справится, но этот метод должен полагаться на сторонний плагин nginx-upstream-fair, который нужно установить в первую очередь
❞
// nginx.config
upstream backserver {
server 192.168.0.1;
server 192.168.0.2;
fair;
}
server {
listen 80;
server_name localhost;
location / {
proxy_pass http://backserver;
}
}
1.2 Проверка работоспособности
❝Nginx поставляется с модулем ngx_http_upstream_module (модуль определения работоспособности), который, по сути, проверяет сердцебиение сервера.Он отправляет запросы проверки работоспособности на серверы в кластере, периодически опрашивая, чтобы проверить, находятся ли какие-либо серверы в кластере в ненормальном состоянии.
❞
Если будет обнаружено, что один из серверов неисправен, запросы, поступающие через обратный прокси nginx от клиента, не будут отправляться на сервер (до следующего раунда проверки работоспособности).
Основной пример выглядит следующим образом👇
upstream backserver{
server 192.168.0.1 max_fails=1 fail_timeout=40s;
server 192.168.0.2 max_fails=1 fail_timeout=40s;
}
server {
listen 80;
server_name localhost;
location / {
proxy_pass http://backend;
}
}
Задействованы две конфигурации:
- fail_timeout: установите период времени, когда сервер считается недоступным, и период времени для подсчета количества неудачных попыток, по умолчанию 10 с.
- max_fails : установить количество неудачных попыток Nginx связаться с сервером, по умолчанию: 1
2. Обратный прокси
❝Обратный прокси-сервер относится к тому, когда клиент отправляет запрос на доступ к содержимому на сервере, но запрос сначала будет отправлен на прокси-сервер прокси-сервера, этот прокси-сервер (Nginx) будет проксировать запрос и принадлежать внутреннему серверу под на этих внутренних серверах хранится та самая локальная сеть, а тот контент, который пользователь действительно хочет получить через клиента.В данном случае роль прокси-сервера Nginx является посредником, который играет роль раздачи и связи.
❞
2.1 Зачем нужен обратный прокси?
Преимущества обратного прокси в основном заключаются в следующих двух моментах.
- Роль брандмауэра
Когда ваше приложение не хочет, чтобы его напрямую выставляли клиенту (то есть клиент не может напрямую обращаться к реальному серверу через запросы, а только через Nginx), используйте nginx для фильтрации несанкционированных или незаконных запросов, чтобы обеспечить безопасность внутреннего сервер
- балансировки нагрузки
Балансировка нагрузки также упоминается в предыдущей главе.По сути, балансировка нагрузки представляет собой сценарий применения обратного прокси.Через nginx полученные клиентские запросы могут быть «равномерно» распределены по всем серверам в кластере (подробности см.).Метод балансировки нагрузки ), чтобы добиться балансировки нагрузки сервера
2.2 Как использовать обратный прокси
❝Мы настроили обратный прокси для доступа к порту 80 через проект nodejs, запущенный с имитации порта внутреннего сервера.
❞
// nginx.config
server {
listen 80;
server_name localhost;
location / {
proxy_pass http://127.0.0.1:8000;(upstream)
}
}
В обратном прокси-сервере Nginx он будет сопоставлять указанный URI с помощью функции определения местоположения, а затем передавать полученный запрос, соответствующий совпадающему URI, в ранее определенный пул восходящих узлов через proxy_pass.
3. Настройка https
❝Nginx часто используется для настройки HTTPS-аутентификации в два основных этапа: подписание стороннего доверенного SSL-сертификата и настройка HTTPS.
❞
3.1 Подпишите сторонний доверенный SSL
❝Файл закрытого ключа example.key и файл сертификата example.crt используются для настройки HTTPS, а файл example.csr используется при подаче заявки на файл сертификата. Для получения дополнительной информации о SSL-сертификатах нажмите здесьВведение в SSL-сертификаты
❞
3.2 Nginx настроить https
❝Чтобы включить службу HTTPS, в информационном блоке файла конфигурации (сервер) необходимо использовать параметр ssl команды listen и определить файл сертификата сервера и файл закрытого ключа следующим образом:
❞
server {
#ssl参数
listen 443 ssl; //监听443端口,因为443端口是https的默认端口。80为http的默认端口
server_name example.com;
#证书文件
ssl_certificate example.com.crt;
#私钥文件
ssl_certificate_key example.com.key;
}
- ssl_certificate: абсолютный путь к сертификату
- ssl_certificate_key: абсолютный путь к ключу;
4. Общая конфигурация
❝Помимо вышеперечисленного, что еще может фронтенд использовать Nginx, есть еще много ~ Yiyi расскажет ниже
❞
4.1 Белый список IP-адресов
❝Вы можете настроить белый список nginx, чтобы указать, какие IP-адреса могут получить доступ к вашему серверу, что необходимо для антисканеров.
❞
- Простая конфигурация
server {
location / {
deny 192.168.0.1; // 禁止该ip访问
deny all; // 禁止所有
}
}
- Конфигурация белого списка
Создать белый список
vim /etc/nginx/white_ip.conf
...
192.168.0.1 1;
...
Изменить конфигурацию nginx (nginx.conf)
geo $remote_addr $ip_whitelist{
default 0;
include ip.conf;
}
// geo 指令主要是可以根据指定变量的值映射出一个新变量。 如果不指定变量,默认为$remote_addr
Сделать настройки белого списка для совпадений
server {
location / {
if ( $ip_whitelist = 0 ){
return 403; //不在白名单返回 403
}
index index.html;
root /tmp;
}
}
4.2 Адаптация к ПК и мобильной среде
❝Когда пользователь открывает сцену baidu.com на стороне ПК с мобильного терминала, он автоматически переходит на m.baidu.com на мобильном терминале.По сути, Nginx может получить userAgent запрашивающего клиента через встроенный в переменной $http_user_agent, чтобы узнать текущего пользователя, является ли текущий терминал мобильным терминалом или ПК, а затем перенаправить на станцию H5 или станцию ПК
❞
server {
location / {
//移动、pc设备agent获取
if ($http_user_agent ~* '(Android|webOS|iPhone)') {
set $mobile_request '1';
}
if ($mobile_request = '1') {
rewrite ^.+ http://m.baidu.com;
}
}
}
4.3 Настройка gzip
❝Включите Nginx gzip, после сжатия размер статических ресурсов будет значительно уменьшен, что может сэкономить большую полосу пропускания, повысить эффективность передачи и улучшить отклик и опыт.
❞
server{
gzip on; //启动
gzip_buffers 32 4K;
gzip_comp_level 6; //压缩级别,1-10,数字越大压缩的越好
gzip_min_length 100; //不压缩临界值,大于100的才压缩,一般不用改
gzip_types application/javascript text/css text/xml;
gzip_disable "MSIE [1-6]\."; // IE6对Gzip不友好,对Gzip
gzip_vary on;
}
4.4 Междоменный запрос конфигурации Nginx
❝Когда возникает междоменная ошибка 403, также отсутствует заголовок «Access-Control-Allow-Origin» в запрошенной ошибке ресурса и т. д., вам необходимо настроить параметры заголовка ответа для сервера Nginx:
❞
location / {
add_header Access-Control-Allow-Origin *;
add_header Access-Control-Allow-Methods 'GET, POST, OPTIONS';
add_header Access-Control-Allow-Headers 'DNT,X-Mx-ReqToken,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Authorization';
if ($request_method = 'OPTIONS') {
return 204;
}
}
5. Как использовать Nginx
❝При локальном использовании Nginx основное использование Nginx представлено с точки зрения запуска, изменения, перезапуска и т. д.
❞
- Как начать
sudo nginx
- Измените конфигурацию nginx.conf (в зависимости от вашего местоположения конфигурации)
vim /usr/local/etc/nginx/nginx.conf
- Проверьте правильность грамматики
sudo nginx -t
- перезапустить nginx
sudo nginx -s reload
- Создание программных ссылок (легко управлять nginx с несколькими приложениями)
❝Когда нам нужно управлять nginx нескольких веб-сайтов, это лучший способ управлять файлами nginx вместе.Как правило, они существуют в /nginx/conf.d/, и нам нужно поместить файлы конфигурации в /etc/nginx/conf .d/, как сделать, чтобы этот файл конфигурации не только в папке программы, но и в папке /etc/nginx/conf.d/?
❞
Предположим, у нас есть файл конфигурации ngxin в папке с программой: /home/app/app.nginx.conf
Нам нужно создать программную ссылку на этот файл в /etc/nginx/conf.d/:
ln -s /home/app/app.example.com.nginx.conf /etc/nginx/conf.d/app.nginx.conf
После этой операции, когда мы изменим файл конфигурации приложения, соответствующий файл конфигурации в /etc/nginx/conf.d/ также будет изменен.После изменения перезапустите nginx, чтобы новая конфигурация ngxin вступила в силу.
Пожалуйста, выпейте 🍵 Не забудьте подключиться три раза~
1. После прочтения не забудьте поставить лайк 🌲 соусу, там есть 👍 и мотивация
2. Обратите внимание на интересные вещи в интерфейсе официального аккаунта и пообщайтесь с вами об интересных вещах в интерфейсе.
3. Статья размещена на GithubfrontendThingsСпасибо, Стар✨