Sobes.tech
Back to questions
Senior
4

Что такое reverse proxy и что обычно используют?

Companies where asked
purweb

Answer from AI

sobes.tech AI

Reverse proxy — это сервер, который принимает запросы от клиентов и перенаправляет их на один или несколько внутренних серверов. Он выступает как посредник между клиентом и сервером, скрывая внутреннюю структуру сети и обеспечивая дополнительные функции.

Основные задачи reverse proxy:

  • Балансировка нагрузки между несколькими серверами.
  • Кэширование ответов для ускорения обработки.
  • SSL-терминация (обработка HTTPS).
  • Защита внутренних серверов от прямого доступа.
  • Сжатие и оптимизация трафика.

Часто используемые решения для reverse proxy:

  • Nginx — популярный веб-сервер и reverse proxy с широкими возможностями.
  • HAProxy — высокопроизводительный балансировщик нагрузки и reverse proxy.
  • Traefik — современный динамический reverse proxy, часто используется в контейнерных средах.

В Go можно использовать пакет net/http/httputil для создания собственного reverse proxy. Пример простого reverse proxy на Go:

package main

import (
    "log"
    "net/http"
    "net/http/httputil"
    "net/url"
)

func main() {
    target, _ := url.Parse("http://localhost:8080")
    proxy := httputil.NewSingleHostReverseProxy(target)

    http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
        proxy.ServeHTTP(w, r)
    })

    log.Println("Starting reverse proxy on :9090")
    log.Fatal(http.ListenAndServe(":9090", nil))
}

Этот код перенаправляет все запросы с порта 9090 на локальный сервер на порту 8080.