Wie finde ich heraus, wie meine .NET Core-App konfiguriert ist, um auf einer Ubuntu-VM mit NGINX ausgeführt zu werden?

Wie finde ich heraus, wie meine .NET Core-App konfiguriert ist, um auf einer Ubuntu-VM mit NGINX ausgeführt zu werden?

Ich arbeite mit einer .NET Core-App, die als systemd-basierter Dienst auf einer von Azure gehosteten VM läuft, auf der NGINX läuft. (Die VM ist als Entwicklungsumgebung in Betrieb genommen). Ich habe einen A-Eintrag mit Azure DNS eingerichtet, der auf die Server-IP verweist. Wenn ich den angegebenen Hostnamen ( myapplication.mycompany.com) in den Browser eingebe, wird die NGINX-Willkommensseite angezeigt:

Bildbeschreibung hier eingeben

Wenn ich eine URL eingebe, von der ich erwarte, dass sie die Versionsnummer der Anwendung zurückgibt, wird eine 404-Fehlermeldung angezeigt:

myapplication.mycompany.com/version.txt

Wenn ich ausführe systemctl status myservicename, sehe ich, dass der .NET Core-Dienst gestartet ist und dass der Hauptdienst wie folgt ausgeführt wird:

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

Wenn ich dann hineinschaue /var/aspnetcore/myservicename/wwwroot, sehe ich die Dateiversion.txt

curl -v localhost:5000gibt ein zurück 302 found, das besagt Server: Kestrel, also ichglaubendass Kestrel den Dienst auf Port 5000 bereitstellt

Wenn ich mir die NGINX-Konfiguration auf demProduktionVM (ein sehr ähnliches Image, auf dem eine vergleichbare Instanz des .NET Core-Dienstes läuft) sehe ich nichts, das darauf hindeutet, dass es eine spezielle Verbindung zu Kestrel herstellt. Ich schaue mir die NGINX-Konfiguration an, indem ich Folgendes verwende:

cat /etc/nginx/nginx.conf

cat /etc/nginx/conf.d

(diese Dateien sehen identisch aus wie die auf der Entwicklungs-VM)

Wo muss ich nachsehen, um die Konfiguration für das Weiterleiten von Anfragen an die .NET Core-App zu ermitteln? Und gibt es irgendetwas Offensichtliches, das bei meiner Anfrage die 404-Fehlermeldung verursachen könnte ...hostname.../version.txt?

AKTUALISIEREN

Ich habe herausgefunden, dass /etc/nginx/sites-available/defaultsich auf dem NGINX-Webserver einige der Haupteinstellungen befinden. Daher habe ich eine Einstellung für den Servernamen hinzugefügt, die meinem Hostnamen entspricht.

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

Bei meinem Besuch myapplication.mycompany.com/version.txterhalte ich immer noch die Meldung 404:

Antwort1

Ich habe herausgefunden, dass es zwei Konfigurationsdateien gibt, die die Verfügbarkeit einer Website bestimmen:

/etc/nginx/sites-available/default

/etc/nginx/sites-enabled/default

Für beide ist eine ähnliche Routingkonfiguration erforderlich, um die Websites zu ermitteln, die auf dem NGINX-Server verfügbar und aktiviert sind:

Beide Konfigurationsdateien legen den Port (80) fest, den NGINX zum Abhören von Anforderungen verwendet, und legen den Servernamen fest, der den Azure DNS-Hostnamen mit dem NGINX-Webserver verknüpft:

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

Die Konfiguration bestimmt auch, wie Anfragen per Reverse-Proxy (also „weitergeleitet“) an Kestrel weitergeleitet werden, wo die Anfragen dann von der App über das .NET Core MVC-Routing verarbeitet werden.

location / {
    ... cacheing stuff

proxy_pass <http://localhost:5000;>

verwandte Informationen