리버스 프록시 404 뒤의 Blazor 서버 측


10

리버스 프록시 뒤의 ARR을 사용하여 IIS에서 호스팅되는 블레이저 서버 측 앱이 있습니다.

나는 내가 생각할 수있는 모든 것을 시도했지만 계속 404를 얻는다.

_framework / blazor.server.js

내 기본 href가 "/ subsite /"로 설정되어 있습니다.

<base href="https://stackoverflow.com/subsite/" />

내 모든 src 값은 다음과 같이 상대적입니다.

<script src="_framework/blazor.server.js"></script>
<script src="_content/BlazorInputFile/inputfile.js"></script>
<script src="animations.js"></script>

다른 모든 스크립트는 _content 데이터를 포함하여 잘로드되지만 blazor.server.js는 제대로로드되지 않습니다.

MVC 앱에 대한 이전 PathBase 트릭을 시도했지만 성공하지 못했습니다.

if (!env.IsDevelopment()) {
    app.Use((context, next) => {
        context.Request.PathBase = new PathString("/subsite");
        return next();
    });
}

누구나 리버스 프록시 시나리오에서 Blazor.server.js를 어디에 배치해야하는지 Blazor에 알리는 방법을 알려줄 수 있습니까?


1
blazor.server.js는 포함 된 리소스입니다. 파일 사본을 가져 와서 다른 js 파일처럼 정적으로 제공 할 수 있습니다. 그러나 서버와 브라우저 사이에는 많은 signal-r chatter가 있습니다. 설정에서 어떻게 작동하는지 잘 모르겠습니다.
— ravi

흠. 나는 그것을 이해하지 못합니다. 구성 요소가 _content에 살고있는 내장 리소스이기도 하기는하지만 잘 발견됩니다. 나는 그것을 잡아서 정적으로 제공하려고 노력할 것이다. 그러나 이것은 실제 버그처럼 보인다-내 말은, 당신은 2019 년에 리버스 프록시 서브 사이트를 지원하는 것을 잊을 수있는 방법
— Dynde

요청 경로가 ASP.NET으로 끝나는 경우를 확인할 수있는 로깅이 있습니까?
— Henk Holterman

답변:



-1

에서 문서 .

올바른 라우팅을 위해 URL 재 작성

Blazor WebAssembly 앱에서 페이지 구성 요소에 대한 라우팅 요청은 호스팅되는 Blazor Server에서 요청을 라우팅하는 것만 큼 간단하지 않습니다. 두 가지 구성 요소가 포함 된 Blazor WebAssembly 앱을 고려하십시오.

  • Main.razor – 앱의 루트에로드되며 About구성 요소에 대한 링크가 포함 됩니다 ( href="About").
  • About.razor – About구성 요소.

브라우저의 주소 표시 줄을 사용하여 앱의 기본 문서를 요청한 경우 (예 :) https://www.contoso.com/:

  • 브라우저가 요청합니다.
  • 기본 페이지가 리턴되는데, 일반적으로 index.html 입니다.
  • index.html 이 앱을 부트 스트랩합니다.
  • Blazor의 라우터가로드되고 Razor Main구성 요소가 렌더링됩니다.

Blazor 라우터는 브라우저가 인터넷 에서 렌더링 된 구성 요소 자체 에 www.contoso.com대한 요청을하지 않고 인터넷에서 브라우저를 요청하지 않기 때문에 기본 페이지에서 정보 구성 요소에 대한 링크를 선택하면 클라이언트에서 작동 합니다. Blazor WebAssembly 앱 내의 내부 엔드 포인트에 대한 모든 요청 은 동일한 방식으로 작동합니다. 요청은 인터넷에서 서버 호스트 리소스에 대한 브라우저 기반 요청을 트리거하지 않습니다. 라우터는 요청을 내부적으로 처리합니다.AboutAbout

에 대한 브라우저의 주소 표시 줄을 사용 www.contoso.com/About하여 요청하면 요청이 실패합니다. 앱의 인터넷 호스트에 이러한 리소스가 없으므로 404-찾을 수 없음 응답이 반환됩니다.

브라우저는 클라이언트 측 페이지를 위해 인터넷 기반 호스트에 요청하기 때문에 웹 서버 및 호스팅 서비스는 서버에 실제로 있지 않은 모든 리소스 요청을 index.html 페이지 에 다시 작성해야합니다 . 때 index.html을가 반환되는 앱의 Blazor 라우터가 대신하고 올바른 자원으로 응답합니다.

IIS 서버에 배포 할 때 앱의 게시 된 web.config 파일 과 함께 URL 다시 쓰기 모듈을 사용할 수 있습니다 . 자세한 내용은 IIS 섹션을 참조하십시오 .


IIS 관리자-> 서버 노드-> 응용 프로그램 요청 라우팅 캐시-> 프록시-> 사용에서 정방향 프록시를 사용하도록 설정할 수 있습니다.

웹 사이트가 하나만있는 경우 웹 사이트를 ARR 서버 팜에 추가하면 라우팅 규칙이 자동으로 만들어집니다. 상태 점검으로 백엔드 서버를 모니터링하는 것이 편리합니다.

이 ARR 경고로 인해 404가 발생합니까?


글쎄, 내가 아는 한, 그 기사는 Blazor WebAssembly를 중심으로 진행되며 서버 측을 사용하고 있습니다. 또한 내 IIS는 이미 ARR의 정방향 프록시 기능을 사용하고 있습니다 (설정에서 역방향 프록시를 수행하는 방식이기 때문에).
— Dynde
당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.