如何使用反向代理正确处理url(.net core views/home/* location 404错误)

问题描述 投票:0回答:1

我目前正在该域上使用 PHP Web 服务。 (例如)www.mydomain.com

我还在制作一个英文网站并将其设为.net core网络服务, 但我打算用 .net core 替换它,而不是使用 PHP。

通过将 /eng 添加到现有域, 我能够成功连接到 .net Web 服务。 (例如)www.mydomain.com/eng

(apache httpd.conf)
ProxyPass /eng http://localhost:5296/
ProxyPassReverse /eng http://localhost:5296/

由于没有应用css和js,所以我修改了下面的代码,成功了。

(Program.cs)
app.Use((httpContext, next) =>
     {
         httpContext.Request.PathBase = "/eng";
         return next();
     });

但是,当我尝试访问.net core mvc中的Views/Home/子页面(例如Privacy.cshtml)时,出现404错误。

(Controllers > HomeController.cs)
[Route("Privacy")]
public IActionResult Privacy() {
         return View();
}

我想添加反向代理设置, 所以我添加了下面的代码, 但我仍然收到 404 错误。

ProxyPass /eng/Home/ http://localhost:5296/Home/
ProxyPassReverse /eng/Home/ http://localhost:5296/Home/

ProxyPass /eng/Views/Home/ http://localhost:5296/Views/Home/
ProxyPassReverse /eng/Views/Home/ http://localhost:5296/Views/Home/

wwwroot子文件夹中的文件是相连的, 但为什么 Views/Home 子文件夹没有?

asp.net-mvc asp.net-core reverse-proxy apache2.4
1个回答
0
投票

我找到了解决办法。当我应用链接中的评论时(具有不同根的ASP.Net Core反向代理) ,我也解决了。

我终于成功了。事实证明 UsePathBase 工作正常,我的 Nginx 代理只是配置错误(正如您所指出的)。 Nginx 位置和 proxy_pass 上的尾部斜杠将不起作用。

它应该看起来像:

location /app { proxy_pass http://app:5000; }

,而不是

location /app/ { proxy_pass http://app:5000/; }
© www.soinside.com 2019 - 2024. All rights reserved.