nginx 配置文件及基本介绍

对 nginx.conf 配置文件,做了一些基本的介绍,讲解了一大部分参数配置

nginx 的主配置文件,位于 nginx 目录下的 conf 目录,名称为 nginx.conf,nginx 的配置文件,主要分为几个部分,其中有 main , events , http , server , upstream , location

结构可以看下图,这个是图网上找的,就凑合看一下吧

nginx_conf_mod

main 模块,主要控制 nginx 主进程,以及了工作进程,派生的子工作进程数量,控制子进程运行的用户和用户组,全局的错误日志,pid 文件,子进程优先级以及 nginx 可以打开的文件描述数目

events 主要控制 nginx 的连接处理方式,以及使用的网络 IO 模型。

http 模块,这是控制以 nginx http 的请求的处理模块,全局的 http 请求处理配置,很多的配置都在这里进行。

server 模块,是 nginx 虚拟主机的配置模块,虚拟主机都在这里进行配置,,可以有多个 server 段。

upstream 模块,这个主要做 nginx 的负载均衡,可以有多个,位于 http { } 区段中配置

location 模块,博主个人觉得,这个不算是一个单独的配置模块,至少博主个人是这么认为的,大家有意见可以在下方留言提出来的哟,这个主要用来匹配 URL,用来做相应的请求处理,以及对目录的控制

配置文件中,每一行都必须以分号 ; 结束

user nginx nginx;
work_processes 1;
error_log logs/error.log notic;
pid logs/nginx.pid;

这四行中,也就是 main 模块中,user 指定 nginx 工作进程运行时,使用哪个用户和用户组来运行

work_processes 指定 nginx 派生多少个子进程,子进程,也就是工作进程,数量一般为 服务器的 逻辑总核心数,比如我的服务器 CPU 是 E5-2660V2, 这个CPU是 10 核心的,并且有超线程技术,那一颗 CPU 的逻辑核心数就是 20,我的服务器上有两颗这个型号的CPU,逻辑总核心数就是 40,那么这个 work_processes 就可以设置为 40

error_log 指定 全局的错误日志,当然也可以在 server 区段 以及 location 区段配置,后面的 notic 是日志的级别,分别为:[ debug | info | notice | warn | error | crit ],日志的详细记录程度从左到右,依次减少,debug 记录的日志最为详细,ctir 最少。

pid 指定 nginx pid 的存放目录,这个文件里记录的是一个 PID,也就是进程号,nginx 主进程的进程号,是一串数字

events {
   use epool;
   worker_connections 1024;
}

use epool 指定 nginx 使用的网络 IO 模型,可以支持的模型有:[ select | pool | kqueue | epool | rstig ] ,对于这个模型,博主也不是很了解,linux 系统推荐使用 epool, FreeBSD 推荐使用 kqueue

work_connections 1024 指定单个工作进程最大允许的连接数量,也就是并发数量,结合 work_processes 使用,以上面配置 40 个 work_processes 来举例,40个 work_processeswork_connections 的数量,就是 nginx 最大的并发量 40 * 1024

http {
   include mime.types;
   default_type application/octet-stream;
   log_format main '$remote_addr - $remote_user [$time_local] "$request" '
            '$status $body_bytes_sent "$http_referer" '
            '"$http_user_agent" "$http_x_forwarded_for"';
   access_log logs/access.log main;
   sendfile on;
   tcp_nopush on;
   keepalive_timeout 60;
   #gzip on;
}

include 这个是引用文件,也就是把这个文件里的内容,包含到主配置文件里面来,可以有效的减少主配置文件的行数,使其保持不会太乱,这个 mime.types 文件定义了 MIME-type 类型

default_type 默认的文件类型

charset 设定默认的字符集

log_format 用于定义访问日志格式,main 为定义的日志格式名称,这个有很多变量可以定义,后面的文章中我会继续更新

access_log 定义日志文件路径,最后面的 main 就是日志格式的名称,在前面已经定义过了的,access_log 也可以在 server | location 区段配置。

sendfile 是否开启 sendfile 文件传输模式,这个大家可以自己去了解一下,一般情况下建议开启,可以提高效率,这个也可以在 server | location 区段进行配置。

tcp_nopush 优化网络传输,建议开启,需要了解的大家去查资料,这里就不做过多解释

keepalive_timeout 指定连接的超时时间,单位为秒,一般建议设置为 60 ,因为部分老的浏览器最大就支持 60 秒,可以 server | location 区段进行配置。

gzip 指定是否打开 gzip 压缩,当然还需要接合其它配置来一起使用,比如缓冲区的大小,压缩级别等。这个在后面也会单独来讲。

server {
  listen 80;
  server_name localhost;
  root html;
  index index.html index.htm index.php;
  access_log logs/access.log main;
  error_log logs/error.log;

  location ~* \.php$ {
     fastcgi_pass 127.0.0.1:9000;
     fastcgi_index index.php;
     fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
     include fastcgi_params;
  }
}

server 区段主要用于虚拟主机的配置。

listen 指定监听的端口,也可以指定 IP:port 的格式,监听指定 IP ,若不写 IP ,则默认监听机器上的所有 IP

server_name 指定主机名

root 指定网站的目录,也可以在 location 区段配置。

index 指定默认的首页文件,也就是索引文件,access_log 指定访问日志,和 http 区段的是一样的,区别在于,在 server 指定,只会记录这一个 server 的,http 区段就会记录整个nginx 的日志了

access_log 指定访问日志,和 http 区段的是一样的,区别在于,在 server 指定,只会记录这一个 server 的,http 区段就会记录整个nginx 的日志了。error_log 也是一样。

location 配置 URL 并做相应的处理,以及对目录的控制,如上面的例子,就是对 php 结尾的文件,因为它会匹配所有以 php 结尾的访问,然后把它交给 fastcgi 处理。location 只能写在 server 区段里面

面对目录的控制,简单的举个例子,比如网站的后台管理,为 admin,只允许在指定的 IP 访问。

location /admin {
   allow 192.168.1.10;
   deny all;
}

这个例子,就是表示 网站下的 admin 目录,只允许 192.168.1.10 这个 IP 访问,其它的都不允许,IP 地址也可以写成网段,如: allow 192.168.1.0/24;

allowdeny 指令,也可以写到 server 区段。

nginx 配置文件基本的就讲到这里,后面我还会讲更多实际,以有更多的配置。

猜您喜欢