nginx知识总结
一、功能
- 负载均衡
- 反向代理
- 静态资源服务器
二、来源
- nginx 俄罗斯第二网站开源项目
- tengine 淘宝团队基于nginx开发的
- 区别:nginx安装之后还得装第三方软件包,tengine将其封装一起
三、正向代理与反向代理
- 正向代理:当你访问某个网站时,不去直接通过客户端访问,而是通过代理服务器进行访问。
进而隐藏自己真正的客户端身份,FQ就是采用这样的原理。 - 反向代理:当你去访问某个网站,并没有直接放到该网站的业务服务器,而是先访问其中一个代理服务器,由代理服务器进行分配到业务服务器,这样的情况称为反向代理。
四、具体功能
1.反向代理
- 刚刚讲到,nginx就可以当一个代理服务器,后面跟几台业务服务器。nginx起到连接的作用,而后面的应用服务器负责处理业务。
- 这样做的好处是(以Django为例)。用户访问网页可以分为活跃与非活跃,非活跃相当于长连接。试想如果由很多个非活跃链接
业务服务器的话,那么该服务器会在多个链接中无限切换,切换成本很高。而Django的并发量可能只有两千,所以显然
当并发量过高时这样配服务器是不合理的。 - 所以这个时候我们可以借助nginx作为代理服务器,凡是并发很多非活跃的链接直接由nginx处理,而哪些活跃度较高的用户可以分配给业务服务器处理。
2.负载均衡
- nginx的角色相当于是业务服务器的管理员,它要保证每一台服务器上面承载量是均衡的,不能有的服务器负载多,有的几乎没有。要做到雨露均沾,而具体实现的方法则利用到了nginx的负载均衡的四种调度算法。
负载均衡四种调度算法:
- 轮询------(默认循环分配)、也可以设置权重,权重高的先分标配。
- ip_Hash-----根据用户ip进行映射,不同的ip访问不同的服务器。这样做的好处可以重复利用用户每次访问的数据。
- fair-----根据服务器响应快慢的优先分配。
- url_hash----根据url分配,比如图片资源分配到图片服务器。
3.静态资源服务器
- nginx可以当静态资源服务器,即可以把静态页面、图片、JS文件、CSS文件等静态资源放到nginx上(中小型项目建议这么做,可以减少
nginx与业务服务器的来回交互)比如一些网站的首页,做成静态的,不需要每次都访问数据库。
五、几种语言开发的并发情况
- 单台服务器提高并发用C / C++,但是代码量大,开发周期长。
一般网站都用python php java开发,并发没有C / C++高 但是开发快。
六、linux可以用epoll,支持并发数量多活跃度不多的高效性。
七、nginx很重要,一旦挂了可能后面的服务器也会跟着挂,一定要有备用服务器。
八、nginx
url重写是指通过配置conf文件,以让网站的url中达到某种状态时则定向/跳转到某个规则,比如常见的伪静态、301重定向、浏览器定向等。
rewrite
语法
在配置文件的server块中写,如:
server {
rewrite 规则 定向路径 重写类型;
}
- 规则:可以是字符串或者正则来表示想匹配的目标url
- 定向路径:表示匹配到规则后要定向的路径,如果规则里有正则,则可以使用$index来表示正则里的捕获分组
重写类型:
- last:相当于Apache里德(L)标记,表示完成rewrite,浏览器地址栏URL地址不变
- break:本条规则匹配完成后,终止匹配,不再匹配后面的规则,浏览器地址栏URL地址不变
- redirect:返回302临时重定向,浏览器地址不会显示跳转后的URL地址
- permanent:返回301永久重定向,浏览器地址栏会显示跳转后的URL地址