Asp.NET Core Nginx Ocelot ForwardedHeaders X-Forwarded-For

2132 단어
ocelot 는 배치 할 때 nginx 를 리 트 윗 으로 사용 하고 https 인증 서 를 설정 하 였 으 나 ocelot 는 Forward host header 를 지원 하지 않 는 다 는 것 을 알 게 되 었 습 니 다.https://ocelot.readthedocs.io/en/latest/introduction/notsupported.html 이때 나 는 Forward host header 가 도대체 무슨 뜻 인지 의문 이 생 겼 다.그래서 본문 이 생 겼 다.
nginx 등 프 록 시 서버 는 리 트 윗 할 때 X - Forward - For 요청 헤 더 를 사용 합 니 다.이 요청 헤드 는 요청 자 ip 에서 프 록 시 서버 ip 까지 의 정 보 를 기록 합 니 다.
https://imququ.com/post/x-forwarded-for-header-in-http.htmlhttps://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Forwarded-For
asp. net core 는 퍼 가기 서버 를 사용 한 후 공식 문 서 는 미들웨어 설정 을 사용 해 야 한다 고 말 했다.rotohttps://docs.microsoft.com/en-us/aspnet/core/fundamentals/servers/kestrel?view=aspnetcore-2.2#when-to-use-kestrel-with-a-reverse-proxy
app.UseForwardedHeaders(new ForwardedHeadersOptions
{
    ForwardedHeaders = ForwardedHeaders.XForwardedFor | ForwardedHeaders.XForwardedProto
});

app.UseAuthentication();

X - Forward - For 를 사용 하면 HttpContext. Connect 가 업 데 이 트 됩 니 다. RemoteIpAddress 를 사용 하면 X - Forward - Proto 를 사용 하면 HttpContext. Request. Scheme 이 업 데 이 트 됩 니 다. X - Forward - Hust 를 사용 하면 HttpContext. Request. H 가 업 데 이 트 됩 니 다.osthttps://docs.microsoft.com/en-us/aspnet/core/host-and-deploy/proxy-load-balancer?view=aspnetcore-2.2
나 는 효 과 를 보기 위해 테스트 웹 api 를 만 들 었 다.
        [HttpGet]
        public ActionResult> Get()
        {
            var remoteIp = HttpContext.Connection.RemoteIpAddress;
            string ip = remoteIp.MapToIPv4().ToString();
            var scheme = HttpContext.Request.Scheme;
            string sch = scheme.ToString();
            var host = HttpContext.Request.Host;
            string ho = host.ToString();
            return new string[] { ip,sch,ho };
        }          

미들웨어 를 사용 할 지 여 부 는 http 와 RemoteIPAddress 의 값 이 정확 한 지 에 영향 을 줄 수 있 습 니 다.
ocelot 리 트 윗 api 를 사용 하면 host 의 정확 한 값 을 읽 을 수 없습니다.ocelot 미들웨어 Forward Headers. XForward For | Forward Headers. XForward Proto 를 추가 하지 않 아 도 올 바른 reoteip 및 scheme 을 얻 을 수 없습니다.
다음으로 전송:https://www.cnblogs.com/wswind/p/11065038.html

좋은 웹페이지 즐겨찾기