为什么我推荐Nginx作为后端服务器代理

为什么我推荐Nginx作为后端服务器代理,第1张

为什么我推荐Nginx作为后端服务器代理(原因解析)

本文详细介绍了为什么强烈推荐Nginx作为后端开发服务器代理,并且非常详细的为大家介绍,对大家的学习、培训或者工作都有一定的参考价值,朋友们一定要参考。

1。序言

每个人的真实服务器都不要马上暴露在网上公众面前,否则更容易泄露服务器的信息内容,更容易受到攻击。更“流行”的方案是用Nginx反方向表示。今天就来说说应用Nginx反向代理的一些工作能力,可以帮助我们完成很多非常合理的API *** 作。这也解释了为什么我一直强烈推荐Nginx来代表大家的SpringBoot应用。

2。Nginx能表现出什么工作能力

Nginx在很长一段时间内不需要太多的赞美,在业界已经得到了广泛的认可。先说它实际能做什么。

2.1代理工作能力

它是服务器端每个人最常见的功能。具有外部网络地址的Nginx服务器可以充当一个真实服务器的代理,该服务器可以与其内部网进行通信。让我们的服务器不要马上对外开放,提高抗风险能力。

如果Nginx服务器192.168.1.8可以和192.168.1.9的应用服务器在同一个内部网段通信,并且Nginx服务器有能力和外网地址一起工作,将外网地址和网站域名felord.cn关联起来。然后大家的Nginx代理的配套设备(Nginx.conf)是这样的:

server{ listen80; server_namefelord.cn; #^~表明uri以某一基本字符串数组开始,假如搭配到,则不再次向下搭配。并不是正则匹配 location^~/api/v1{ proxy_set_headerHost$host; proxy_passhttp://192.168.1.9:8080/; } }

经过以上配置,人人服务器的真实套接字地址为http://192.168.1.9:8080/foo/get,可以根据http://felord.cn/api/v1/foo/get.进行浏览

如果proxy_pass以/结尾,就相当于肯定了根路径,所以Nginx不容易代理location中的一些并置路径;如果不是由于/在末尾,也会充当搭配方式的一部分。

2.2重写功能

Nginx还展示了一个重写功能,允许我们在请求到达服务器时调用URI,这有点类似于ServletFilter的意思,为请求做一些准备性的处理。

在2.1的情况下,如果我们要完成405,如果分辨率要求是POST,我们只需将设备更改为:

location^~/api/v1{ proxy_set_headerHost$host; if($request_method=POST){ return405; } proxy_passhttp://192.168.1.9:8080/; }

可以使用Nginx呈现的静态变量(如上述设备中的$request_method)或自己设置的独立变量为标准,融合正则表达式和标志位(last、break、redirect、permanent)来完成URI调用及其跳转。

2.3配备HTTPS

以前群里很多同学问新SpringBoot项目怎么装备HTTPS,我强烈推荐Nginx做这个。在SpringBoot,Nginx比SSL方便得多,而且它不会损害本地的开发和设计。Nginx中HTTPS的相关设备可根据以下变化使用:

http{ #http节点中能够加上好几个server节点 server{ #ssl必须监视443端口 listen443; #CA资格证书相匹配的网站域名 server_namefelord.cn; #打开ssl sslon; #服务器资格证书相对路径 ssl_certificate/etc/ssl/cert_felord.cn.crt; #服务器端资格证书key相对路径 ssl_certificate_key/etc/ssl/cert_felord.cn.key; ssl_session_timeout5m; #协议类型 ssl_protocolsTLSv1TLSv1.1TLSv1.2; #ssl优化算法目录 ssl_ciphersECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE; #是不是服务器决策应用哪样优化算法on/offTLSv1.1得话必须打开 ssl_prefer_server_cipherson; location^~/api/v1{ proxy_set_headerHost$host; proxy_passhttp://192.168.1.9:8080/; } } #假如客户根据http浏览立即调用自动跳转到https这个是一个很必须的实际 *** 作 server{ listen80; server_namefelord.cn; rewrite^/(.*)$https://felord.cn:443/$1permanent; } }

这里使用重写来增强客户体验。

2.4三层交换机

一般新项目都是保证从小长大的。在开发的情况下部署一个服务器就足够了。如果你有更多的新项目客户,我先恭喜你,说明你的新项目方向是对的。但是,还有服务器的工作压力。您一定不希望服务器停机造成各种损害。你需要快速提高服务器的承载能力,或者不关机维护防止业务流程被终止,这些都可以按照Nginx的三层交换机来做,而且比较简单。如果felord.cn的每个人都部署了三个节点:

非常简单的轮询对策

依次分配要求,这种设备非常简单:

http{ upstreamapp{ #节点1 server192.168.1.9:8080; #节点2 server192.168.1.10:8081; #节点3 server192.168.1.11:8082; } server{ listen80; server_namefelord.cn; #^~表明uri以某一基本字符串数组开始,假如搭配到,则不再次向下搭配。并不是正则匹配 location^~/api/v1{ proxy_set_headerHost$host; #三层交换机 proxy_passhttp://app/; } } }

权重计算投票游戏

具体的轮询概率、权重和浏览率是正相关的,用于开发后端服务器的不均匀特性:

upstreamapp{ #节点1 server192.168.1.9:8080weight=6; #节点2 server192.168.1.10:8081weight=3; #节点3 server192.168.1.11:8082weight=1; }

最终需求解决方案将按6:3:1分配。实际上,简单的轮询可以看作是所有的权值均分为1。轮询服务器停机时间可以完全自动消除。

IP哈希

按照浏览IP进行哈希,这样每个手机客户端都会固定浏览服务器。如果服务器关闭,必须手动移除。

upstreamapp{ ip_hash; #节点1 server192.168.1.9:8080weight=6; #节点2 server192.168.1.10:8081weight=3; #节点3 server192.168.1.11:8082weight=1; }

至少加入

用较少的线程将请求共享给服务器,灵活使用服务器资源:

upstreamapp{ least_conn; #节点1 server192.168.1.9:8080weight=6; #节点2 server192.168.1.10:8081weight=3; #节点3 server192.168.1.11:8082weight=1; }

其他方法

我们可以依靠一些软件以其他方式完成三层切换,比如用nginx-upsync-module实现动态三层切换。能不能用这个开发设计一个灰度发布功能?

2.5过电流保护

根据Nginx的配置,我们可以完成漏桶优化算法和令牌桶算法,同时根据单位时间的请求数和线程数限制网站打开速度。这一块我没有深入分析过。我在这里提一下。可以查一下相关的材料学研究。

3。摘要

NGX很强大,强烈推荐大家用它做后台开发和应用的代理。我们可以根据设备完成很多有效的功能,不需要对一些非领域模型进行编号。如果你一直在SpringBoot完成过流保护,配备SSL,那就不方便了,不用说,也危害了当地的开发设计。使用Nginx可以让我们专注于业务流程。可以说Nginx在这里充当了一个小网关的角色。其实很多知名网关ip的底层都是Nginx,比如Kong,Orange,ApacheAPISIX等。有兴趣可以玩玩Nginx的高级造型,Openresty。

到目前为止,这篇关于为什么强烈推荐Nginx作为后端开发服务器代理的文章已经在这里详细介绍了。关于Nginx作为后端开发服务器代理的大量信息,请搜索您以前的文章或者再次访问下面的相关文章。期待你以后的申请!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/774414.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-03
下一篇 2022-05-03

发表评论

登录后才能评论

评论列表(0条)

保存