当前位置: 首页 > news >正文

使用 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、配置负载均衡等。

http://www.jsqmd.com/news/766817/

相关文章:

  • Mac Mouse Fix重构macOS鼠标体验:从功能缺失到超越触控板的革新方案
  • 2026年5月指南:深度剖析数坤微弧智能科技(上海)有限公司的微弧氧化工艺优势 - 2026年企业推荐榜
  • 2026年5月温州入园择校必看:深度解析为何温州十八幼儿园成为家长首选 - 2026年企业推荐榜
  • 字形引导图像编辑:WeEdit技术解析与应用实践
  • 白发转黑哪个品牌好?黑奥秘全国208个城市覆盖,1000多家店服务便捷 - 美业信息观察
  • Synology群晖Audio Station歌词插件终极指南:5分钟快速部署QQ音乐智能歌词
  • MCP 2026日志告警配置失效的7个隐蔽原因:运维总监亲授2026年最新诊断流水线
  • WarcraftHelper:让经典魔兽争霸3在现代系统上完美运行的兼容性解决方案
  • 2026年5月武汉在职硕士咨询平台深度**:聚焦万世文化的专业价值 - 2026年企业推荐榜
  • 5分钟为群晖Audio Station添加QQ音乐歌词插件:终极完整指南
  • HoRain云--PHP8速成指南:2026年必备语法
  • 每天被信息淹没,决策全靠直觉?我给董事长和高管搭了一套 AI 决策系统
  • 新手避坑指南:在Proteus8里用51单片机和ULN2003A玩转步进电机,这些细节别忽略
  • SteamShutdown:解放你的夜晚,让游戏下载不再需要值守
  • 数据隔离最容易翻车的地方就是「漏写一条」?交给 MyBatis 自动解决!
  • 2026年当前,如何为您的孩子选择一份科学、温暖的幼儿园一日流程? - 2026年企业推荐榜
  • [理论篇-11]AI Agent(智能体)——不只是会答话的AI,而是会干活的AI
  • 5分钟快速安装HS2-HF_Patch:解锁Honey Select 2完整游戏体验的终极指南
  • 别再手动转格式了!用Python+ezdxf批量处理DWG到DXF,还能一键导出WKB给GIS用
  • AI驱动生物实验协议平台Elnora Plugins:MCP协议与技能化架构详解
  • 别再用老方法点灯了!手把手教你用DSP F28335的GPIO寄存器精准控制LED(附完整代码)
  • 告别配置迷宫:OCAuxiliaryTools如何让黑苹果配置变得轻松有趣
  • 预测新药联合建模登Nature:AI淘金化学荒野,探路亿级分子星辰大海
  • Windows平台安卓应用部署革命:APK Installer的轻量化跨平台解决方案
  • 用PySide6和OpenCV打造你的第一个桌面摄像头应用(附完整源码)
  • 2026年至今湖南市场CTPU储罐防腐胶泥供应商全景扫描与核心能力拆解 - 2026年企业推荐榜
  • HoRain云--PHP 变量
  • Navicat无限试用终极指南:macOS平台的完整解决方案
  • 用‘乞丐版’预算复刻Keithley 2450?我的DIY源表实战与元器件避坑指南(含CRHA2510AF200MFKEF替代方案)
  • 企业级Docker存储架构设计(含K8s节点适配):单机TB级持久化方案与IO隔离实践