nginx处理web请求机制解析

###worker抢占机制 worker进程抢占accept_mutex互斥锁,谁先抢到,谁与client建立连接 ###传统服务器事件处理 客户端与worker进程连接并阻塞时,其他的请求会等待第一个请求处理完毕才可以被执行。 ###Nginx事件处理 nginx的worker进程是异步非阻塞的通信模式,类似于多路复用器的模式,所以当第一个请求被阻塞时,也可以同事处理接下来的其他请求(use epoll, linux的epoll模型,可以同时处理6-8万个请求) ###配置nginx的最大连接数 在nginx.conf配置文件内

events {
    # 默认使用epoll
    use epoll;
    # 每个worker允许连接的客户端最大连接数
    worker_connections 1024;
}

###nginx.conf配置结构

  • main 全局配置
  • event 配置工作模式以及连接数
  • sendfile on; 使用高效文件传输,提升传输性能
  • tcp_nopush on; sendfile启用后才能使用,是指当数据表积累一定大小后才发送,提高了效率
  • keepalive_timeout 设置客户端与服务端请求的超时时间,保证客户端多次请求的时候不会重复建立新的链接,节约资源损耗:keepalive_timeout 65;
  • gzip on; gzip启用压缩,html/css压缩后传输更快
  • http http模块相关配置
    • server 虚拟主机模块
      • listen 监听端口
      • server_name localhost、IP、域名
      • location 请求路由映射,匹配拦截
      • root 请求位置
      • index 首页设置
    • location 路由规则,表达式
    • upstream 集群,内网服务器

###设定日志格式,main为定义的格式名称,如此access_log就可以直接使用这个变量了

参数名 参数意义
$remote_addr 客户端IP
$remote_user 远程客户端用户名,一般为:’-’
$time_local 时间和时区
$request 请求的URL以及method
$status 响应状态码
$body_bytes_send 响应客户端内容字节数
$http_referer 记录用户从哪个链接跳转过来的
$http_user_agent 用户所使用的代理,一般来时都是浏览器
http_x_forwarded_for 通过代理服务器来记录客户端的IP

####日志配置格式 error_log [日志文件路径] [日志级别:notice|info] #####日志级别(由低到高)

  • debug
  • info
  • notice
  • warn
  • error
  • crit