打开我们的conf文件
nginx.conf文件中,分为3大块:
- 全局块,就是events和http块之外的内容。设置nginx服务器整体运行的指令 格式为: 指令名 指令值
- events块,用于配置与用户的网络连接的内容,对nginx的性能影响比较大。
- http块,最重要的配置,nginx代理、缓存、日志记录、第三方模块的记录都在该块中记录。其中记录了一些 指令名 指令值 和若干个server块:nginx配置与虚拟主机的相关内容。
全局块指令
user指令 用于指定启动运行工作进程的用户和用户组,这样对系统的权限访问控制更加精细。(mac中默认没有user命令,需要自行下载)
语法: user user [group] 第一个user为指令名,固定,第二个user为指定的用户名信息,不指定时默认为nobody。group为用户所属的组,不设置时采用用户名为组名。
该指令也可以通过./configure 参数设置(优先级高于user指令).
master_poccess:用来指定是否开启工作流程
语法:msater_poccess on| off 默认为on,打开情况 ,位置于全局块中
配置master_poccess off后,重启nginx后,worker进程会被关闭
worker_proccess用于配置nginx生成工作进程的数量,这个是nginx服务器实现并发处理的关键。理论上是worker_proccess值越大,支持的并发进程越多。但实际上这个值需要受到来自服务器自身的限制,建议将该值与服务器cpu内核数保持一致。
语法:worker_poccess num/auto 默认值为1。控制启用的worker进程数量。
deamon:设定nginx是否以守护进程的方式启动。
守护式进程是Linux后台执行的一种服务进程,特点是独立与控制终端,不会随着终端关而停止。 需重新启动nginx,才生效
语法: deamon on/off
pid:用来配置Nginx当前的master进程的进程号ID存储的文件路径
语法:pid file 默认为:/usr/local/nginx/logs/nginx.pid
该属性可通过./configure --pid-path=PATH来指定。
error_log:用来指定nginx错误日志的路径
语法: error_log file[日志级别]
默认:error_log logs/error.log error
级别有 debug、info、notice、warn、error、crit、alert、emerg:调试、信息、通知、警告、错误、临界、警报、紧急。建议不要设置为info及以下,这会带来大量的磁盘I/O消耗,影响nginx性能。 debug级别需要额外进行配置,以后再说。
include:用来引入其他的配置文件,使nginx的配置更加灵活
语法:include file 。默认无,位置any
events块指令
accept_mutex:用来设置nginx网络连接序列化。
语法:accept_mutex on/off 默认为on
可以简单理解为将多个worker进程编号,然后轮询调用。该命令并不是设置为on一定会提供性能,这和实际情况有关。
multi_accept:设置worker进程是否可以同时接收多个网站连接。
语法:multi_accept on/off 默认 multi_accept off
如果 multi_accept 被禁用,一个nginx进程只能同时接受一个连接。否则一个进程可以同时处理所有新连接。
worker_connections:用来配置单个worker进程最大连接数
语法:worker_connections number 默认为512;
这个连接数指的是所有的可能连接,不单单是与前端用户建立的连接。
use:设置nginx服务器选择哪种事件驱动来处理网络消息。
语法:use mothed 默认值根据操作系统定。此处所选择的事件处理模型是nginx优化部分的一个重要内容,method的可选值有select/poll/epoll/kqueue等,Linux2.6版本之上才可以使用epoll函数来优化nginx。另外我们还可以在编译时使用
--with-select_module、--without-select_module、--with-poll_module、--without-poll_module等来设置是否需要将对应的事件驱动模块编译到nginx的内核。
http块
nginx作为web服务器,需要用到MIME Type来区分浏览器中种类繁多的文件、媒体资源。
default_type:用来配置nginx响应前前端请求默认的MIME类型。
语法:default_type text/plain
例子:我们在conf文件中添加一个location /get_text{}
保存后,需要进行测试和重新加载。
然后打开浏览器,访问 localhost/get_text
在网页中访问,会以下载打开附件的形式打开,也就是二进制流的形式octet-stream。但我们需要在网页中展示文本字符串的话,可以修改http全局default_type或者在location中添加一个新的。
我们再次修改conf文件
保存后, 在次测试和重新加载,在次访问网址
在网页中显示了字符串文本,但它没有识别<h1>标签
再次修改default_type 为text/html。
再次测试和重新加载。再次打开浏览器
自定义服务日志
Nginx中日志分为access.log记录用户所有的访问请求。 error.log 记录nginx本身运行错误信息,不会记录访问请求
access_log 用于设置用户访问日志相关属性
语法:access_log path[format[buffer=size]] 默认值access_log logs/access.log combined; path为日志文件路径 ,format为日志格式 buffer为日志文件的大小。其中format与buffer为选填。可以写在http块、server块、location块,若同时配置access_log一个日志只会写入范围最小的日志文件,
log_format 用于指示日志的输出格式
语法: log_format name[escape=default|json|none]string...; 默认值:log_format combined “....”; name需要与上面的format保持一致。只能在http块中配置
例子
我们只看其中的log_format myformat '======>This is my format:$http_user_agent';
access_log logs/my.log myformat;
log_format myformat '======>This is my format:$http_user_agent';自定义一种日志风格
access_log logs/my.log myformat; 规定日志路径 和日志风格。
其他指令:
sendfile:用来设置nginx服务器是否使用sendFile()传输文件,可以大大提高nginx处理静态资源的性能。
语法 sendfile on|off; 默认为sendfile off。
sendfile函数可以看作Linux内核中处理静态资源的函数,大大提升从磁盘读取信息的性能。
keepalive_timeout:用来设置长连接的超时时间
语法:keepalive_timeout time; 默认值 keepalive_timeout 75s;
keepalive_requests:用来设置一个keep-alive连接的使用次数。
语法:keepalive_requests number 默认keepalive_requests 100;