You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Nginx反向代理ASP.NET Core Blazor站点CSS加载失败求助

解决Nginx代理ASP.NET Core Blazor应用时CSS加载失败的问题

嘿,我明白你现在的困扰:想把/net路径代理到8080端口的Blazor应用,现在能看到页面但CSS加载不出来,之前用rewrite还会跳转URL不符合需求。我来给你分析下原因和解决办法。

问题根源

你的Blazor应用部署在8080的根目录下,它生成的页面里,静态资源(比如CSS、JS)的引用都是根路径(比如<link href="/css/site.css" rel="stylesheet" />)。当你通过http://leiyang.icu/net/访问时,浏览器会直接请求http://leiyang.icu/css/site.css——这个请求会被Nginx转发到它自己的默认HTML文档根目录,而不是代理到8080的Blazor应用,所以自然找不到资源,导致CSS加载失败。

两种解决方案

方案一:修改Blazor应用的基路径(推荐)

让Blazor应用知道自己是在/net路径下运行,这样它生成的所有资源引用都会自动带上/net前缀,浏览器请求的路径就会匹配Nginx的代理规则。

针对Blazor Server(.NET 5)

在Program.cs里添加UsePathBase配置:

public static IHostBuilder CreateHostBuilder(string[] args) =>
    Host.CreateDefaultBuilder(args)
        .ConfigureWebHostDefaults(webBuilder =>
        {
            webBuilder.UseStartup<Startup>();
            webBuilder.UsePathBase("/net"); // 添加这一行,设置应用的基路径
        });

针对Blazor WebAssembly(.NET 5)

修改wwwroot/index.html里的<base>标签:

<base href="/net/" />

修改后重新编译部署你的Blazor应用,再访问http://leiyang.icu/net/,应该就能正常加载CSS了。

方案二:调整Nginx配置(无需修改应用)

如果不想改动应用代码,可以修改Nginx的配置,让所有以/net开头的请求都转发到8080,并且自动去掉/net前缀传递给后端应用。

替换你原来的location /net/配置为以下内容:

# 匹配所有以/net开头的路径
location ~ ^/net(/.*)?$ {
    # 把/net后面的路径原样转发到8080(比如/net/counter → http://localhost:8080/counter)
    proxy_pass http://localhost:8080$1;
    
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection keep-alive;
    proxy_set_header Host $host;
    proxy_cache_bypass $http_upgrade;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;

    # 处理Blazor单页应用的路由问题(刷新页面不会404)
    if (!-f $request_filename) {
        rewrite ^/net(/.*)?$ /net/index.html last;
    }
}

配置修改后,记得重启Nginx生效:

sudo systemctl restart nginx

然后清除浏览器缓存,再访问测试。

两种方案对比

  • 方案一更规范,符合ASP.NET Core的部署最佳实践,后续维护更方便;
  • 方案二更灵活,适合快速测试或者无法修改应用代码的场景。

内容的提问来源于stack exchange,提问作者Lei Yang

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.11 07:44:16