Nginx反向代理为什么可以提高网站性能

时间:2021-12-19 04:26:20

来源:

查看:0

谢邀~

Nginx现在是互联网上应用广泛的服务器软件,从市场使用量上仅次于apache。它的主要特点就是性能极高,能充分发掘一台服务器的性能。相比较而言,apache就显得太笨太重了。所以主流的互联网(指用户量比较大的互联网公司)都使用Nginx服务器作为反向代理。

Nginx作为反向代理为什么能够提供网站性能,因为它不仅仅提供反向代理的功能,还有负载均衡的功能,如下图所示。每个请求过来之后,Nginx作为负载均衡,都会将请求转发给后端的任意服务器。(方法有很多,比如轮流,session一致等原则)

所以与其说Nginx能提高网站性能,我觉得是不准确的。应该说,可以随着业务的房展,可以动态的扩展服务器,这个我认为是非常重要的,能够稳定的保证线上业务的发展。

欢迎大家关注我~

1.nginx介绍

Nginx (engine x) 是一个高性能的服务器,同时也提供了IMAP/POP3/SMTP服务。目前最新的版本是1.17.1,最新的稳定版本是1.16.0。目前很多很多平台都有使用到,像淘宝天猫等,淘宝网还在nginx的基础上弄了一个分支Tengine,它在Nginx的基础上,针对大访问量网站的需求,添加了很多高级功能和特性。

2.反代配置

通过域名/二级目录这样的方式访问这个应用A的8546端口,假如域名为

a.example.com

,A应用监听localhost:8546

2.1通过域名

通过域名配置只需要配置server_name a.example.com

即可,配置示例如下:

这样配置就可以通过域名

a.example.com

访问8546应用了。

2.2通过二级目录访问

通过二级目录访问需要注意的是,配置二级目录要注意proxy_cookie_path,以前踩过很多坑。假设要访问的二级目录为

a.example.com/test/,配置示例如下:

这样就可以通过/test/

访问了。

注:示例配置都只写了server部分,将servern放在}

Nginx作为一款专业的反向代理服务器,由于其性能突出,现在一般中大型网站架构模式中,都会将它作为前置的反向代理服务器。但在部署反向代理之后,有个问题就来了,那就是如何实现会话保持?

什么是会话保持?我们知道,}

具体如何实现会话的呢?主要有两种会话:Cookie会话、Session会话。Session会话是保存在服务器端的,然后将SessionID存入Cookie中,用户下次请求服务器时,服务器能够识别Cookie中的SessionID然后找到对应的Session,这样服务器就能识别用户了。

反向代理为什么会导致会话丢失?上面说到了,Session是存储在服务器端的,当使用了反向代理后,同一用户的多次请求不能保证都落在同一台后端服务器上,这样用户浏览器中的Cookie即使传递到后端服务器,服务器也未必能找到对应的Session,于是,会话丢失了!

使用了反向代理后如何保持会话?其实会话保持有很多种解决方案,下面结合我的实际经验总结一下供大家参考:

1、Nginx会话保持机制

Nginx自带有会话保持机制,常见的有:

ip_hash:使用源地址哈希算法,这样同一客户端的请求都会到达同一个后端服务器;

sticky_cookie_insert:此算法基于Cookie来实现的,此模块需要编译安装。

2、会话共享机制

如果我们让多个后端节点服务器的Session保持一致,不就可以解决落地服务器的会话保持了么?说得通俗点,我们把Session集中管理,然后各个节点服务器从这里取Session,就能保持会话了。

实现方案很多,比如说:

Session入库;

Session存入NoSQL(Memcache、Redis)中。

以上就是我的观点,对于这个问题大家是怎么看待的呢?欢迎在下方评论区交流 ~ 我是科技领域创作者,十年互联网从业经验,欢迎关注我了解更多科技知识!