Аналог proxy_pass nginx на языке golang возможно ли реализовать?

Да, возможно реализовать аналог proxy_pass из Nginx на языке Go.

proxy_pass - это директива в конфигурации Nginx, которая позволяет перенаправлять HTTP-запросы с одного сервера на другой сервер. В Go есть несколько библиотек и подходов, которые позволяют реализовать подобное поведение.

Один из подходов - использование пакета net/http/httputil из стандартной библиотеки Go. Этот пакет предоставляет функционал для манипуляции HTTP-запросами и ответами. Чтобы реализовать аналог proxy_pass, вам придется создать свой HTTP-сервер, который будет принимать входящие запросы и передавать их на целевой сервер. Вот пример серверной части:

package main

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

func main() {
    // Создаем прокси-сервер
    proxy := httputil.NewSingleHostReverseProxy(&url.URL{
        Scheme: "http",
        Host:   "example.com", // измените на целевой хост
    })

    // Обрабатываем все запросы с помощью прокси-сервера
    http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
        proxy.ServeHTTP(w, r)
    })

    // Запускаем сервер на порту 8080
    log.Fatal(http.ListenAndServe(":8080", nil))
}

В приведенном выше примере мы создаем экземпляр прокси-сервера с помощью httputil.NewSingleHostReverseProxy(), указывая целевой хост и порт. Затем мы обрабатываем все входящие запросы на корневом пути ("/") и передаем их на прокси-сервер с помощью функции proxy.ServeHTTP().

Это простой пример, который демонстрирует основные принципы реализации proxy_pass на языке Go. Однако, вам могут понадобиться дополнительные настройки и функциональность в зависимости от требований вашей задачи.