学习内容
Nginx应用场景
实现反向代理
实现负载均衡
解决网关接口跨域
实现防盗链
防止DDOS问题
Nginx是什么?
Nginx是一款高性能的HTTP服务器,反向代理服务器以及电子邮件代理服务器。官方测试可以支持5w的并发链接,并且CPU,内存等资源的消耗也是非常低的,运行也是非常稳定的。其主要的作用是用来做反向代理,负载均衡,动静分离的。
Nginx的作用
- 前端的静态页面放在Nginx服务上,不会放在Tomcat,太复杂了,实现动静分离,意思就是动态资源和动态资源分别位于不同的服务器上,使用CDN加速,把静态资源放在不同服务器上,降低宽带的传输速度。
- 还有做虚拟主机,意思就是把一台电脑进行拆分,拆分成多个不同的节点。
- 反向代理,好处是可以隐藏真实ip。
- 负载均衡,很多公司做集群都是用到Nginx的。
- 使用Nginx防止ddos流量攻击。
为什么要使用Nginx?
性能非常好,占内存小,轻量级服务器,能支持5w的并发的连接。
Nginx实现反向代理
什么是反向代理
反向代理就是隐藏真实的IP地址,进行通讯转发。
使用Nginx实现反向代理。
使用Nginx集群,实现负载均衡
怎么实现session共享
分析:使用Nginx搭建企业api接口网关解决跨域问题![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/d0e8c345f5e538f2d98df704e952d554.png)
什么是跨域?
访问B项目的时候,调到了A项目,F12去看headers信息,可以知道的。本来访问的是B项目的地址,没想到是A项目的地址。
什么是跨域问题:属于前端ajax访问请求域名与浏览器访问的域名地址不相同。
怎么解决跨域问题?
- jsonp 不支持post请求,支持get。
- httpclient响应头允许跨域设置。
- 使用http响应头允许跨域设置。
- 使用Nginx搭建企业api接口网关。
- 使用springZULL接口网关(网关就相当于一个墙一样,任何的请求都需要经过这个墙,墙允许通过之后再分发到其他的api接口去)。
使用Nginx防止ddos流量攻击
限制一些ip,限制一些数据的。
Nginx防盗链
面试考点
- 你们的网站的安全架构是怎么样的?
答:
1.1 用到Nginx可以做到反向代理,可以隐藏真实地址。
1.2 使用https防止抓包分析http请求。
1.3 搭建企业黑名单和白名单系统(防盗链)。
1.4 模拟请求(CSRF),XSS,Sql注入。
1.5 ddos(流量攻击),Nginx解决。
1.6 CSRF业务攻击。
1.7 DDOS流量攻击–让其他人不能访问。 - 除了Nginx这个反向代理服务器,还有什么服务器也可以做到反向代理的作用吗?
答:lvs(中国人搞的),F5(不推荐使用,与硬件使用),haproxy - 生成订单号的时候,我们是怎么解决幂等性(重复)的问题?
答:一般提前生成好,存放在redis中,那么又有问题了,万一这个订单号我们快要用完了怎么办?再生成一批即可。 - Nginx是怎么实现集群的?
常错的回答:使用反向代理实现的集群。
正确回答:使用的是负载均衡实现的集群,使用的反向代理隐藏ip - 发布版本的时候,你们的服务器还能访问吗?
答: 不能访问的,因为像淘宝,京东,肯定做了主备机的。
主机发布代码了,那么备机也要发布同样的代码 ,代码同步。
发布版本的时候,我们主机是不工作的,那么我们的备机可以开始工作了。 - Tomcat发布版本的时候session会失效怎么解决?
答:因为我们的Tomcat存在内存里面的,重启了就会失效了。可以存放在redis中。 - 分布式和集群的区别?
答:
分布式:大项拆分小项目,面向接口开发,子项目要通讯,rpc远程调用技术(springcloud,dubbo,http),最后组成大项目。
集群:减轻单台服务器压力,将一个项目部署在多个不同服务器,解决高并发。