如何在 ubuntu nginx 上为 blazor 站点提供正确的 mime 类型

How to serve the right mime type for a blazor site on ubuntu nginx

我已经建立了一个 blazor webassembly 站点,我使用 nginx 在 ubuntu 服务器上托管它。 nginx中站点的配置是这样的:

server {
    server_name  app.mysite.local;
    root         /srv/sites/app.mysite.local;
    index        index.html;
}

我使用 visual studio 将站点发布到本地文件夹,并将 /dist 文件夹复制到 /srv/sites/app.mysite.local 的根目录。该站点现在正在使用 app.mysite.local 但我收到以下错误消息:

WASM:wasm 流编译失败:TypeError:无法在 'WebAssembly' 上执行 'compile':响应 MIME 类型不正确。预计 'application/wasm'.

WASM:回落到 ArrayBuffer 实例化

我尝试将 'application/wasm wasm' 添加到文件 /etc/mime.types 和 /etc/nginx/mime.types 并重新启动服务器,但没有任何效果。不知道这些错误信息有没有关联

我还注意到,当我使用索引页面上的菜单转到 /account/companyname 时,会显示该页面,但是当我键入 url 应用程序时。mysite.local/account/companyname 在地址栏中我收到 nginx 404 错误。也许当我解决 mime 类型问题时这就解决了,但我不确定。

谁能帮我解决 mime 类型问题?如果您需要更多信息,请与我们联系。提前致谢!

您没有使用 dist 文件夹:
您应该使用 dotnet publish -c Release 发布应用程序并将文件夹 bin\Release\netstandard2.1\publish\wwwroot 复制到 /srv/sites/app.mysite.local

nginx.conf应该是:

events { }
http {
    include mime.types;
    types {
        application/wasm wasm;
    }

    server {
        listen 80;

        location / {
            root /srv/sites/app.mysite.local;
            try_files $uri $uri/ /index.html =404;
        }
    }
}