.NET Core中的Kestrel

news/2024/12/12 11:23:59/文章来源:https://www.cnblogs.com/zeoHere/p/18602066

Kestrel是一个跨平台的高性能 Web 服务器,它被设计用来托管 ASP.NET Core 应用程序。


Kestrel 是 .NET Core 的一部分,并且是 ASP.NET Core 应用的默认 Web 服务器。
Kestrel 服务器支持所有 .NET Core 和 .NET 5+ 支持的操作系统,这包括但不限于:* Windows:从 Windows 7 SP1、Windows Server 2008 R2 SP1 及以上版本。* macOS:macOS 10.13 (High Sierra) 及更新版本。* Linux:各种发行版,如 Ubuntu、Debian、Red Hat Enterprise Linux、CentOS、Fedora、openSUSE 等。因为 Kestrel 是 ASP.NET Core 的一部分,它继承了 .NET Core/.NET 5+ 的跨平台特性,这意味着它可以运行在任何安装有兼容 .NET 运行时的平台上。 具体的支持情况可能会根据最新的 .NET 版本有所变化,

此外,需要注意的是,虽然 Kestrel 可以在上述操作系统上运行,但在某些情况下(例如生产环境中的公共互联网部署),推荐使用反向代理服务器(如 IIS、Nginx 或 Apache)来配合 Kestrel 使用,以提供额外的安全性和配置灵活性。
Kestrel 与反向代理服务器(如 IIS、Nginx 或 Apache)配合使用时,通常会将 Kestrel 配置为仅监听本地地址或内部网络地址,而反向代理服务器则暴露于公网,接收来自互联网的 HTTP 请求并将这些请求转发给 Kestrel。

这种架构不仅提高了安全性,还提供了额外的功能和服务,例如负载均衡、SSL/TLS 终止、缓存和压缩等。

以下是 Kestrel 与反向代理服务器协同工作的具体方式:

安全性增强

当 Kestrel 直接作为边缘服务器(即面向互联网)时,它不支持多个进程共享相同的 IP 和端口,并且处理所有到达指定端口的流量,而不考虑请求的 Host 标头15。通过引入反向代理服务器,可以限制 Kestrel 的公开范围,减少直接暴露在公共网络上的风险。此外,防火墙规则可以配置为只允许来自反向代理服务器的连接,进一步增强了安全性。


性能优化

反向代理服务器能够提供诸如静态文件服务、缓存、压缩等功能,减轻 Kestrel 的负担,使其专注于处理动态内容。这有助于提高整体性能和响应速度。例如,Nginx 可以高效地处理静态资源请求,并将动态请求转发给 Kestrel8。


SSL/TLS 终止

反向代理服务器可以负责 SSL/TLS 连接的建立与终止,这意味着只有反向代理需要持有 X.509 证书,并且可以在内部网络中使用普通的 HTTP 协议与 Kestrel 通信20。这种方法简化了 Kestrel 的 HTTPS 配置,同时也减少了加密解密操作对应用服务器的影响。


灵活配置

反向代理服务器允许更灵活地配置多个 ASP.NET Core 应用程序,即使在同一台机器上运行不同版本的 .NET Core 应用程序也没有问题。此外,URL 重写、重定向等高级功能也可以更容易地实现16。


实现步骤

为了使 Kestrel 与反向代理服务器共同工作,您需要执行以下操作:


配置 Kestrel

确保 Kestrel 只监听本地地址(如 http://localhost:5000),而不是公开 IP 地址。可以通过修改 Program.cs 文件中的 WebApplication.CreateBuilder 方法来设置 Kestrel 的监听地址和端口。例如,在创建主机构建器时调用 ConfigureWebHostDefaults 方法,并通过 UseUrls 或者 Listen API 来指定监听地址2。


配置反向代理服务器

根据所使用的反向代理服务器类型(IIS, Nginx, Apache),按照官方文档配置反向代理规则。对于 Nginx,您可能需要编辑 nginx.conf 文件,定义一个 server 块,其中包含 location 指令,用于匹配路径并将请求转发给 Kestrel。同时,确保正确配置了 SSL/TLS 设置,如果适用的话14。


启用 Forwarded Headers 中间件

由于请求是通过反向代理转发的,原始客户端信息(如 IP 地址)会被代理服务器的 IP 地址覆盖。ASP.NET Core 提供了一个中间件 ForwardedHeadersMiddleware 来正确解析和信任通过反向代理转发的头信息(例如 X-Forwarded-For 和 X-Forwarded-Proto)。您需要在 Program.cs 中添加此中间件,并配置它信任的代理服务器17。


测试配置

确保一切配置无误之后,应该彻底测试整个部署以验证其正确性和安全性。检查是否可以从外部访问应用程序,并确认所有的安全措施都已生效。


监控和日志记录

最后,不要忘记设置适当的监控和日志记录机制,以便跟踪性能和安全问题。这对于及时发现并解决问题至关重要。

通过上述步骤,我们可以成功配置 Kestrel 与反向代理服务器一起工作,为我们的 ASP.NET Core 应用程序提供一个稳健且高效的托管环境。这种方式不仅可以提升应用程序的安全性和性能,还可以简化管理和维护过程。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/851291.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

自定义typeHandler将包含经纬度对象插入到mysql的point类型的字段中

自定义typeHandler将包含经纬度对象插入到mysql的point类型的字段中博客:https://www.emanjusaka.top 公众号:emanjusaka的编程栈 下面给出关键部分代码,完整代码请访问原文地址mysql 中的 point 类型在 java 中没有对应的类型匹配,需要我们自定义 typeHandler 去处理。 环…

cortex-m3基础-概览

cortex-m3是一个32位处理器内核:总线(数据、地址)宽度是32位、寄存器位宽是32位;内核结构为哈佛结构,拥有独立的数据总线和指令总线,可以并行进行指令执行和数据访问;简介cortex-m3是一个32位处理器内核:总线(数据、地址)宽度是32位、寄存器位宽是32位;内核结构为哈…

渠道管理智慧:与新华三谈数字化革新与共赢策略

智算智存全能担当 新华三集团作为数字化解决方案领导者,致力于成为客户业务创新、数字化转型值得信赖的合作伙伴。作为紫光集团旗下的核心企业,新华三通过深度布局"云-网-算-存-端"全产业链,不断提升数字化和智能化赋能水平。新华三拥有计算、存储、网络、5G、安全、…

RocksDB 内存超限问题剖析

在使用 RocksDB 存储引擎的过程中,有部分开发者遇到了内存使用超出预期的情况。本文针对这一问题展开了深入分析,并提出了相应的解决方案和优化建议,提升系统性能和稳定性。作者:来自 vivo 互联网服务器团队- Zeng Luobin在使用 RocksDB 存储引擎的过程中,有部分开发者遇到…

20242822《Linux内核原理与分析》第十二周作业

缓冲区溢出漏洞实验 一、实验简介 缓冲区溢出是指程序试图向缓冲区写入超出预分配固定长度数据的情况。这一漏洞可以被恶意用户利用来改变程序的流控制,甚至执行代码的任意片段。这一漏洞的出现是由于数据缓冲器和返回地址的暂时关闭,溢出会引起返回地址被重写。 二、实验准备…

信而泰网络测试仪校准解决方案

一、影响仪表精度的因素 网络测试仪是用于对数据网络及其相关设备性能参数进行测试的仪表,可以模拟网络终端产生流量,进行网络性能测试,对网络状态进行实时监测,分析和统计。数字计量对于精准数据的网络测试仪来说是一剂强心针,它能促进网络测试仪的规范化、数据化、准确化…

京准电钟:计算机网络监控系统搭建NTP校时服务器

京准电钟:计算机网络监控系统搭建NTP校时服务器京准电钟:计算机网络监控系统搭建NTP校时服务器 京准电钟:计算机网络监控系统搭建NTP校时服务器 京准电钟官微——ahjzsz 我们都知道,对于监控设备来说,设备时间的统一和精准,是保障录像文件及日志可靠的关键。 虽然录像机、…

依靠 PROFINet 与 Modbus 协议让西门子 PLC 成功连接 RS485 接口变频器

在工业网络环境中,不同网络协议的沟通不畅是否曾让您倍感困扰?别担心,捷米特JM-RTU-PN 数据通讯模块横空出世,为您化解这一棘手难题!此模块专注于 PROFINet 网络与Modbus 网络间的数据交互,能够巧妙地将 RS485 网络接入西门子 PLC的PROFINet 网络架构之中,并且全面支持多…

广成CAN-485-西门子PLC调试

1,TBOX波特率500K, 2,信号解析

易基因:WGBS揭示Vpr蛋白在HIV-1感染中对CD4+ T细胞DNA甲基化变化的作用|项目文章

大家好,这里是专注表观组学十余年,领跑多组学科研服务的易基因。 全球约有3800万HIV-1感染者,每年新增感染者约150万。HIV-1主要攻击CD4+ T细胞,导致其耗竭,最终发展为艾滋病和死亡。尽管抗逆转录病毒治疗有效抑制HIV-1复制,但由于病毒在潜伏感染细胞中的持续存在,这种病…

pandas中的groupby函数分组函数和 mean 求平均值函数

import pandas as pd #建一个集合有两列 一列是班级列;第二列是成绩列 data = {class: [A, A, B, B, B],score: [80, 90, 70, 85, 95]} # 使用熊猫库的DateFrame类 将上面两列数据 二维结构化 复制给df df = pd.DataFrame(data) #对df调用分组方法groupby,对其再取平均值 结果…

文案课程

促销要写的明显 -不要恶趣味 -谐音可以用于写文案 -数字描述文案是有必要的,清晰明显