nginx基础学习

nginx的特点

适合处理高并发,因为master进程下控制多个work 进程,一个work进程可以处理的并发数受限制于服务器内存大小,不像apache,要处理高并发需要开启很多个进程处理,一个进程处理一个请求,这样肯定存在进程间不停切换,进程切换导致资源的浪费。

nginx属于异步非阻塞io,适用于io密集型的应用,而apache适用于cpu密集型的应用,

什么是io密集型,比如调用其他系统的时候就会阻塞,这个时候是不会占用cpu计算的,但是会被阻塞住。cpu密集就是进行大量的运算。

 

nginx配合php使用

新版本安装php时默认安装php-fpm,需要修改php-fpm.conf配置文件,主要配置项:

1、为php-fpm设置用户和用户组(为了安全性考虑,需要设置这样的用户组,权限最小化)

2、设置listen为sock的文件,多进程处理。(该文件由php-fpm自动生成 php-fpm是用来处理php后缀文件的。)

接下去配置nginx.conf,在里面的server{}里面配置虚拟域名,将fastcgi_pass的值设置为sock的值。

 

 

nginx配置文件参数详解:

分类:1、调试配置 2、必须配置 3、优化配置 4、事件类配置

1、debug_connection-事件类配置 :可以用该参数 对指定的客户端进行高并发测试。

2、worker_rlimit_nofile limit : 一个worker进程能打开的最大文件句柄

--- 什么是文件句柄:

 

nginx配置文件

http-server-location

1、虚拟主机功能实现:server_name,没有找到虚拟主机的情况下

i:先查找listen配置项后面的【default|default_server】的server块。

ii:找到匹配listen端口的第一个server块。

如果有个server_name ‘’ (空字符串) ,表示匹配没有这个host的http头部请求。91页

2、反向代理的配置,什么是反向代理,和liquid的区别,upstream name{} 配置多个web服务器,可以使用很多配置参数,比如ip_hash表示让某一个部分的ip指定到固定的web服务器,server模块中使用proxy表示使用代理。nginx中更多的是对一个web请求进来时所涉及到的各种规则根据网站自身情况进行配置,比如客户端链接限制设置,图片的压缩方式配置,路由的匹配规则,网络连接的设置,

文件优化方式,等等等。

3、nginx模块是为了支持更多的功能,要使用c或者c++实现,这个,,............,,先放着。

 

 

正向代理和反向代理的理解

1、正反是针对用户来说的。比如我要去访问a,不能直接访问,然后通过b再到a,看起来就是正向的。而反向是我们要访问a,a隐藏了其中的细节,a其实是访问了b,但是我们却只知道我们访问了a,这叫做反向。

 

如何修改nginx的配置参数,以提高它的处理并发的能力

1、worker_processes : 默认是1,可以设置为cpu核心数。因为该参数是实际处理请求的进程数,所以设置恰当的值可以提高并发能力。

而cpu核心数 = cpu物理核数 * 超线程数。

比如4核的双线程,那么逻辑cpu核心数 = 8;

查询逻辑cpu核数的命令:/proc/cpuinfo| grep "processor"| wc -l

 

上面的是常规的设置方法,但是专业的做法是根据实际情况设定。

cpu密集型的应用,则按照上面来。

io密集型即存在大量阻塞式进程时,可以配置稍多一些的worker进程数。

 

什么是阻塞式进程:大量读取磁盘静态资源文件,而服务器上的内存比较较小,会导致磁盘io阻塞。

2、worker_rlimit_nofile :进程可以打开的最大文件数,受限制于操作系统,默认为1024,可以通过ulimit -n 查看。现在绝大部分系统都是65535。

所以可以设置该参数的值为65535。

 

3、worker_connections: 单个进程的同时建立的最大外部连接数。

受两个因素限制,一个是2中设置的参数worker_rlimit_nofile,一个是内存。10w个连接占用的内存大约为50M左右,所以可以说这个参数是受worker_rlimit_nofile的限制的。

 

 

 

 

 

 

 

 

 

你可能感兴趣的:(nginx)