Полностью раскрыты общие функции nginx (с преимуществами~~)

задняя часть сервер Nginx балансировки нагрузки

Эта статья призвана рассказать самые скучные базовые знания на самом популярном языке.

Nginx как высокопроизводительный веб-сервер, я хочу, чтобы все были желанны, он готов учиться, я хочу учиться, у меня не так много грамматики, и у меня много онлайн. Ниже блоггер рассказал и проанализировал несколько функций Nginx, изучить эти функции, обычная разработка и развертывание не проблема. Поэтому я надеюсь, что после прочтения я смогу установить NGINX, чтобы изучить тест конфигурации, чтобы я действительно мог его понять. Впереди высокая энергия, в конце текста благополучие.

Схема статьи:

  1. прямой прокси
  2. обратный прокси
  3. Прозрачный прокси
  4. балансировки нагрузки
  5. статический сервер
  6. установка нгинкс
  7. небольшой бонус

прямой прокси

Прямой прокси: поведение, при котором сервер интрасети активно запрашивает услуги из внешней сети.

Только взглянув на понятия, некоторые читатели могут еще не понять: что такое «форвард» и что такое «агент», давайте разберемся в этих двух терминах по отдельности.

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

С помощью пояснений, возвращаясь к понятию nginx, прямой прокси фактически означает, что клиент не может активно или не намерен завершить инициативу по инициированию запроса к серверу, но поручает прокси-серверу nginx инициировать запрос на сервер, получает результат обработки и возвращает его клиенту.
Как видно из рисунка ниже:Запрос, инициированный клиентом на целевой сервер, инициируется прокси-сервером вместо него к целевому хосту, и после получения результата он возвращается к клиенту через прокси-сервер.

Возьмите каштан: большинство социалистических преемников знают, что для защиты цветов родины от смога из внешнего мира государство произвело некоторые "оптимизации" в сети.Без помощи поисковых систем, таких как Google, код экстази также потеряет свой цвет.Поэтому в Интернете были некоторые технологии и программное обеспечение fan qiang для нуждающихся людей, такие как VPN и т. д. Фактически, принцип VPN в основном тот же. прямой прокси, то есть компьютер, которому требуется доступ к внешней сети, инициирует запрос на доступ к внешней сети и использует VPN на машине для поиска прокси-сервера, который может получить доступ к иностранным веб-сайтам.Прокси-сервер инициирует запрос на иностранный веб-сайт, а затем верните результат в машину.

Конфигурация прямого прокси:

 1server {
2    #指定DNS服务器IP地址  
3    resolver 114.114.114.114;   
4    #指定代理端口    
5    listen 8080;  
6    location / {
7        #设定代理服务器的协议和地址(固定不变)    
8        proxy_pass http://$http_host$request_uri; 
9    }  
10} 

Таким образом, сервер с портом 8080 в интрасети может активно запрашивать хост 1.2.13.4.Например, под Linux вы можете:

1curl --proxy proxy_server:8080 http://www.taobao.com/

Конфигурация ключей для прямого прокси:

  1. Resolver: DNS-сервер IP-адрес
  2. listen: порт сервера интрасети, который активно инициирует запросы
  3. proxy_pass: протокол и адрес прокси-сервера.

обратный прокси

Обратный прокси: обратный прокси-сервер относится к использованию прокси-сервера для приема запроса от клиента, а затем переадресации запроса на вышестоящий сервер в интрасети.После того, как вышестоящий сервер обрабатывает его, он возвращает результат клиенту через nginx. .

Принцип форвард-прокси описан выше, думаю, что для реверс-прокси все понятно.
Обратный прокси-сервер должен принять запрос из внешнего мира сначала через nginx, а затем перенаправить его на сервер в интранете по мере необходимости и вернуть запрос на обработку внешнему клиенту.Клиент не знает о существовании " вышестоящий сервер" вообще.


Например: у сервера есть только один порт 80, и на сервере может быть несколько проектов.Если порт проекта A — 8081, порт проекта B — 8082, а проект C — 8083, предполагается, что доменное имя указание на сервер — www.xxx.com, доступ к проекту B в это время — www.xxx.com:8082 и т. д., к URL-адресам других проектов также нужно добавлять номер порта, что очень некрасиво , В это время мы даем порт 80 серверу nginx и даем каждому проекту присвоенное независимое имя поддомена, например, проект A — это a.xxx.com, а конфигурация пересылки каждого проекта устанавливается в nginx, и затем доступ ко всем проектам принимается сервером nginx, а затем перенаправляется на другую обработку сервера. Конкретный процесс показан на следующем рисунке:

Конфигурация обратного прокси:

 1server {
2    #监听端口
3    listen 80;
4    #服务器名称,也就是客户端访问的域名地址
5    server_name  a.xxx.com;
6    #nginx日志输出文件
7    access_log  logs/nginx.access.log  main;
8    #nginx错误日志输出文件
9    error_log  logs/nginx.error.log;
10    root   html;
11    index  index.html index.htm index.php;
12    location / {
13        #被代理服务器的地址
14        proxy_pass  http://localhost:8081;
15        #对发送给客户端的URL进行修改的操作
16        proxy_redirect     off;
17        proxy_set_header   Host             $host;
18        proxy_set_header   X-Real-IP        $remote_addr;
19        proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
20        proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;
21        proxy_max_temp_file_size 0;
22   }
23}

Таким образом, вы можете получить доступ к веб-сайту, соответствующему проекту, через a.xxx.com, без необходимости указывать уродливый номер порта.
Ключевые моменты настройки обратного прокси:

  1. server_name: представляет доменное имя, введенное, когда клиент инициирует запрос к серверу.
  2. proxy_pass: представляет адрес доступа исходного сервера, то есть сервера, который фактически обрабатывает запрос (localhost + номер порта).

3. Прозрачный прокси

Прозрачный прокси: также известный как простой прокси, что означает, что когда клиент инициирует запрос на сервер, запрос сначала достигнет прозрачного прокси-сервера, а прокси-сервер пересылает запрос на сервер реального источника для обработки, что Является ли клиент не знает, что вообще наличие прокси-сервера.

Для каштана: его использование чем-то похоже на перехватчик, например, определенную строгую систему офисного компьютера компании, используем ли мы компьютер для чего-то, службы безопасности могут перехватить все, что мы отправляем, это потому, что компьютер, когда он отправляет выход, по сути, идет через прозрачный сервер в сеть, после его обработки, только потом выходит из сети, и когда мы выходим в интернет, там не воспринимается перехватчик, перехватывающий наши данные и информацию.

Некоторые люди говорят, что прозрачный прокси-сервер немного похож на обратный прокси-сервер в том смысле, что прокси-сервер сначала принимает запрос, а затем перенаправляет его на исходный сервер. На самом деле есть разница по сути.Прозрачный прокси означает, что клиент не может воспринимать существование прокси-сервера, а обратный прокси означает, что клиент воспринимает существование только одного прокси-сервера.Поэтому один из них скрывает себя а другой скрывает исходный сервер. По сути, прозрачный прокси и прямой прокси похожи, оба инициируются клиентом, а обрабатывает их прокси-сервер; разница между ними в том, что прямой прокси — это прокси-сервер, а не клиентский запрос, а прозрачный прокси — это прокси-сервер. клиент инициирует запрос.Когда запрос сделан, он сначала проходит через прозрачный прокси-сервер, а затем достигает сервера.Во время этого процесса клиент не может воспринимать прокси-сервер.

4. Балансировка нагрузки

Балансировка нагрузки. Процесс распределения запросов, полученных сервером, в соответствии с правилами называется балансировкой нагрузки. Балансировка нагрузки — это проявление обратного прокси.

Возможно, большинство веб-проектов, с которыми люди вступают в контакт, вначале выполняются с одним сервером, но когда трафик веб-сайта увеличивается, один сервер не может с этим справиться. В настоящее время необходимо увеличить сервер для создания Кластер используется для распределения трафика, и когда эти серверы настроены, nginx выступает в роли получателя трафика и отвода трафика.Когда запрос делается на сервер nginx, nginx может распределять запрос по разным серверов в соответствии с установленной информацией о нагрузке.После того, как сервер завершает обработку, nginx получает результат обработки и возвращает его клиенту.Таким образом, балансировка нагрузки может быть достигнута за счет использования обратного прокси nginx.

В nginx есть несколько режимов для реализации балансировки нагрузки:

  1. Опрос: каждый запрос выделяется на разные бэкэнд-серверы один за другим в хронологическом порядке, который также является режимом по умолчанию Nginx. Конфигурация режима опроса очень проста, просто добавьте список серверов в модуль вверх по течению.

Следующая конфигурация относится к:В нагрузке три сервера, при поступлении запроса nginx распределяет запрос на три сервера для обработки в хронологическом порядке.

1upstream serverList {
2    server 1.2.3.4;
3    server 1.2.3.5;
4    server 1.2.3.6;
5}
  1. ip_hash: каждый запрос распределяется в соответствии с результатом хеширования IP-адреса доступа, и один и тот же IP-клиент постоянно обращается к внутреннему серверу. Это может гарантировать, что запросы с одного и того же IP-адреса отправляются на фиксированную машину, что может решить проблему сеанса.

Следующая конфигурация относится к:В нагрузке три сервера, при поступлении запроса nginx преимущественно распределяет его по результату ip_hash, то есть запрос одного и того же IP фиксируется на определенном сервере, а остальные запросы распределяются на три сервера в хронологический порядок обработки.

1upstream serverList {
2    ip_hash
3    server 1.2.3.4;
4    server 1.2.3.5;
5    server 1.2.3.6;
6}
  1. url_hash: запрос распределяется в соответствии с результатом хеширования URL-адреса, к которому осуществляется доступ, и тот же URL-адрес постоянно перенаправляется на один и тот же внутренний сервер для обработки.
1upstream serverList {
2    server 1.2.3.4;
3    server 1.2.3.5;
4    server 1.2.3.6;
5    hash $request_uri; 
6    hash_method crc32; 
7}
  1. справедливо: запросы распределяются в соответствии со временем отклика внутреннего сервера, и приоритет отдается тем, у кого короткое время отклика.
1upstream serverList {
2    server 1.2.3.4;
3    server 1.2.3.5;
4    server 1.2.3.6;
5    fair;
6}

В каждом режиме параметры, которые могут быть переданы за каждым сервером:

  1. down: текущий сервер временно не участвует в нагрузке
  2. вес: вес, чем больше значение, тем больше нагрузка на сервер.
  3. max_fails: количество отказов запросов, по умолчанию 1.
  4. fail_timeout: время паузы после сбоев max_fails.
  5. резервное копирование: Резервная машина, только когда все другие машины, не являющиеся резервными, отключены или заняты, будет запрашивать резервную машину.

Следующая конфигурация относится к:В нагрузке три сервера, при поступлении запроса nginx распределяет запрос на три сервера для обработки в хронологическом порядке и весе, например, если запросов 100, 30% запросов обрабатывает сервер 4, а 50% запросов обрабатывает сервер 5. 20% запросов обрабатывает сервер 6.

1upstream serverList {
2    server 1.2.3.4 weight=30;
3    server 1.2.3.5 weight=50;
4    server 1.2.3.6 weight=20;
5}

Следующая конфигурация относится к:В нагрузке три сервера, таймаут отказа 4-го сервера 60с, 5-й сервер в нагрузке пока не участвует, 6-й сервер используется только как резервная машина.

1upstream serverList {
2    server 1.2.3.4 fail_timeout=60s;
3    server 1.2.3.5 down;
4    server 1.2.3.6 backup;
5}

Ниже приведен пример настройки балансировки нагрузки (написана только конфигурация ключа):
в:

  1. upstream serverList — это конфигурационный модуль нагрузки
  2. server_name — адрес доменного имени, запрошенный клиентом
  3. proxy_pass — это модуль, указывающий на список полезной нагрузки.
 1upstream serverList {
2    server 1.2.3.4 weight=30;
3    server 1.2.3.5 down;
4    server 1.2.3.6 backup;
5}   
6
7server {
8    listen 80;
9    server_name  www.xxx.com;
10    root   html;
11    index  index.html index.htm index.php;
12    location / {
13        proxy_pass  http://serverList;
14        proxy_redirect     off;
15        proxy_set_header   Host             $host;
16   }
17}

5. Статический сервер

В настоящее время во многих проектах популярно разделение front-end и back-end, то есть front-end сервер и back-end сервер разделены и развернуты отдельно, что позволяет front-end и back-end персоналу выполнять свои обязанности. без необходимости зависеть друг от друга.При разделении фронта и бэка работа фронтенд проектов не Tomcat, требуется Apache и другие серверные среды, поэтому nginx можно использовать напрямую как статический сервер.

Конфигурация статического сервера следующая, среди которых ключевая конфигурация:

  1. root: корневой каталог абсолютного пути прямого статического проекта.
  2. server_name : адрес доменного имени статического веб-сайта.
1server {
2        listen       80;                                                         
3        server_name  www.xxx.com;                                               
4        client_max_body_size 1024M;
5        location / {
6               root   /var/www/xxx_static;
7               index  index.html;
8           }
9    }
  1. установка нгинкс

Узнав так много о настройке и использовании nginx, нам нужно проверить каждую точку знаний, чтобы быть впечатленными. Перед этим нам нужно знать, как установить nginx. Давайте возьмем среду Linux в качестве примера, чтобы кратко описать, как установить nginx. в yum Шаг:

  1. Установите зависимости:
1//一键安装上面四个依赖
2yum -y install gcc zlib zlib-devel pcre-devel openssl openssl-devel
  1. Установите нгинкс:
1yum install nginx
  1. Проверьте, прошла ли установка успешно:
1nginx -v
  1. Запустить/остановить nginx:
1/etc/init.d/nginx start
2/etc/init.d/nginx stop
  1. Отредактируйте файл конфигурации:
1/etc/nginx/nginx.conf 

После выполнения этих шагов мы можем войти в файл конфигурации nginx nginx.conf, чтобы настроить и проверить вышеуказанные знания.

  1. Небольшое благополучие:

Некоторые люди говорят, что они, кажется, все здесь понимают, но нет Linux, чтобы проверить его. На самом деле Nginx также имеет версию Windows. Конечно, версия Windows не используется в реальных проектах, потому что серверы веб-проектов. Все ли Linux, поэтому вы можете установить виртуальную машину на свой собственный компьютер, а затем установить Linux для воспроизведения, но если вы хотите применить то, что вы узнали, и он ближе к производственной среде проекта компании, автор Рекомендует, чтобы вы купите облачных серверов самостоятельно, чтобы узнать, просто так происходит, что облако Alibaba имеет двойное Eleven Event, и один сервер требуется только90 юанейОдин год, это очевидная шерстяная деятельность, у вас есть сердце, чтобы сдаться?

Вы тратите более 90 долларов на установку виртуальных машин и систем Linux!
Вы когда-нибудь думали о том, чтобы однажды загрузить свой собственный код на сервер вручную?
У вас было видение построить и поддерживать свой собственный личный блог?
Вы пробовали это от выпуска проекта до доступа к разрешению доменного имени ко всему процессу?
….
Если нет, то я предлагаю вам купить один:

Нажмите на меня, чтобы купить сервер за 90 юаней

Вы также можете отсканировать QR-код, чтобы купить напрямую:

------------фокус----------------

Внимание! ! !
После того, как вы укажете ссылку для регистрации покупки, облако Ali теперь вернется к блогеру, большое спасибо за любовь ко всем блогерам, которые решили вернуть вам деньги, поэтому те, кто покупает новую регистрацию пользователя, пожалуйста, Габор главный V ( sisi -ceo) Обратитесь к блогерам, после проверки блоггеров вам вернут деньги в виде красных конвертов, чтобы вы упустили самую низкую цену на покупку сервера, можете узнать больше вещей! ! !

(Старые пользователи и другие ссылки для регистрации и покупки большие, блоггеры не могут получить кэшбэк, поэтому эти блоггеры ничего не могут сделать~~~)


Думаете, эта статья была вам полезна? пожалуйста, поделитесь с большим количеством людей
Обратите внимание на «Безграничное программирование» и улучшите свои навыки принуждения.