如何了解我的 .NET Core 應用程式如何配置為在帶有 NGINX 的 Ubuntu VM 上運行?

如何了解我的 .NET Core 應用程式如何配置為在帶有 NGINX 的 Ubuntu VM 上運行?

我正在使用一個 .NET Core 應用程序,該應用程式在運行 NGINX 的 Azure 託管 VM 上作為基於 systemd 的服務運行。 (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返回 a 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;>

相關內容