本文详细介绍了为什么强烈推荐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作为后端开发服务器代理的大量信息,请搜索您以前的文章或者再次访问下面的相关文章。期待你以后的申请!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)