Как узнать, как настроено мое приложение .NET Core для работы на виртуальной машине Ubuntu с NGINX?

Как узнать, как настроено мое приложение .NET Core для работы на виртуальной машине Ubuntu с NGINX?

Я работаю с приложением .NET Core, работающим как служба на основе systemd, на виртуальной машине, размещенной в Azure, на которой запущен NGINX. (Виртуальная машина введена в эксплуатацию как среда разработки). Я настроил A-запись с помощью Azure DNS, чтобы указать на 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/defaultна веб-сервере NGINX есть некоторые основные настройки. Поэтому я добавил настройку для имени сервера, которая совпадает с моим именем хоста.

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:

Оба файла конфигурации задают порт (80), который NGINX использует для прослушивания запросов, и задают server_name, который связывает имя хоста Azure DNS с веб-сервером NGINX:

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

Конфигурация также определяет, как запросы обратно проксируются (по сути «пересылаются») на Kestrel, где запросы затем обрабатываются приложением через маршрутизацию .NET Core MVC.

location / {
    ... cacheing stuff

proxy_pass <http://localhost:5000;>

Связанный контент