使用 Nginx 在 Linux 上托管 ASP.NET Core

💡 原文中文,约2900字,阅读约需7分钟。
📝

内容提要

本文介绍了如何在 Ubuntu 20.04 上使用 Nginx 反向代理托管 ASP.NET Core 应用。步骤包括安装 .NET Core SDK 和 Nginx,发布应用,配置 Nginx 反向代理,最后启动应用并通过浏览器访问以确保请求正确转发。

🎯

关键要点

  • 本文介绍如何在 Ubuntu 20.04 上使用 Nginx 反向代理托管 ASP.NET Core 应用。
  • 先决条件包括安装 .NET Core SDK 和 Nginx,以及已有的 ASP.NET Core 应用。
  • 安装 .NET Core SDK 和运行时的步骤包括更新包管理器和安装所需版本。
  • 使用 dotnet CLI 工具发布 ASP.NET Core 应用,并将发布后的应用目录复制到 Linux 服务器。
  • 在 Ubuntu 上安装 Nginx,并确认其正在运行。
  • 配置 Nginx 作为反向代理,包括编辑配置文件和设置反向代理规则。
  • 配置 ASP.NET Core 应用以处理转发头信息,确保请求正确解析。
  • 启动 ASP.NET Core 应用,并确保其监听地址与 Nginx 配置一致。
  • 通过浏览器访问应用,验证 Nginx 是否成功转发请求到 ASP.NET Core 应用。

延伸问答

如何在 Ubuntu 20.04 上安装 .NET Core SDK 和 Nginx?

可以使用以下命令安装:首先更新包管理器,然后安装 .NET Core SDK 和运行时:sudo apt-get update,sudo apt-get install -y apt-transport-https,wget https://packages.microsoft.com/config/ubuntu/20.04/packages-microsoft-prod.deb -O packages-microsoft-prod.deb,sudo dpkg -i packages-microsoft-prod.deb,sudo apt-get install -y dotnet-sdk-6.0,sudo apt-get install -y dotnet-runtime-6.0。接着安装 Nginx:sudo apt-get install -y nginx。

如何配置 Nginx 作为 ASP.NET Core 应用的反向代理?

编辑 Nginx 配置文件,设置反向代理规则,示例配置包括:server { listen 80; server_name myapp.example.com; location / { proxy_pass http://localhost:5000; } }。然后创建符号链接到 sites-enabled 目录,并重新加载 Nginx 配置。

如何发布 ASP.NET Core 应用到 Linux 服务器?

使用 dotnet CLI 工具发布应用,命令为:dotnet publish -c Release -o /path/to/published。然后使用 SCP 或 SFTP 将发布后的应用目录复制到 Linux 服务器上的指定位置,例如 /var/www/myapp。

如何确保 ASP.NET Core 应用正确处理转发头信息?

在 Startup.cs 或 Program.cs 文件中配置 Forwarded Headers Middleware,使用 app.UseForwardedHeaders(new ForwardedHeadersOptions { ForwardedHeaders = ForwardedHeaders.XForwardedFor | ForwardedHeaders.XForwardedProto });。

如何启动 ASP.NET Core 应用并确保其监听地址正确?

在应用目录中使用命令:dotnet MyApp.dll --urls "http://localhost:5000" 启动应用,确保 --urls 参数与 Nginx 配置中的 proxy_pass 地址和端口一致。

如何验证 Nginx 是否成功转发请求到 ASP.NET Core 应用?

通过浏览器访问 http://myapp.example.com 或服务器的 IP 地址,查看是否能正确显示 ASP.NET Core 应用的响应。

➡️

继续阅读