Добавить прокси Nginx с помощью Go

Go
Добавить прокси Nginx с помощью Go

Введение

Nginx — это высокопроизводительный HTTP-сервер и обратный прокси-сервер.

Двумя наиболее часто используемыми функциями являются обратный прокси-сервер и балансировка нагрузки.

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

Обратный прокси является противоположностью прямого прокси.

Обычные прокси-серверы требуют от пользователей активной настройки. Пользователи настраивают и подключаются к прокси-серверу на своих компьютерах. Таким способом можно скрыть собственный IP, чтобы сервер приложений не знал IP-адреса клиента.

Обратный прокси-сервер устанавливается на сервер как прокси для сервера приложений.Обратный прокси-сервер, к которому фактически обращается клиент, Затем обратный прокси-сервер обращается к реальному серверу приложений и затем передает полученный ответ клиенту.

反向代理

Настроить обратный прокси с помощью Nginx очень просто, базовая конфигурация выглядит следующим образом:

upstream web {
  server 127.0.0.1:8081;
}

server {
  listen 80;
  server_name web.coolcat.com;

  location / {
    proxy_set_header Host $http_host;
    proxy_set_header X-Forwarded-Host $http_host;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Real-IP $remote_addr;

    client_max_body_size 5m;

    proxy_pass http://web;
  }
}

Доменное имя задается в указанном выше файле конфигурации.web.coolcat.com, Все запросы на этот домен будут направлены наhttp://webначальство.

по конфигурацииupstream, мы можем обнаружить, что фактический трафик перенаправляется на127.0.0.1:8081вверх.

Таким образом реализуется обратный прокси.

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

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

Так называемая балансировка нагрузки относится к переадресации нескольких запросов на разные внутренние серверы.

upstream web {
  server 127.0.0.1:8081;
}

В приведенной выше конфигурации обратного прокси-сервера задан только один адрес внутреннего сервера, Если вы добавите еще несколько, вы добьетесь простейшей балансировки нагрузки.

голосование

Стратегия опроса распределяет запросы по порядку.

upstream web {
  server 192.168.1.1:8081;
  server 192.168.1.2:8081;
}

взвешенная круговая система

Взвешенная стратегия распределяет запросы пропорционально.

upstream web {
  server 192.168.1.1:8081 weight=4;
  server 192.168.1.2:8081 weight=6;
}

Вероятность доступа двух вышеуказанных серверов равна четырем или шести.

наименее подключенный

Наименьшее количество подключений распределяет запросы на сервер с наименьшим количеством текущих подключений.

upstream web {
  least_conn;
  server 192.168.1.1:8081;
  server 192.168.1.2:8081;
}

ip_hash

Все подключения с одного и того же IP-адреса назначаются одному и тому же серверу, обычно используемому для会话保持.

upstream web {
  ip_hash;
  server 192.168.1.1:8081;
  server 192.168.1.2:8081;
}

Универсальный хэш

Используйте хэш для настройки ключа, который будет вычисляться. В примере используется адрес запроса. можешь выбратьconsistentПараметр может указывать на использование согласованного алгоритма хеширования.

upstream web {
  hash $request_uri;
  # hash $request_uri consistent;
  server 192.168.1.1:8081;
  server 192.168.1.2:8081;
}

Ссылаться на:

Суммировать

Nginx — очень часто используемый прокси-сервер, его функции очень мощны, а его производительность также очень высока. Для получения дополнительной информации см.официальная документация.

Текущий раздел кода

как версияv0.14.0