使用 NGINX 在 Ubuntu 20.04 上托管 .NET Core Razor 应用程序

使用 NGINX 在 Ubuntu 20.04 上托管 .NET Core Razor 应用程序

我已经开始尝试自行托管一些项目,以便更好地理解网络/托管原则,并且在按照 Razor MVVM 模式在 Visual Studio 中托管 .NET CORE 应用程序时遇到问题。

主要问题是,这是否可能或者是否需要在 Windows Server 上进行?

我最初想在同一个域名上创建两个网站,即 game.domain.com 和 api.domain.com。

我有一个 .net core API 可以运行,因此如果我转到 api.domain.com/swagger/index.html,我可以看到我的控制器,并且一切正常。但是,我认为既然我也使用 .net core 编写了面向 Razor 的应用程序,那么我也可以在具有 NGINX 的同一台 Ubuntu 服务器上托管它。

因此现在我在文件夹中设置了两个 nginx 站点

  • /var/www/api.domain.com/html
  • /var/www/twerkle.domain.com/html

在每个 html 文件夹中,我都有一个基本索引文件,该文件用作虚拟登录页面,只是为了证明我可以通过公共 IP 访问任一网站,并通过 NGINX 进行路由。但是,我似乎无法让 twerkle.domain.com 页面显示主 razor .cshtml 页面。

我关注了关联获取服务设置,以便它在文件夹上运行 dotnet,并运行和列出两个服务。

Ubuntu 服务正在运行

我所见过的所有教程或文档主要都是关于 .net core 应用程序如何利用它们作为api

这里展示了正在显示的基本 index.html 登录页面。 翻页页面

答案1

我重新访问了 /etc/nginx/nginx.conf 文件,发现 game.domain.com 地址有两个条目。我修改了它,只保留一个。我还添加了额外的 /wwwroot目录以及索引索引.cshtml行。我注意到服务器上的发布文件夹只有主 .DLL 和一个空的 wwwroot 文件夹,所以我将 .cshtml 文件也移了过去。现在我可以访问 twerkle.domain.com 并获得我期望的应用程序。

    server {
      listen        80;
      server_name  twerkle.domain.com;
      root /var/www/twerkle.domain.com/html/wwwroot; <-- /wwwoot was added
      index index.cshtml; <-- this line was added
      location / {
        try_files $uri $uri/ $uri.cshtml = 404;
        proxy_pass         http://localhost:5002;
        proxy_http_version 1.1;
        proxy_set_header   Upgrade $http_upgrade;
        proxy_set_header   Connection keep-alive;
        proxy_set_header   Host $host;
        proxy_cache_bypass $http_upgrade;
        proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header   X-Forwarded-Proto $scheme;
      }
    }

相关内容