Я создаю Azure Function (C#, ASP. net core 3.1) (A) для доступа к API (Azure Function (B)) через прокси-сервер Squid, чтобы изменить порт источника для функции (B). (информация о конфигурации показана ниже.)
Я могу получить доступ к Azure функции (B) через прокси, но порт источника не изменяется.
Когда Я дважды обращался к функции (B), прокси-сервер squid зарегистрировал только первый доступ. Но функция (B) регистрируется, к ней каждый раз обращались через прокси. (Зарегистрированный IP-адрес прокси.)
Пожалуйста, скажите мне, что происходит при соединении между функцией (A) и прокси, и как мне изменить функцию (A) или конфигурация squid.
┌────────────────────┐
│ Azure Function (A) │
└────────────────────┘
↓
↓
┌──────────────┐
│ Proxy Server │
└──────────────┘
↓
↓
┌────────────────────┐
│ Azure Function (B) │
└────────────────────┘
Код функции (A) находится здесь.
// startup.cs
// Setting DI and using Proxy
[...]
public override void Configure(IFunctionsHostBuilder builder)
{
[...]
builder.Services.AddHttpClient<IApiCallLogic, ApiCallLogic>(c => { })
.ConfigurePrimaryHttpMessageHandler(() =>
{
var handler = new HttpClientHandler { UseProxy = true };
handler.Proxy = new WebProxy($"http://xxx.xxx.xxx.xxx:xxx"); // proxy's IP & port
return handler;
});
}
// call REST API Logic with DI
class ApiCallLogic : IApiCallLogic
{
private HttpClient httpClient;
public ApiCallLogic(HttpClient httpClient)
{
this.httpClient = httpClient ?? throw new ArgumentNullException(nameof(httpClient));
}
public async Task<HttpResponseMessage> CallApi(string url, ILogger log)
{
var reqMessage = new HttpRequestMessage(HttpMethod.Get, url);
var response = await httpClient.SendAsync(reqMessage);
return response;
}
}
А squid.conf выглядит так.
# allow Function IP
acl function_net src xxx.xxx.xxx.xxx
http_access allow function_net
# deny others
http_access deny all
# no cache
cache deny all
# set port
http_port xxxx
forwarded_for off
# persistent connection setting
server_persistent_connections off
client_persistent_connections on
- asp. net ядро 3.1.2
- squid v3.5.27
- ОС сервера squid: ubuntu 18.04