리버스 프록시 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.razorAbout구성 요소.

브라우저의 주소 표시 줄을 사용하여 앱의 기본 문서를 요청한 경우 (예 :) 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.