Azure Functions (C #)에서 프록시를 통해 REST API에 연결

hdlw

Squid 프록시 서버를 통해 API (Azure Function (B))에 액세스하여 원본 포트를 Function (B)로 변경하는 Azure Function (C #, ASP.net core 3.1) (A)을 만듭니다. (구성 정보는 아래에 표시됩니다.)

프록시를 통해 Azure Function (B)에 액세스 할 수 있지만 원본 포트는 변경되지 않습니다.

Function (B)에 두 번 액세스했을 때 squid 프록시 서버는 첫 번째 액세스 만 기록했습니다. 하지만 Function (B)는 매번 프록시를 통해 접근 한 것으로 기록했다 (기록 된 프록시 IP 주소).

Function (A)와 Proxy 사이의 연결에서 어떤 일이 발생하는지, Function (A) 또는 squid 구성을 어떻게 변경합니까?

┌────────────────────┐
│ Azure Function (A) │
└────────────────────┘
         ↓
         ↓
 ┌──────────────┐
 │ Proxy Server │
 └──────────────┘
         ↓
         ↓
┌────────────────────┐
│ Azure Function (B) │
└────────────────────┘

Function (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
  • 오징어 v3.5.27
  • 오징어 서버 OS : 우분투 18.04
    • squid 서버는 Azure VM입니다.
hdlw

이 문제를 혼자 해결했습니다. Function (B)가 아닌 외부 API에 액세스했을 때 다른 요청의 소스 포트가 달랐습니다. 동일한 소스 포트의 원인은 Azure Functions가 값으로 연결 헤더를 반환하기 때문이라고 생각합니다 keep-alive.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

프록시를 통해 Dropbox에 연결

분류에서Dev

Azure DevOps는 REST API를 통해 작업 항목에 연결된 커밋을 가져옵니다.

분류에서Dev

다른 프록시를 통해 프록시에서 인터넷에 연결

분류에서Dev

JWT가 아닌 세션 ID 쿠키를 통해 Android에서 REST API에 연결

분류에서Dev

JWT가 아닌 세션 ID 쿠키를 통해 Android에서 REST API에 연결

분류에서Dev

nginx를 통해 프록시로 AWS Neptune 서버에 연결

분류에서Dev

SOCKS5 프록시를 통해 SSH 서버에 연결

분류에서Dev

회사 프록시를 통해 SSH 서버에 연결

분류에서Dev

KeyVault를 통해 Azure 함수에서 SQL Server에 연결

분류에서Dev

terraform에서 공용 IP를 통해 Azure 머신에 연결

분류에서Dev

REST API를 통해 Python에서 Azure 큐 길이 가져 오기

분류에서Dev

프록시를 통해 인터넷에 연결

분류에서Dev

프록시를 통해 인터넷에 연결

분류에서Dev

PHP는 프록시를 통해 HTTPS 사이트에 연결

분류에서Dev

프록시를 통해 localhost 리디렉션에 연결

분류에서Dev

USB를 통해 Azure의 VM에 연결된 Android 장치 통과

분류에서Dev

Azure DevOps Rest API를 통해 지정된 서비스 연결에 대한 승인 및 확인을 받으려면 어떻게하나요?

분류에서Dev

C에서 연결 목록을 통해 검색

분류에서Dev

C에서 연결 목록을 통해 검색

분류에서Dev

InternetConnect가 ftp 프록시를 통해 FTP 서버에 연결하지 못함

분류에서Dev

PHP를 통해 Instagram API에 연결

분류에서Dev

c #에서 tcp 연결을 통해 게시 요청 만들기

분류에서Dev

Powershell을 통해 Azure SQL Database에 연결

분류에서Dev

프록시를 통해 인터넷에 연결하도록 VirtualBox 구성

분류에서Dev

http를 통해 함수 앱에서 Azure VM에 연결할 수 없습니다.

분류에서Dev

C / C ++ 프로그램을 통해 Wi-Fi에 연결

분류에서Dev

Rest API를 통해 주제 전문가를 Azure DevOps에 게시하는 방법

분류에서Dev

TCP를 통해 MySQL 프록시 Docker 컨테이너를 통해 Cloud SQL (2 세대)에 연결하는 방법

분류에서Dev

Objective C의 iOS에서 XMPPFramework를 통해 XMPP 서버를 연결하는 방법

Related 관련 기사

  1. 1

    프록시를 통해 Dropbox에 연결

  2. 2

    Azure DevOps는 REST API를 통해 작업 항목에 연결된 커밋을 가져옵니다.

  3. 3

    다른 프록시를 통해 프록시에서 인터넷에 연결

  4. 4

    JWT가 아닌 세션 ID 쿠키를 통해 Android에서 REST API에 연결

  5. 5

    JWT가 아닌 세션 ID 쿠키를 통해 Android에서 REST API에 연결

  6. 6

    nginx를 통해 프록시로 AWS Neptune 서버에 연결

  7. 7

    SOCKS5 프록시를 통해 SSH 서버에 연결

  8. 8

    회사 프록시를 통해 SSH 서버에 연결

  9. 9

    KeyVault를 통해 Azure 함수에서 SQL Server에 연결

  10. 10

    terraform에서 공용 IP를 통해 Azure 머신에 연결

  11. 11

    REST API를 통해 Python에서 Azure 큐 길이 가져 오기

  12. 12

    프록시를 통해 인터넷에 연결

  13. 13

    프록시를 통해 인터넷에 연결

  14. 14

    PHP는 프록시를 통해 HTTPS 사이트에 연결

  15. 15

    프록시를 통해 localhost 리디렉션에 연결

  16. 16

    USB를 통해 Azure의 VM에 연결된 Android 장치 통과

  17. 17

    Azure DevOps Rest API를 통해 지정된 서비스 연결에 대한 승인 및 확인을 받으려면 어떻게하나요?

  18. 18

    C에서 연결 목록을 통해 검색

  19. 19

    C에서 연결 목록을 통해 검색

  20. 20

    InternetConnect가 ftp 프록시를 통해 FTP 서버에 연결하지 못함

  21. 21

    PHP를 통해 Instagram API에 연결

  22. 22

    c #에서 tcp 연결을 통해 게시 요청 만들기

  23. 23

    Powershell을 통해 Azure SQL Database에 연결

  24. 24

    프록시를 통해 인터넷에 연결하도록 VirtualBox 구성

  25. 25

    http를 통해 함수 앱에서 Azure VM에 연결할 수 없습니다.

  26. 26

    C / C ++ 프로그램을 통해 Wi-Fi에 연결

  27. 27

    Rest API를 통해 주제 전문가를 Azure DevOps에 게시하는 방법

  28. 28

    TCP를 통해 MySQL 프록시 Docker 컨테이너를 통해 Cloud SQL (2 세대)에 연결하는 방법

  29. 29

    Objective C의 iOS에서 XMPPFramework를 통해 XMPP 서버를 연결하는 방법

뜨겁다태그

보관