使用 Nginx 托管和部署 ASP.NET Core Blazor WebAssembly

注释

此版本不是本文的最新版本。 有关当前版本,请参阅 本文的 .NET 10 版本

警告

此版本的 ASP.NET Core 不再受支持。 有关详细信息,请参阅 .NET 和 .NET Core 支持策略。 要查看当前版本,请参阅本文的.NET 9 版本

本文介绍如何使用 Blazor WebAssembly 托管和部署

以下 nginx.conf 文件经过简化,演示如何配置 Nginx 以在磁盘上找不到相应的文件时发送 index.html 该文件。

events { }
http {
    server {
        listen 80;

        location / {
            root      /usr/share/nginx/html;
            try_files $uri $uri/ /index.html =404;
        }
    }
}

在使用NGINX 突发速率限制limit_reqlimit_req_zone设置时,Blazor WebAssembly应用可能需要较大的burst/rate参数值,以容纳应用发出的相对较多的请求。 最初,将值设置为至少 60:

http {
    limit_req_zone $binary_remote_addr zone=one:10m rate=60r/s;
    server {
        ...

        location / {
            ...

            limit_req zone=one burst=60 nodelay;
        }
    }
}

如果浏览器开发人员工具或网络流量工具指示请求正在接收 503 - 服务不可用 状态代码,则增加该值。

有关生产 Nginx Web 服务器配置的详细信息,请参阅 创建 NGINX Plus 和 NGINX 配置文件

Linux 上的托管部署 (Nginx)

请按照ForwardedHeadersOptions中的指南,通过X-Forwarded-For 配置应用程序以转发 X-Forwarded-Proto 请求头。

有关设置应用的基本路径(包括子应用路径配置)的详细信息,请参阅 ASP.NET 核心 Blazor 应用基路径

按照 ASP.NET Core SignalR 应用的指南操作,并做出以下更改:

  • 删除代理缓冲 (proxy_buffering off;) 的配置,因为改设置仅适用于服务器发送事件 (SSE),这与 Blazor 应用客户端-服务器交互无关。

  • location 路径从 /hubroutelocation /hubroute { ... }) 更改为子应用路径 /{PATH}location /{PATH} { ... }),其中 {PATH} 占位符是子应用路径。

    以下示例为响应根路径 /请求的应用配置服务器:

    http {
        server {
            ...
            location / {
                ...
            }
        }
    }
    

    以下示例配置/blazor子应用路径:

    http {
        server {
            ...
            location /blazor {
                ...
            }
        }
    }
    

其他资源