PHP试题网_中国最大的免费网络PHP试题测试平台,PHP试卷调查,PHP试卷模板、PHP考试测验
公告: PHP试题网于2022.06.21变更为少儿编程学院

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兄 浏览次数:13