Nginx(一)概述
近期打算整理一下之前学习的Nginx和LVS,很久没有系统的总结导致很多的概念、操作、优化忘记如何实现了,这里做一下总结,帮助我加深记忆,也希望可以帮到看到这几篇博客的朋友们,思路、结构可能不是很清晰(根据我之前的笔记来写)可能会东一嘴西一嘴,欢迎各位大佬提出宝贵意见,看到不对的地方也请见谅并且指出,抱拳了!一、Nginx的功能
1.web
Nginx的web性能强大,处理静态页面的性能大约是Apache的3倍,但是处理动态页面方面Apache+PHP要优于Nginx+PHP
2.负载均衡、反向代理
Nginx出了作为常规的Web服务器外,还会被大规模的用于反向代理前端,因为Nginx的异步框架可以处理很大的并发请求,把这些并发请求hold住之后就可以分发给后端服务器来做复杂的计算、处理和响应。这种模式的好处是相当多的,比如隐藏业务主机可以提高安全性,节约了公网IP地址,在业务量增加的时候可以方便地扩容后台服务器等等。
3.Nginx可以做邮件服务器。
二、Nginx的特点
1.跨平台
Nginx可以安装在很多系统上,能在大部分系统上编译运行,可移植性高。
2.轻量级
Nginx由C语言开发(绝大部分系统就是C语言开发的),系统开销低,可以有效解决高并发。10000并发仅占用2.5M内存,官方说最大支持五万并发,但是经过大牛实际测试是三万六左右(记住这条以后和同事聊天可以装13哦)
3.配置文件简洁,可以使用正则表达式提高效率。
三、Nginx的优点
1.Nginx工作在网络的7层上,可以针对http应用做一些分流的策略,比如针对域名、目录结构,他的正则规则强大而灵活
2.Nginx做负载均衡对于网络稳定性的依赖较小,理论上能ping通就能进行负载功能,LVS做为负载均衡器的话对网络稳定性依赖就很大
3.Nginx安装和配置简单,测试起来很方便,还能把错误打印出来,lvs的测试和配置就相对较难
4.Nginx轻量级,可以承担高负载压力,而且同时保证稳定性,一般能支持几万次的并发量
5.Nginx跨平台,可在很多系统上编译运行,可移植性高。
6.Nginx可以通过端口检测到服务器内部的故障,比如根据服务器处理网页返回的状态码,超时等等,并且会把返回错误的请求重新提交到另一个节点。
7.Nginx不仅仅是一款优秀的负载均衡、反向代理软件,他同时也是功能强大的web应用服务器。LNMP也是近几年非常流行的web架构,在高流量的环境中稳定性十分出色。
8.Nginx作为web反向加速缓存越来越成熟,速度比传统的Squid服务器更快,可以考虑用其做反向代理加速器
9.Nginx也可作为静态网页和图片服务器,Nginx处理静态页面的性能大约是Apache的3倍,但是处理动态页面方面Apache+PHP要优于Nginx+PHP
补充:(3)中说道的测试Nginx和打印错误日志:
检测Nginx配置文件语法、合法性、和配置文件的完整性:
//开关选项 -t 代表测试配置文件,Nginx将重新解析配置文件,让你知道配置文件是否有效
# nginx -t ##yum安装
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
# /usr/local/nginx/sbin/nginx -t ##源码安装
//一个有效的配置文件并不意味着Nginx必然能够启动,可能还有额外的问题,例如套接字问题、无效的路径或不正确的访问权限
直接在生产环境中的服务器修改配置文件是件很危险的事,还有一个很好的参数是将新配置文件放在一个单独的临时文件夹中,然后再对改文件进行测试
# nginx -t -c /home/wangdong/test.conf
//该命令将解析配置文件/home/wangdong/test.conf,确定他作为nginx配置文件的有效性。然后在确定新的有效配置文件,重新载入服务器配置文件
# cp /home/wangdong/test.conf /usr/local/nginx/conf/nginx.conf
cp: erase 'nginx.conf' ? yes
# ./nginx –s reload 重新加载配置文件
四、Nginx的不足之处
1.Nginx仅能支持http、https和Email协议,相较于LVS适用范围相对较小
2.Nginx对后端服务器的健康检查只支持通过端口来检测,不支持通过URL来检测,比如用户在上传一个文件,而处理该上传的节点恰好出现故障,Nginx会把上传切换到另一台服务器重新处理,若是上传一个很大或者很重要的文件的话,用户可能会因此不满
3.Nginx不支持session的直接保持,但是能通过ip_hash来解决。
补充: 这里简单说一下什么是session(会话),用户(浏览器)在和服务端交互的时候,通常会在本地保存一些信息,而整个过程叫做一个会话(session),并用唯一的session> 具体的优化方法我们以后会介绍
4.一般对负载均衡的使用是随着网站规模的提升根据不同的阶段来使用不同的技术,如果是中小型的web应用,比如日PV小于1000万,用Nginx就完全可以,大型网站或者重要的服务,且服务器比较多时,可以考虑用LVS。
页:
[1]