发布Blazor Server应用到Nginx服务器时如何引用blazor.server.js文件
解决Blazor Server在Nginx下无法加载_framework/blazor.server.js的问题
你的问题出在Nginx配置的静态资源匹配规则上:_framework/blazor.server.js所在的_framework目录和wwwroot是同级的发布目录,而你当前的配置只针对wwwroot下的静态资源做了映射,没有处理_framework路径的请求,导致该请求被转发到后端的5000端口,无法正确加载静态文件。
直接修改Nginx配置即可解决,调整后的配置如下:
server { listen 8080; listen [::]:8080; server_name blazor.local; # 专门处理_framework目录下的资源,指向Blazor应用的发布根目录 location /_framework/ { root /usr/share/nginx/html/blazor; expires 1y; add_header Cache-Control "public, immutable"; } # 处理wwwroot下的常规静态资源 location ~* \.(css|js|png|ttf|otf|woff)$ { root /usr/share/nginx/html/blazor/wwwroot; } location / { proxy_pass http://127.0.0.1:5000; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_set_header Host $host; proxy_cache_bypass $http_upgrade; } }
配置修改说明:
- 新增
location /_framework/规则:直接匹配_framework开头的请求,将root指向Blazor应用的发布根目录(而非wwwroot),保证能找到_framework/blazor.server.js文件。 - 简化原静态资源匹配规则:无需单独指定
styles.css、server.js,后缀匹配已覆盖这些文件类型。 - 调整
Connection头为"upgrade":符合Blazor Server的WebSocket连接要求,避免后续交互异常。
完成配置修改后,执行以下操作确保生效:
- 验证Nginx配置语法:
sudo nginx -t - 重启Nginx服务:
sudo systemctl restart nginx - 确认发布目录权限:给Nginx用户授予读取权限,执行
chmod -R 755 /usr/share/nginx/html/blazor
内容的提问来源于stack exchange,提问作者Richard Vázquez Pérez
相关产品推荐
相关产品推荐

