Проксирование запросов в golang с помощью nginx

Я собираюсь использовать прокси для своих запросов. В коде я это делаю так:

proxyUrl, err := url.Parse(ProxyServerUrl) // proxyUrl - "http://nginxHost:nginxPort" 
if err != nil {...}
client.Transport = &http.Transport{Proxy: http.ProxyURL(proxyUrl)}
resp, err := client.Get(requestUrl) // requestUrl - "https://domain/..."
...

Мне нужно как-то поднять и настроить nginx чтобы я мог его использовать в своем коде, как proxyUrl. По большей части меня интересует содержание nginx.conf для этого кейса.


Ответы (1 шт):

Автор решения: Senior Pomidor

в конфиге nginx можно перенаправлять входящие запросы на другой сервер через proxy_pass.

server {
    listen 80;
    server_name ru.stackoverflow.com;
    ...

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

location / {
    proxy_pass http://192.168.XX.YY;
    proxy_set_header HOST $host;
    proxy_set_header X-Forwarded-Proto $scheme;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for
}

}

В примере /match/here в конце описания сервера не указан URI адрес. При получении запроса, соответствующего этой настройке, он будет без изменения передан вышестоящему серверу. Например, при обращении к /match/here/please, URI будет отправлен по адресу http://example.com/match/here/please.

Во втором примере заголовок host соответствующего запроса будет изменен на значение переменной $host, которое должно содержать изначально запрошенный хост. Заголовок X-Forwarded-Proto дает вышестоящему серверу знать о том, какая схема была использована при изначальном запросе (http/https).
X-Real-IP имеет значение IP адреса клиента. Заголовок X-Forwarded-For содержит список прокси серверов, по которым прошел запрос до настоящего момента. В данном примере мы присваиваем ему значение переменной $proxy_add_x_forwarded_for. Она содержит в себе полученный заголовок X-Forwarder-For плюс добавляет свой сервер в этот список.

подробнее тут

→ Ссылка