我已经开始尝试自行托管一些项目,以便更好地理解网络/托管原则,并且在按照 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,并运行和列出两个服务。
我所见过的所有教程或文档主要都是关于 .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;
}
}