徐家汇做网站,对电子商务网站建设与维护的总结,网站优化推广外包,比较个性的网站Nginx核心配置文件结构
我们知道Nginx的核心配置文件默认是放在/usr/local/nginx/conf/nginx.conf#xff0c;
读取Nginx自带的Nginx配置文件#xff0c;我们将其中的注释部分删除掉后#xff0c;就剩下下面核心内容:
worker_processes 1;events {worker_connections 1…Nginx核心配置文件结构
我们知道Nginx的核心配置文件默认是放在/usr/local/nginx/conf/nginx.conf
读取Nginx自带的Nginx配置文件我们将其中的注释部分删除掉后就剩下下面核心内容:
worker_processes 1;events {worker_connections 1024;
}http {include mime.types;default_type application/octet-stream;sendfile on;keepalive_timeout 65;server {listen 80;server_name localhost;location / {root html;index index.html index.htm;}error_page 500 502 503 504 /50x.html;location /50x.html {root html;}}}指令名 指令值; #全局块主要设置Nginx服务器整体运行的配置指令#events块,主要设置,Nginx服务器与用户的网络连接,这一部分对Nginx服务器的性能影响较大
events { 指令名 指令值;
}
#http块是Nginx服务器配置中的重要部分代理、缓存、日志记录、第三方模块配置...
http { 指令名 指令值;server { #server块是Nginx配置和虚拟主机相关的内容指令名 指令值;location / { #location块基于Nginx服务器接收请求字符串与location后面的值进行匹配对特定请求进行处理指令名 指令值;}}...
}nginx.conf配置文件中默认有三大块全局块、events块、http块
http块中可以配置多个server块每个server块又可以配置多个location块。
全局块
user指令
1user:用于配置运行Nginx服务器的worker进程的用户和用户组。
语法user user [group]默认值nobody位置全局块
该属性也可以在编译的时候指定语法如下./configure --useruser --groupgroup,如果两个地方都进行了设置最终生效的是配置文件中的配置。
该指令的使用步骤:
(1)设置一个用户信息www
user www;(2) 创建一个用户
useradd www(3)修改user属性
user www使用user指令可以指定启动运行工作进程的用户及用户组这样对于系统的权限访问控制的更加精细也更加安全。
work process指令
master_process:用来指定是否开启工作进程。
语法master_process on|off;默认值master_process on;位置全局块
worker_processes:用于配置Nginx生成工作进程的数量这个是Nginx服务器实现并发处理服务的关键所在。理论上来说workder process的值越大可以支持的并发处理量也越多但事实上这个值的设定是需要受到来自服务器自身的限制建议将该值和服务器CPU的内核数保存一致。
语法worker_processes num/auto;默认值1位置全局块
其他指令
daemon设定Nginx是否以守护进程的方式启动。
守护进程: Daemon守护进程是运行在后台的一种特殊进程。它独立于控制终端并且周期性地执行某种任务或等待处理某些发生的事件。它不需要用户输入就能运行而且提供某种服务不是对整个系统就是对某个用户程序提供服务。
语法daemon on|off;默认值daemon on;位置全局块
pid:用来配置Nginx当前master进程的进程号ID存储的文件路径。
语法pid file;默认值默认为:/usr/local/nginx/logs/nginx.pid位置全局块
该属性可以通过./configure --pid-pathPATH来指定
error_log:用来配置Nginx的错误日志存放路径
语法error_log file [日志级别];默认值error_log logs/error.log error;位置全局块、http、server、location
该属性可以通过./configure --error-log-pathPATH来指定
其中日志级别的值有debug|info|notice|warn|error|crit|alert|emerg翻译过来为试|信息|通知|警告|错误|临界|警报|紧急这块建议大家设置的时候不要设置成info以下的等级因为会带来大量的磁盘I/O消耗影响Nginx的性能。
include:用来引入其他配置文件使Nginx的配置更加灵活
语法include file;默认值无位置any
events块
accept_mutex:用来设置Nginx网络连接序列化
语法accept_mutex on|off;默认值accept_mutex on;位置events
这个配置主要可以用来解决常说的惊群问题。大致意思是在某一个时刻客户端发来一个请求连接Nginx后台是以多进程的工作模式也就是说有多个worker进程会被同时唤醒但是最终只会有一个进程可以获取到连接如果每次唤醒的进程数目太多就会影响Nginx的整体性能。如果将上述值设置为on(开启状态)将会对多个Nginx进程接收连接进行序列号一个个来唤醒接收就防止了多个进程对连接的争抢。
multi_accept:用来设置是否允许同时接收多个网络连接
语法multi_accept on|off;默认值multi_accept off;位置events
如果multi_accept被禁止了nginx一个工作进程只能同时接受一个新的连接。否则一个工作进程可以同时接受所有的新连接
worker_connections用来配置单个worker进程最大的连接数
语法worker_connections number;默认值worker_commections 512;位置events
这里的连接数不仅仅包括和前端用户建立的连接数而是包括所有可能的连接数。另外number值不能大于操作系统支持打开的最大文件句柄数量。
use:用来设置Nginx服务器选择哪种事件驱动来处理网络消息。
语法use method;默认值根据操作系统定位置events
注意此处所选择事件处理模型是Nginx优化部分的一个重要内容method的可选值有select/poll/epoll/kqueue等.
另外这些值的选择我们也可以在编译的时候使用
--with-select_module、--without-select_module、 --with-poll_module、 --without-poll_module来设置是否需要将对应的事件驱动模块编译到Nginx的内核。
http块
定义MIME-Type
我们都知道浏览器中可以显示的内容有HTML、XML、GIF等种类繁多的文件、媒体等资源浏览器为了区分这些资源就需要使用MIME Type。所以说MIME Type是网络资源的媒体类型。Nginx作为web服务器也需要能够识别前端请求的资源类型。
在Nginx的配置文件中默认有两行配置
include mime.types;
default_type application/octet-stream;default_type:用来配置Nginx响应前端请求默认的MIME类型。
语法default_type mime-type;默认值default_type text/plain位置http、server、location
在default_type之前还有一句include mime.types,include相当于把mime.types文件中MIMT类型与相关类型文件的文件后缀名的对应关系加入到当前的配置文件中。
举例说明
有些时候请求某些接口的时候需要返回指定的文本字符串或者json字符串如果逻辑非常简单或者干脆是固定的字符串那么可以使用nginx快速实现这样就不用编写程序响应请求了可以减少服务器资源占用并且响应性能非常快。
实现:
location /get_text {#这里也可以设置成text/plaindefault_type text/html;return 200 This is nginxs text;
}
location /get_json{default_type application/json;return 200 {name:TOM,age:18};
}自定义服务日志
Nginx中日志的类型分access.log、error.log。
access.log:用来记录用户所有的访问请求。
error.log:记录nginx本身运行时的错误信息不会记录用户的访问请求。
Nginx服务器支持对服务日志的格式、大小、输出等进行设置需要使用到两个指令分别是access_log和log_format指令。
access_log:用来设置用户访问日志的相关属性。
语法access_log path[format[buffersize]]默认值access_log logs/access.log combined;位置http, server, location
log_format:用来指定日志的输出格式。
语法log_format name [escapedefault|json|none] string…;默认值log_format combined “…”;位置http
其他配置指令
sendfile:用来设置Nginx服务器是否使用sendfile()传输文件该属性可以大大提高Nginx处理静态资源的性能 语法sendfile on|off默认值sendfile off;位置http、server、location
keepalive_timeout:用来设置长连接的超时时间。
》为什么要使用keepalive
我们都知道HTTP是一种无状态协议客户端向服务端发送一个TCP请求服务端响应完毕后断开连接。如何客户端向服务端发送多个请求每个请求都需要重新创建一次连接效率相对来说比较多使用keepalive模式可以告诉服务器端在处理完一个请求后保持这个TCP连接的打开状态若接收到来自这个客户端的其他请求服务端就会利用这个未被关闭的连接而不需要重新创建一个新连接提升效率但是这个连接也不能一直保持这样的话连接如果过多也会是服务端的性能下降这个时候就需要我们进行设置其的超时时间。语法keepalive_timeout time;默认值keepalive_timeout 75s;位置http、server、location
keepalive_requests:用来设置一个keep-alive连接使用的次数。
语法keepalive_requests number;默认值keepalive_requests 100;位置http、server、location