Рубрики
Uncategorized

Понимание nginx (прокси, обратное обеспечение, балансировка нагрузки)

Взгляд на меньшие общения о nginx. Tagged с DevOps, ShowDev, Linux, Learning.

Эта часть была первоначально размещена в моем блоге в Легобокс

Фон

Многие считают Nginx как о веб-сервере, да, это веб-сервер, и гораздо больше, Nginx является прежде всего прокси-двигателем и механизмом балансировки нагрузки, который способен работать в качестве веб-сервера, используя какой-либо постопроцесс Интерпретатор, который вы хотели бы, будь то UWSGI, PHP-FPM и т. Д.

Многие из нас слышали о Nginx, и некоторые из нас с нетерпением ждут, чтобы проверить, что это такое, в этой части мы хорошо рассмотрим, как использовать Nginx в качестве балансировщика нагрузки и прохожника общего прокси.

Предпосылка

Перед тем, как вставать и работать с Nginx, обычно важно (но не обязательно), что вы соответствуете следующим условиям,

  • Вы хотите узнать и понять еще несколько DevOps
  • У вас есть понимание того, что такое веб -сервер в целом
  • Вы использовали компьютер раньше. 😏

Получил все это, тогда вы готовы идти.

Прокси

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

В Nginx это достигается с использованием Прокси -проход директива.

    // basic proxy pass
    location / {
      proxy_pass http://ourserver2here.com
    }

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

Соответствующие префиксы

    location /match/here {
      proxy_pass http://ourserver2here.com;
    } 

В приведенной выше настройке в конце сервера не указано URI в определении Proxy Pass. В этом случае запрос, такой как /match/здесь/пожалуйста , Этот запрос будет отправлен в нашу Server2Here как https://reserver2here/match/здесь/пожалуйста Анкет Довольно удобно, верно?

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

Это один тип прокси, который особенно интересен, это система прокси -прокси -дистанции была по запросам, отправляемым на сервер (давайте назовут это a) фактически отправляется на другой сервер (давайте назовут его b), который помещает перед первым сервером (сервер A ) и продолжает передавать сообщение на А и отвечает так, как будто оно отвечает.

Вот более формальное описание.

В компьютерных сетях, а Обратный прокси это тип Прокси Сервер, который извлекает ресурсы от имени клиента с одного или нескольких серверов. Эти ресурсы затем возвращаются клиенту, как если бы они происходили из самого веб -сервера.

Вот виртуальное описание

С Nginx мы могли бы достичь этого и даже взять его дальше, когда -либо слышали о Ngrok, возможно, у вас, возможно, нет, в любом случае,

NGROK — это услуга, которая позволяет вам обслуживать приложение Localhost через доменную прокси, разоблачая его через публичный URL.

С обратным прокси и настройкой поддомена на вашем сайте для таких предприятий, вы можете иметь свой собственный ngrok без постоянного изменения доменного имени и прочего.

Чтобы сделать это, первая часть состоит в том, чтобы настроить Nginx на вашем сервере для прокси -подключений из вашего конкретного субдомена или домена (в зависимости от того, что вы найдете удобным) к определенному порту на сервере.

    server {
      listen 80;

      server_name coolsubdomain.mainname.com;

      location / {
        proxy_pass http://127.0.0.1:5000; #in this case we picked the port 5000
      }
    }

На вашем компьютере предполагается, что наше приложение обслуживается в нашем локальном порту 8000 (это может быть любой порт на самом деле), пытаясь использовать SSH, мы запускаем обратный туннель в порт на сервере.

    // run a reverse proxy to your server via ssh
    ssh -R 5000:127.0.0.1:8000 youruser@mainname.com

Это устанавливает обратный прокси, поэтому любой запрос, переходящий на Coolsubdomain.mainname.com, на самом деле приходит на вашу машину Localhost.

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

Балансировка нагрузки — это еще одна проблема, которую Nginx имеет уникальную позицию для решения, он создан для обработки многих запросов, и если у нас есть несколько серверов, использующих наш проект, мы можем сбалансировать нагрузку между ними, используя вверх по течению.

Nginx использует восходящие по течению, чтобы сбалансировать нагрузку, и по умолчанию имеет несколько алгоритмов, которые умоляются для обработки механизма балансировки нагрузки.

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

  • (по-круговой) : Алгоритм балансировки нагрузки по умолчанию, который используется, если нет других балансирующих директив. Каждый сервер, определяемый в контексте UPSTREAM, передаются запросы последовательно по очереди.

  • ind_conn : Указывает, что новые соединения всегда должны быть переданы бэкэнд, которая имеет наименьшее количество активных соединений. Это может быть особенно полезно в ситуациях, когда связи с бэкэнд могут сохраняться в течение некоторого времени.

  • ip_hash : Этот алгоритм балансировки распространяет запросы на разные серверы на основе IP -адреса клиента. Первые три октета используются в качестве ключа к выбору на сервере для обработки запроса. Результатом является то, что клиенты, как правило, обслуживаются одним и тем же сервером каждый раз, что может помочь в последовательности сеанса.

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

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

    # http context
    upstream backend_hosts {
      least_conn;
      server host1.example.com;
      server host2.example.com;
      server host3.example.com;
    }

    # next we set up our server
    server {
      listen 80;
      server_name example.com;
      location /proxy-me {
        proxy_pass http://backend_hosts;
      }
    }

Мы могли бы даже добавить веса к определенному хосту, чтобы они обрабатывали больше соединений в целом, чем остальные в соответствии с определенным соотношением.

    ...
    upstream backend_hosts {
      least_conn;
      server host1.example.com weight=3;
      server host2.example.com;
      server host3.example.com;
    }
    ...

Вывод

Где много других вещей, которые мы можем достичь, используя Nginx, это в значительной степени только верхушка айсберга. Настройка веб -серверов и прокси -серверов, как правило, может быть чем -то вроде хлопот, но это не должно.

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

Оригинал: «https://dev.to/legobox/understanding-nginx-proxying-reverse-proxying-load-balancing-1pjd»