why use reverse proxy in asp.net core
开篇论点
Asp.net Core自带了Kestrel, 为什么我们还要使用诸如IIS、Apache或者Nginx来做反向代理呢?
原因分析
- Kestrel用来承载Asp.net Core的动态内容是没有任何问题的, 但是它的网页承载能力或者功能没有IIS、Apache或者Nginx那么强.
- 使用反向代理之后, Kestrel可以把静态内容的缓存、请求的压缩以及终止等工作交给反向代理服务器来做.
安装位置
通常来说, 反向代理服务可以跟应用程序安装在同一个服务器, 也可以单独使用一台服务器.
使用方法
配置应用
因为使用了反向代理, 请求的头部会在这个过程中发生一些转变, 比如获取请求者IP之类的就会出错, 因为需要添加如下中间件:
app.UseForwardedHeaders(new ForwardedHeadersOptions
{
ForwardedHeaders = ForwardedHeaders.XForwardedFor | ForwardedHeaders.XForwardedProto
});
app.UseAuthentication();
然后需要将受信任的代理服务器IP添加到白名单:
services.Configure<ForwardedHeadersOptions>(options =>
{
options.KnownProxies.Add(IPAddress.Parse("10.0.0.100"));
});
使用代理
安装过程就不多说了. 下面例举一下配置示例(Nginx在Ubuntu):
修改/etc/nginx/sites-available/default的内容如下:
server {
listen 80;
server_name example.com *.example.com;
location / {
proxy_pass http://localhost:5000;
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;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
具体请参考微软官方文档: https://docs.microsoft.com/en-us/aspnet/core/host-and-deploy/linux-nginx?view=aspnetcore-3.0
why use reverse proxy in asp.net core的更多相关文章
- [转]Publishing and Running ASP.NET Core Applications with IIS
本文转自:https://weblog.west-wind.com/posts/2016/Jun/06/Publishing-and-Running-ASPNET-Core-Applications- ...
- [转]ASP.NET Core 1 Deploy to IIS
本文转自: http://webmodelling.com/webbits/aspnet/aspnet-deploy-iis.aspx 15 Sep 2016. This tutorial will ...
- 中小研发团队架构实践之生产环境诊断工具WinDbg 三分钟学会.NET微服务之Polly 使用.Net Core+IView+Vue集成上传图片功能 Fiddler原理~知多少? ABP框架(asp.net core 2.X+Vue)模板项目学习之路(一) C#程序中设置全局代理(Global Proxy) WCF 4.0 使用说明 如何在IIS上发布,并能正常访问
中小研发团队架构实践之生产环境诊断工具WinDbg 生产环境偶尔会出现一些异常问题,WinDbg或GDB是解决此类问题的利器.调试工具WinDbg如同医生的听诊器,是系统生病时做问题诊断的逆向分析工具 ...
- ASP.NET Core服务器综述
原文地址:Servers overview for ASP.NET Core By Tom Dykstra, Steve Smith, Stephen Halter, and Chris Ross A ...
- 【原生态跨平台:ASP.NET Core 1.0(非Mono)在 Ubuntu 14.04 服务器上一对一的配置实现-篇幅1】
鸡冻人心的2016,微软高产年. build 2016后 各种干货层出不穷. 1 Win10 集成了bash ,实现了纳德拉的成诺,Microsoft Love Linux!!! 2 跨平台 ,收 ...
- 从头编写 asp.net core 2.0 web api 基础框架 (1)
工具: 1.Visual Studio 2017 V15.3.5+ 2.Postman (Chrome的App) 3.Chrome (最好是) 关于.net core或者.net core 2.0的相 ...
- ASP.NET Core学习之二 菜鸟踩坑
对于像我这样没接触过core的人,坑还是比较多的,一些基础配置和以前差别很大,这里做下记录 一.Startup 1.注册服务 // This method gets called by the run ...
- 【转载】从头编写 asp.net core 2.0 web api 基础框架 (1)
工具: 1.Visual Studio 2017 V15.3.5+ 2.Postman (Chrome的App) 3.Chrome (最好是) 关于.net core或者.net core 2.0的相 ...
- 发布 ASP.NET Core 2.x 应用到 Ubuntu
简单绍一下如何将ASP.NET Core 应用发布到Linux (Ubuntu)服务器上,都是文档的东西. 服务器结构 ASP.NET Core 2.x 有两种server: HTTP.sys 只支持 ...
随机推荐
- 前端项目, 每次运行都需要输入 sudo 的解决方法
前端项目, 每次运行都需要输入 sudo 的解决方法 node一直提示的sudo问题根本原因为: node 的所有者, 项目的所有者, 不同; 解决方法为: 将项目的所有者更改为 chown -R ` ...
- establish状态,本地ip和端口连接本地ip端口可能是一样的。
以下是从stackoverflow上抄下来的,很有帮助 How can you have a TCP connection back to the same port? A TCP connectio ...
- Pytest权威教程10-捕获警告信息
目录 捕获警告信息 @pytest.mark.filterwarnings 禁用警告摘要 完全禁用警告捕获 弃用警告和待命记录警告 确保代码触发弃用警告 用警告函数断言警告 录制警告 自定义失败消息 ...
- SpringMVC处理请求释放静态资源的三种方式
方式一 在SpringMVC的配置文件中添加如下语句 <mvc:default-servlet-handler/> 说明:当SpringMVC前端控制器对静态资源进行拦截后,在通过处理器映 ...
- tecplot-计算合速度的一种方法
原视频下载地址: http://yunpan.cn/cudFwWr8tFsxV 访问密码 75a8
- Oracle通过一个字段的值将一条记录拆分为多条记录
前言 之前遇到了一次这样的需求,当时没有记录,这一次又赶上了,简单的记录一下. 本文个人拙见,若有出入,请指出--来自菜的颤抖 场景 表A中存放了集装箱的信息,一个集装箱一条记录,表B中存放了对于集装 ...
- P2P模式
P2P模式 P2P模式包含三个角色:消息队列(Queue),发送者(Sender),接收者(Receiver).每个消息都被发送到一个特定的队列,接收者从队列中获取消息.队列保留着消息,直到他们被消费 ...
- JVM 数组创建的本质
1.创建数组 创建一个MyParent4[] 数组 public class MyTest4 { public static void main(String[] args) { MyParent4[ ...
- 笔记 - DBSherlock: A Performance Diagnostic Tool for Transactional Databases
OLTP系统的问题很难排查和定位,这就是为什么要花那么多钱去请DBA 因为TP系统的请求很多都是毫秒级别,而且同时有大量的并发,所以由于资源,或随机的原因导致的问题,很难去定位根因 哪怕数据库系统尤其 ...
- Numpy中ndim、shape、dtype、astype的用法
本文链接:https://blog.csdn.net/Da_wan/article/details/80518725本文介绍numpy数组中这四个方法的区别ndim.shape.dtype.astyp ...