使用 nginx 配置子路径访问 asp.net core 网站时,对 view 中路径生成的处理
这个问题是使用 docker 生成了 asp.net core 网站镜像,在使用 nginx 指向此镜像容器后,用的子路径虚拟路径,但是因为反向代理,asp.net core 并不认为是从子路径过来的,直接访问 controller 的 action 方法没问题,但是如果生成 view 内容时,view 再引用的资源路径就会错误。
在 nginx 中的配置:
location /backstage/web/ { proxy_pass http://web-backstage/; proxy_set_header X_Real_IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $host; proxy_connect_timeout 600; proxy_send_timeout 600; proxy_read_timeout 600; send_timeout 600; }
解决方法(环境:.net core 3.1),修改 Startup.cs 配置:
public void Configure(IApplicationBuilder app, IWebHostEnvironment env) { var pathBase = Environment.GetEnvironmentVariable("ASPNETCORE_APP_PATH"); if (!string.IsNullOrWhiteSpace(pathBase)) { Console.WriteLine("ASPNETCORE_APP_PATH:" + pathBase); //1、配置请求基地址(解决 view 的路径生成错误): app.Use((context, next) => { context.Request.PathBase = pathBase; return next(); }); // 2、配置静态文件基地址(不配置的话,用上面生成的地址无法访问到静态文件): app.UsePathBase(pathBase); } // 正常使用静态文件 app.UseStaticFiles(); }
参考:
相关推荐
nginxs 2020-11-14
Guanjs0 2020-11-13
小木兮子 2020-11-11
yserver 2020-11-11
ssihc0 2020-11-11
windle 2020-11-10
HanksWang 2020-11-10
liuchen0 2020-11-10
Freshairx 2020-11-10
ccschan 2020-11-10
liwf 2020-11-10
Guanjs0 2020-11-09
AderStep 2020-11-09
zrtlin 2020-11-09
mqfcu 2020-11-10
windle 2020-10-29