http:MPM

prefork,worker,event


prefork:主进程,生成多个子进程,每个子进程处理一个请求;

worker:主进程,生成多个子进程,每个子进程生成多个线程,每个线程响应一个请求。

event:主进程,生成多个子进程,每个子进程处理多个请求;



I/O类型:


同步:调用发出之后不会立即返回,但一但返回,则返回即使最终结果。

异步:调用发出之后,被调用方立即返回消息,但返回的并非最终结果,被调用者通过状态、通知机制等来通知调用者,或通过回调函数来处理结果;


阻塞:调用结果返回之前,调用者会被挂起;调用者只有在得到返回结果之后才能继续;

非阻塞:调用者在结果返回之前,不会被挂起。即调用不会阻塞调用者;


I/O模型:

从磁盘到内核内存,在从内核内存复制到进程内存。


nginx开发之初是基于事件驱动行I/O,并且是边缘触发。


用户通过http/https与worker进程通讯,

worker 通过http反代web server

worker 通过 fastcgi动态模块加载动态资源

worker 通过memcache 与mecache 通讯。


master:加载配置文件,管理worker进程,平滑升级

worker:http服务,http代理,fastcgi代理。




~:正则表达式匹配,区分大小写

~*:正则表达式匹配,不区分大小写

^~:URI的左半部分匹配




location /p_w_picpaths/ {

root /data/imgs/;

}


location /p_w_picpaths/ {

alias /data/imgs/;

}


root:指令

/p_w_picpaths/test.gpg -----> /data/imgs/p_w_picpaths/test.gpg



alias:指令

/p_w_picpaths/test.gpg-----> /data/imgs/test.gpg



#长连接有效时间,默认65秒

keepalive_timeout  


#在持久连接上,允许请求的最大资源数,默认为100个

keepalive_requests 


#禁止那些浏览器使用keepalive功能。

keepalive_disable


#发送响应报文的超时时长,默认为60秒,一般为服务器响应客户端,给客户端发送数据。

send_timeout 


nginx 状态信息模块:

ngx_http_stub_status_module



# cat /etc/nginx/conf.d/admin.conf 

server

{

    listen 80;

    server_name _;

    index  index.html index.php;

    location /admin/ {

root /data/www/;

auth_basic "admin com";

auth_basic_user_file /etc/nginx/passwd;

}

    location /status/ {

     stub_status;

}

}




[root@localhost www]# curl http://192.168.121.131/status/

Active connections: 1 

server accepts handled requests

 14 14 48 

Reading: 0 Writing: 1 Waiting: 0 



Active connections:当前活动的客户端连接数。

accepts:已经接受的客户端连接数

handled:已处理过的客户端连接总数量

requests:客户端的总请求数。

Reading:正在读取的客户端请求的数量。

Writing:正向其发送响应报文的连接数量。

Waiting:  等待其发出请求的空闲连接数量。