GO_INTERVIEW_LIB Telegram 419
💬 Как реализовать reverse proxy на Go?

Reverse proxy — это механизм для перенаправления входящих запросов на другой сервер или сервис. Для реализации на Go можно использовать пакет httputil:


package main

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

func main() {
targetServer := "example.com"
proxy := httputil.NewSingleHostReverseProxy(&url.URL{
Scheme: "http",
Host: targetServer,
})

http.Handle("/", proxy)
http.ListenAndServe(":8000", nil)
}


В примере входящие запросы на обратный прокси на порту 8000 будут перенаправлены на целевой сервер example.com.

Мы также можем настроить поведение обратного прокси, реализовав функцию Director, которая может быть использована для изменения запроса перед его перенаправлением на целевой сервер.

📌 Пример настройки функции Director:


package main

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

func main() {
targetServer := "example.com"
proxy := httputil.NewSingleHostReverseProxy(&url.URL{
Scheme: "http",
Host: targetServer,
})

proxy.Director = func(req *http.Request) {
req.Header.Set("X-Forwarded-Host", req.Host)
req.Header.Set("X-Origin-Host", targetServer)
req.Host = targetServer
}

http.Handle("/", proxy)
http.ListenAndServe(":8000", nil)
}
👍151



tgoop.com/go_interview_lib/419
Create:
Last Update:

💬 Как реализовать reverse proxy на Go?

Reverse proxy — это механизм для перенаправления входящих запросов на другой сервер или сервис. Для реализации на Go можно использовать пакет httputil:


package main

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

func main() {
targetServer := "example.com"
proxy := httputil.NewSingleHostReverseProxy(&url.URL{
Scheme: "http",
Host: targetServer,
})

http.Handle("/", proxy)
http.ListenAndServe(":8000", nil)
}


В примере входящие запросы на обратный прокси на порту 8000 будут перенаправлены на целевой сервер example.com.

Мы также можем настроить поведение обратного прокси, реализовав функцию Director, которая может быть использована для изменения запроса перед его перенаправлением на целевой сервер.

📌 Пример настройки функции Director:


package main

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

func main() {
targetServer := "example.com"
proxy := httputil.NewSingleHostReverseProxy(&url.URL{
Scheme: "http",
Host: targetServer,
})

proxy.Director = func(req *http.Request) {
req.Header.Set("X-Forwarded-Host", req.Host)
req.Header.Set("X-Origin-Host", targetServer)
req.Host = targetServer
}

http.Handle("/", proxy)
http.ListenAndServe(":8000", nil)
}

BY Библиотека Go для собеса | вопросы с собеседований


Share with your friend now:
tgoop.com/go_interview_lib/419

View MORE
Open in Telegram


Telegram News

Date: |

Choose quality over quantity. Remember that one high-quality post is better than five short publications of questionable value. Today, we will address Telegram channels and how to use them for maximum benefit. Your posting frequency depends on the topic of your channel. If you have a news channel, it’s OK to publish new content every day (or even every hour). For other industries, stick with 2-3 large posts a week. Hui said the messages, which included urging the disruption of airport operations, were attempts to incite followers to make use of poisonous, corrosive or flammable substances to vandalize police vehicles, and also called on others to make weapons to harm police. The Channel name and bio must be no more than 255 characters long
from us


Telegram Библиотека Go для собеса | вопросы с собеседований
FROM American