当前位置:首页>Linux>使用 Nginx 在 Linux 上托管 ASP.NET Core

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

  • 2026-10-11 08:26:14
使用 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.cs 或 Program.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、配置负载均衡等。

最新文章

随机文章