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

📅 2026/7/11 7:24:00 👁️ 阅读次数 📝 编程学习
使用 Nginx 在 Linux 上托管 ASP.NET Core

在本文中,我们将详细介绍如何在 Linux 系统上使用 Nginx 反向代理来托管 ASP.NET Core 应用。我们将以 Ubuntu 20.04 为例,并给出具体的步骤和示例代码。

先决条件

  1. Linux 系统:本教程以 Ubuntu 20.04 为例,但大多数步骤也适用于其他基于 Debian 的 Linux 发行版。

  2. .NET Core SDK 和运行时:确保您的 Linux 系统上安装了最新的 .NET Core SDK 和运行时。您可以从 Microsoft 官网下载相应的安装包。

  3. Nginx:Nginx 需要安装在您的服务器上作为反向代理服务器。

  4. 现有 ASP.NET Core 应用:一个已经开发完成的 ASP.NET Core 应用。

安装 .NET Core SDK 和运行时

首先,您需要安装 .NET Core SDK 和运行时。在 Ubuntu 上,您可以使用以下命令:

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 update sudo apt-get install -y dotnet-sdk-6.0 # 替换为所需的 SDK 版本 sudo apt-get install -y dotnet-runtime-6.0 # 替换为所需的运行时版本

发布 ASP.NET Core 应用

在开发环境中,使用 dotnet CLI 工具发布您的 ASP.NET Core 应用。发布时,确保选择正确的配置(如 Release),并指定输出目录。

dotnet publish -c Release -o /path/to/published

将应用部署到 Linux 服务器

使用 SCP 或 SFTP 将发布后的应用目录复制到 Linux 服务器上的指定位置,例如/var/www/myapp

安装 Nginx

在 Ubuntu 上,您可以使用 apt 包管理器安装 Nginx:

sudo apt-get update sudo apt-get install -y nginx

安装完成后,确认 Nginx 正在运行:

sudo systemctl status nginx

配置 Nginx 作为反向代理

编辑 Nginx 的配置文件,通常位于/etc/nginx/sites-available/目录下。您可以创建一个新的配置文件(例如myapp),并在其中设置反向代理规则。

server { listen 80; server_name myapp.example.com; location / { proxy_pass http://localhost:5000; # ASP.NET Core 应用的监听端口 proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection keep-alive; proxy_set_header Host $host; proxy_cache_bypass $http_upgrade; } # 可以添加静态文件处理规则 location ~* \.(jpg|jpeg|gif|png|css|js|ico|html)$ { expires max; log_not_found off; } }

server_name替换为您的域名或 IP 地址,proxy_pass中的端口号应与您的 ASP.NET Core 应用配置的监听端口一致。

然后,您需要创建一个符号链接到sites-enabled目录,以启用该配置:

sudo ln -s /etc/nginx/sites-available/myapp /etc/nginx/sites-enabled/

最后,重新加载 Nginx 配置以使更改生效:

sudo nginx -t # 检查配置语法 sudo systemctl reload nginx

配置 ASP.NET Core 应用以处理转发头

由于请求通过 Nginx 转发,ASP.NET Core 应用需要处理转发头信息,以便正确解析请求。在Startup.csProgram.cs文件中配置 Forwarded Headers Middleware:

using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.HttpOverrides; var builder = WebApplication.CreateBuilder(args); // 其他配置... var app = builder.Build(); // 在其他中间件之前配置 Forwarded Headers Middleware app.UseForwardedHeaders(new ForwardedHeadersOptions { ForwardedHeaders = ForwardedHeaders.XForwardedFor | ForwardedHeaders.XForwardedProto }); // 其他中间件配置... app.MapGet("/", () => "Hello, Nginx and ASP.NET Core!"); app.Run();

启动 ASP.NET Core 应用

在 Linux 服务器上,导航到您的应用目录,并使用 dotnet CLI 启动应用:

cd /var/www/myapp dotnet MyApp.dll --urls "http://localhost:5000"

请确保--urls参数与 Nginx 配置中的proxy_pass地址和端口相匹配。

访问应用

现在,您可以在浏览器中访问http://myapp.example.com或服务器的 IP 地址,Nginx 将请求转发到 ASP.NET Core 应用,并显示应用的响应。

通过以上步骤,您已经成功在 Linux 系统上使用 Nginx 反向代理托管了 ASP.NET Core 应用。您可以根据实际需求进一步配置 Nginx 和 ASP.NET Core 应用,例如启用 HTTPS、配置负载均衡等。