Nginx简介及其安装安装完成后,我们可以看到在安装目录下有几个文件夹,如下:
nginx.conf 配置文件简介

这里我们可以查看下其配置文件目录
nginx.conf 配置文件简介

进入其中查看,首先是一个 #user nobody,指定Nginx的worker进程运行用户以及用户组,默认由nobody账号运行,这里指定的用户是需要拥有一定的权限的,不能过低,否则一些读取一些文件就没有权限去读取。
nginx.conf 配置文件简介


至于上面是worker进程,这个需要了解一些Nginx的基础模型,如下:
nginx.conf 配置文件简介
Nginx会按需同时运行多个进程:

  • 一个主进程(master)和几个工作进程(worker),配置了缓存时还会有缓存加载器进程(cache loader)和缓存管理器进程(cache manager)等。
  • 所有进程均是仅含有一个线程,并主要通过“共享内存”的机制实现进程间通信。
  • 主进程以root用户身份运行,而worker、cache loader和cache manager均应以非特权用户身份(user 配置项)运行。

主进程主要完成如下工作:

  1. 读取并验正配置信息
  2. 创建、绑定及关闭套接字
  3. 接收来自外界的信号,
  4. 向各worker进程发送信号(通过 kill 向进程发送信号的命令,如kill -TERM立即停止;kill -QUIT安全关闭;kill -HUP平滑重启,重新加载配置文件;kill -USR1 重新打开日志文件;kill -USR2 平滑升级可执行程序)
  5. 启动、终止及维护worker进程的个数,当worker进程退出后(异常情况下),会自动重新启动新的worker进程
  6. 无须中止服务而重新配置工作特性
  7. 重新打开日志文件

worker进程主要完成的任务包括:

  1. 接收、传入并处理来自客户端的连接
  2. 提供反向代理及过滤功能
  3. nginx任何能完成的其它任务


接下来的 worker_processes 指定Nginx要开启的进程数,这里一般配置与电脑CPU核心数相等。
nginx.conf 配置文件简介

这里其实还有一个 worker_rlimit_nofile 100000; 指worker进程的最大打开文件数限制,这里指最大为10万



下面紧接着的 error log 是我们的日志级别,用来定义全局错设日志文件的路径和日志名称。

日志输出级别有debug,info,notice,warn,error,crit 可供选择,其中debug输出日志最为详细,而crit(严重)输出日志最少。默认是error
nginx.conf 配置文件简介

pid 就是指Nginx启动后的进程号
nginx.conf 配置文件简介

event 设定Nginx的工作模式及连接数上限

  • 其中参数use用来指定Nginx的工作模式(这里是epoll,epoll是多路复用IO(I/O Multiplexing)中的一种方式),nginx支持的工作模式有select,poll,kqueue,epoll,rtsig,/dev/poll,其中select和poll都是标准的工作模式,kqueue和epoll是高效的工作模式,对于linux系统,epoll是首选。
  • worker_connection是设置nginx每个进程最大的连接数,默认是1024,所以nginx最大的连接数max_client=worker_processes * worker_connections。进程最大连接数受到系统最大打开文件数的限制,需要设置ulimit。
    nginx.conf 配置文件简介

以上其实介绍的是对nginx全局属性的配置。nginx.conf文件下面的配置是Nginx对http服务器相关属性的设置,如下图:
nginx.conf 配置文件简介
其中:main为Nginx全局设置,events设定Nginx的工作模式及连接数上限 ,http服务器相关属性中可以有多个server,server中 upstream(上游服务器设置,主要为反向代理、负载均衡相关配置) ,而 location(URL匹配特定位置后的设置)。



http中的 include 对配置文件所包含文件的设定,减少主配置文件的复杂度,相当于把部分设置放在别的地方,然后在包含进来,保持主配置文件的简洁,其中mime.types其实就是在Nginx目录下的conf文件夹之中。
nginx.conf 配置文件简介

default_type application/octet-stream; 默认文件类型,当文件类型未定义时候就使用这类设置的。
nginx.conf 配置文件简介

下面的 log_formataccess_log ,其中log_format指定Nginx日志的格式,我们可以进行自主的设置,比如我们的access_log就可以使用自定义的日志格式,access_log是用于记录访问的日志,其存在Nginx目录的logs目录之下
nginx.conf 配置文件简介
那么我们的日志格式可以如何设置呢,如下:

参数 含义
$remote_addr 客户端的ip地址(代理服务器,显示代理服务ip)
$remote_user 用于记录远程客户端的用户名称(一般为“-”)
$time_local 用于记录访问时间和时区
$request 用于记录请求的url以及请求方法
$status 响应状态码,例如:200成功、404页面找不到等。
$body_bytes_sent 给客户端发送的文件主体内容字节数
$http_user_agent 用户所使用的代理(一般为浏览器)
$http_x_forwarded_for 可以记录客户端IP,通过代理服务器来记录客户端的ip地址
$http_referer 可以记录用户是从哪个链接访问过来的

sendfile on; 开启高效文件传输模式(zero copy 方式),避免内核缓冲区数据和用户缓冲区数据之间的拷贝。
#tcp_nopush on; 开启TCP_NOPUSH套接字(sendfile开启时有用)
nginx.conf 配置文件简介

keepalive_timeout 指客户端连接超时时间
nginx.conf 配置文件简介

gzip on; 设置是否开启gzip模块,在Nginx一般都是针对文本类的文件进行压缩,压缩得到的压缩率较高,图片之类的压缩意义不大
nginx.conf 配置文件简介
另外我们Nginx压缩后,我们浏览器肯定需要对其进行压缩,所以它们之间肯定是需要同一种压缩解压的格式的,所以我们浏览器在发送请求时,请求头中是有一个参数设置的,它表示浏览器支持哪几种压缩方式
nginx.conf 配置文件简介

并且在返回头中,也会携带参数,表明其使用了什么样的压缩格式,浏览器就可以根据其压缩的格式进行解压
nginx.conf 配置文件简介


接下来的是我们的server虚拟主机,首先是我们虚拟主机server的监听端口以及域名,listen 80;虚拟主机的服务端口,server_name localhost; 用来指定ip或者域名,多个域名用逗号分开
nginx.conf 配置文件简介

然后又是我们的访问日志,这个和我们上述的一致,紧接着的是location,location主要是用于地址匹配设置,支持正则匹配,也支持条件匹配,这里是默认请求地址,可以用location命令对Nginx进行动态和静态网页过滤处理,有关location的配置后面会进行详细的介绍
nginx.conf 配置文件简介

相关文章: