Nginx的特点
高并发
一个nginx的默认并发量为1024,是因为默认一个woker进程,每个进程处理量为1024,故1*1024;但是,在硬件条件满足的条件下,nginx可以支持5~10w的并发量。具体做法如下:
####################### 操作系统配置 start ####################### #查看当前会话中所有的linux核心配置,而我们只需要关注open file这项 ulimit -a #查看linux系统的“进程最大可打开文件数的设置”,默认时1024 ulimit -n #修改“进程最大可打开文件数的设置” vim /etc/security/limit.conf #添加下面两行 soft nofile 65535 #应用软件级别限制的最大可打开文件数的限制 hard nofile 65535 #操作系统级别限制的最大可打开文件数的限制 #文件保存后不会马上生效,所以还得更改当前会话级别的配置 ulimit -n 65535 ####################### 操作系统配置 end ####################### ####################### nginx配置 start ####################### #修改nginx配置文件(下面两行) vim /src/local/nginx/conf/nginx.conf user root root; worker_processes 4; worker_rlimit_nofile 65535; #这行,看这里看这里 #error_log logs/error.log; #error_log logs/error.log notice; #error_log logs/error.log info; #pid logs/nginx.pid; events { use epoll; worker_connections 65535; #这行,看这里看这里 } #热部署重新加载配置文件 nginx -s reload ####################### nginx配置 end ####################### ####################### 验证配置是否正确 start ####################### #查看当前nginx进程信息 ps -ef | grep nginx root 103734 1 0 13:27 ? 00:00:00 nginx: master process nginx nobody 103735 103734 0 13:27 ? 00:00:00 nginx: worker process root 105129 3066 0 14:50 pts/0 00:00:00 grep --color=auto nginx #注意,也是看open files这项 cat /proc/103735/limits ####################### 验证配置是否正确 start ####################### ####################### max client计算方式 start ####################### max client = worker_processes * worker_connections 或 max client = worker_processes * worker_connections / 4 #第一种很好理解,进程数*每个进程并发数 #第二种为什么要除以4呢?是因为在nginx官网有这么一段话 Since a browser opens 2 connections by default to a server and nginx uses the fds (file descriptors) from the same pool to connect to the upstream backend。 #就是说,浏览器会建立两条链接到nginx,而nginx也会建立两条链接到服务端,故就是4 ####################### max client计算方式 end #######################
低消耗
一万个非活跃性链接,消耗内存仅暂用2.5M,故对于一般的dos攻击不受影响,但是ddos还是有问题。
热部署
可以在7*24小时不间断服务提供,进行版本和配置平滑升级
#命令 nginx -s reload ####################### 命令过程解析 start ####################### 1、当上面的命令一执行,如果发现配置文件已更改,会创建一个新的主进程 2、当前所有的worker进程不会再接收新的请求并把当前正在处理的请求执行完就关闭 3、master主进程会创建新的worker进程来接收并处理新的请求 ####################### 命令过程解析 end #######################
高可用
之所以实现高可用,是因为在nginx中,woker都一个一个的进程,就算其中某个进程挂掉了,也对其他的进程没得影响,而且其他的进程会接替出问题的进程。
高扩展
由于nginx是模块化集成,故在我们使用中,缺少什么模块我们就安装什么模块(模块一般分为C语言扩展模块和Lua脚本扩展模块)
#下载模块 git clone https://github.com/agentzh/echo-nginx-module #放入指定位置 mv echo-nginx-module-master /usr/local/nginx/echo-nginx-module #就用这个命令生成新的makefile ./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --add-module=/usr/local/nginx/echo-nginx-module #编译(这里只需要make,一定不要执行make install,不然会被覆盖) make #备份原文件 cp /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.bak #替换nginx二进制文件 cp /usr/local/nginx/objs/nginx /usr/local/nginx/sbin/nginx #重新建立软连接,检测配置文件并平滑启动 ln -s /usr/local/nginx/sbin/nginx /usr/local/bin/nginx nginx -t nginx -s reload
Nginx配置文件详解
整体结构
全局块
配置影响nginx的全局指令。包括:
配置运行nginx的服务器用户组
worker process数
nginx进程
pid存放路径
错误日志存放路径
配置文件的引入
events块
配置影响nginx服务器或与用户的网络连接。包括:
设置网络连接的序列化(惊群)
是否允许同时接收多个网络连接
选择事件驱动模型
设置最大连接数
http块
可以嵌套多个server模块,配置代理、缓存、日志定义等和第三方模块的配置。包括:
定义MIMI-Type
自定义服务日志格式
允许sendfile方式传输文件
连接超时时间
单连接请求数上限
server块
配置虚拟主机相关参数。包括:
配置网络监听
配置基于名称的虚拟主机
配置基于IP的虚拟主机
location块
配置请求的路由,以及页面和其他静态资源的处理。包括:
location配置
请求根目录配置更改
URL
网站默认首页配置
配置清单例析
总结
文章到这里就结束了!Nginx 是一个高性能的 HTTP 和反向代理服务器,特点是占用内存少,并发能力强,事实上 Nginx 的并发能力确实在同类型的网页服务器中表现较好。Nginx 专为性能优化而开发,性能是其最重要的要求,十分注重效率,有报告 Nginx 能支持高达 50000 个并发连接数。
链接:https://www.jianshu.com/p/910864e92523
来源:简书
作者:OK兄 浏览次数:25