簡體   English   中英

如何在應用程序網關后面進行基於路徑的反向代理應用程序服務?

[英]How to path-based reverse proxy app service behind application gateway?

我有一個配置了我的通配符證書的應用程序網關,我想用它來代理 myapp.mywebsite.net/mypath 后面的 myapp.azurewebsites.net(一個 ASP.NET 核心應用程序)。

我有一個在網關中配置的 myapp.mywebsite.net 上運行的現有站點,但我只希望/mypath路由指向應用程序服務。 我怎樣才能做到這一點?

第 1 步 - 配置網關

  1. myapp.azurewebsites.net添加新的后端目標
  2. 添加新的 http 設置,為myapp.azurewebsites.net啟用具有特定域名的主機名覆蓋。 不要添加路徑覆蓋,我們希望將/mypath傳遞給應用服務。
  3. 編輯站點的現有基於路徑的規則:
    1. 添加新的基於路徑的規則
      1. 路徑= /mypath/*
      2. name= mypathname // 可以是任何值
      3. httpsetting=我們剛剛做的那個
      4. backendpool=我們剛做的那個

這會將myapp.mywebsite.net/mypath指向該站點

第 2 步 - 配置應用程序

Startup.cs - 配置

請參閱此處了解更多信息。

將以下內容添加到 Configure 方法的開頭。 我們希望在所有其他中間件發生之前調整標頭。

app.UseForwardedHeaders(); // Enable hostname to be derived from headers added by app gateway
app.UsePathBase("/mypath"); // Tell ASP.NET that we have a base path

有關調試幫助,請參見此處

Startup.cs - 配置服務

我們需要告訴 ASP.NET 信任網關標頭

services.Configure<ForwardedHeadersOptions>(options =>
{
    options.ForwardedHeaders = ForwardedHeaders.XForwardedFor | ForwardedHeaders.XForwardedProto;
    options.AllowedHosts.Add("myapp.mywebsite.net");
    options.KnownProxies.Add(IPAddress.Parse("10.my.gateway.ip"));
});

如果您正在使用

services.AddMicrosoftIdentityWebAppAuthentication(config);

對於身份驗證,我們需要覆蓋回復 url 使其指向myapp.mywebsite.net/mypath/signin-oidc而不是myapp.azurewebsites.net/signin-oidc 這可以通過以下方式完成:

if (!env.IsDevelopment())
{
    services.Configure<OpenIdConnectOptions>(OpenIdConnectDefaults.AuthenticationScheme, options =>
    {
        // options.SaveTokens = true; // this saves the token for the downstream api
        options.Events = new OpenIdConnectEvents
        {
            OnRedirectToIdentityProvider = async ctxt =>
            {
                ctxt.ProtocolMessage.RedirectUri = "https://myapp.mywebsite.net/mypath/signin-oidc";
                await Task.Yield();
            }
        };
    });
}

我們只在 dev 中運行它,以便在本地運行我們的東西會執行使用 localhost 填充回復 URL 的默認行為。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM