【问题标题】:ASP.NET MVC app routing with NGINX proxy使用 NGINX 代理的 ASP.NET MVC 应用程序路由
【发布时间】:2017-02-07 15:08:35
【问题描述】:

我有一个通过 Kestrel 在 Linux 机器上运行的 .Net Core (MVC 6) Web 应用程序,NGINX 作为端口 80 -> 5000 的代理 不幸的是,我不允许使用默认路由,因为另一个应用程序具有优先级,两者都必须在端口 80 上运行,这意味着请求的转发方式如下:

127.0.0.1 -> 另一个应用程序

127.0.0.1/conf -> 我的应用

在 NGINX 配置文件中它被定义为:

     location /conf {
        proxy_pass              http://127.0.0.1:5000;
        proxy_cache_bypass      $http_upgrade;
        proxy_set_header        Host $host;
        proxy_http_version      1.1;
        proxy_set_header        Upgrade $http_upgrade;            
        proxy_set_header        Connection keep-alive;
        client_max_body_size    10m;
        client_body_buffer_size 128k;            
        proxy_connect_timeout   90;            
        proxy_send_timeout      90;            
        proxy_read_timeout      90;            
        proxy_buffers           32 4k;
  }

问题是,如果我使用标准位置 ( location / ) 运行应用程序,MVC 应用程序的路由运行良好。但是将 /conf 附加到代理只会破坏 MVC 路由,因为应用程序会继续返回基于根位置的路由,而没有 /conf 前缀。因此,在用户进入默认登录页面后,所有路由(链接、操作)仍然指向 127.0.0.1/Home/About 这样的地址,而不是 127.0.0.1/conf/Home/About - 更糟糕的是,这些链接(/conf/Home/About) 也不起作用。

关于我应该如何解决这个问题的任何建议?是否应该在通用级别的 MVC 应用程序中指定一些路由前缀(目前它仅使用默认路由)还是有一些基于 NGINX 的解决方案(这将是更可取的)? 我用谷歌搜索了半天,没有找到类似的情况,所以我非常感谢您对此的任何意见。

谢谢!

【问题讨论】:

    标签: nginx proxy routing asp.net-core-mvc


    【解决方案1】:

    我刚刚遇到了完全相同的问题。

    我不确定这是不是最好的做法,但我更改了路径以使其相对。这是它的样子:

    <link href="~/lib/bootstrap/dist/css/bootstrap.css" rel="stylesheet" />
    
    became
    
    <link href="lib/bootstrap/dist/css/bootstrap.css" rel="stylesheet" />

    图像和脚本也是如此。

    我还必须更改表单和链接,这意味着:

    <form asp-action="Index" method="get">
    
    became
    
    <form action="./" method="get">

    <a asp-action="Index" asp-route-SearchInput="@Model.SearchInput">
    
    became
    
    <a href="./?SearchInput=@(Model.SearchInput)">

    我有点失去了 asp 标签的力量,但这是我发现的唯一让它在这些条件下工作的东西。

    希望对你有帮助

    【讨论】:

      猜你喜欢
      • 2020-01-19
      • 2017-01-12
      • 1970-01-01
      • 2012-10-10
      • 1970-01-01
      • 2012-05-16
      • 2018-12-14
      • 1970-01-01
      相关资源
      最近更新 更多