如何了解我的 .NET Core 应用程序如何配置为在带有 NGINX 的 Ubuntu VM 上运行?

如何了解我的 .NET Core 应用程序如何配置为在带有 NGINX 的 Ubuntu VM 上运行?

我正在使用一个作为基于 systemd 的服务运行的 .NET Core 应用程序,该应用程序在运行 NGINX 的 Azure 托管 VM 上运行。(该 VM 被委托作为开发环境)。我已使用 Azure DNS 设置 A 记录以指向服务器 IP。当我myapplication.mycompany.com在浏览器中输入指定的主机名 ( ) 时,我会看到 NGINX 欢迎页面:

在此处输入图片描述

当我输入期望返回应用程序版本号的 URL 时,我看到 404:

myapplication.mycompany.com/version.txt

当我运行时systemctl status myservicename,我看到.NET Core 服务已启动,并且主服务正在运行,如下所示:

   CGroup: /system.slice/myservicename.service
           └─...PID... /usr/bin/dotnet /var/aspnetcore/myservicename/myservice.dll

当我查看时/var/aspnetcore/myservicename/wwwroot,我看到了文件version.txt

curl -v localhost:5000返回一个302 found,说明Server: Kestrel,所以我相信Kestrel 在端口 5000 上提供服务

当我查看 NGINX 配置时生产VM(非常相似的镜像,运行 .NET Core 服务的类似实例),我没有看到任何看起来像是在与 Kestrel 进行任何特殊连接的东西。我使用以下命令查看 NGINX 配置:

cat /etc/nginx/nginx.conf

cat /etc/nginx/conf.d

(这些文件看起来与开发虚拟机上的文件相同)

我应该在哪里查看,以确定将请求路由到 .NET Core 应用程序的配置是什么?当我请求时,是否有任何明显的原因可能导致 404 ...hostname.../version.txt

更新

我发现/etc/nginx/sites-available/defaultNGINX Web 服务器上有一些主要设置。因此,我添加了与我的主机名匹配的服务器名称设置。

server {
    listen 80;
    server_name myapplication.mycompany.com;

当我访问时myapplication.mycompany.com/version.txt我仍然得到404

答案1

我发现有两个配置文件决定网站的可用性:

/etc/nginx/sites-available/default

/etc/nginx/sites-enabled/default

它们都需要配置类似的路由,以确定 NGINX 服务器上可用且启用的网站:

两个配置文件都设置了 NGINX 用于侦听请求的端口 (80),并设置了 server_name,将 Azure DNS 主机名链接到 NGINX Web 服务器:

server {
    listen 80;
    server_name myapplication.mycompany.com;

该配置还确定了如何将请求反向代理(本质上是“转发”)到 Kestrel,然后应用程序通过 .NET Core MVC 路由处理请求

location / {
    ... cacheing stuff

proxy_pass <http://localhost:5000;>

相关内容