我目前正在该域上使用 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 Core反向代理) ,我也解决了。
我终于成功了。事实证明 UsePathBase 工作正常,我的 Nginx 代理只是配置错误(正如您所指出的)。 Nginx 位置和 proxy_pass 上的尾部斜杠将不起作用。
它应该看起来像:
location /app { proxy_pass http://app:5000; }
,而不是
location /app/ { proxy_pass http://app:5000/; }