nginx 常用指令配置总结

命运对每个人都是一样的,不一样的是各自的努力和付出不同,付出的越多,努力的越多,得到的回报也越多,在你累的时候请看一下身边比你成功却还比你更努力的人,这样,你就会更有动力。

导读:本篇文章讲解 nginx 常用指令配置总结,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com,来源:原文

前言

熟悉nginx的同学应该了解,nginx.conf
配置文件中默认有三大块:全局块、
events
块、
http
块 ,http块中可以配置多个
server
块,每个
server
块又可以配置多个
location块。
本篇对nginx.conf配置文件中的常用指令块做一个较详细的介绍。

全局块

1、user指令

nginx 常用指令配置总结

user:
用于配置运行
Nginx
服务器的
worker
进程的用户和用户组

nginx 常用指令配置总结

 

该属性也可以在编译的时候指定,语法如下
./configure

user=user –group=group
,
如果两个地方都进行了设置,最终生效的是配置文件中的配置。

指令使用目的

使用
user
指令可以指定启动运行工作进程的用户及用户组, 这样对于系统的权限访问控制的更加精细,也更加安全

2、work process指令

nginx 常用指令配置总结

 

正常情况下,当开启nginx服务后,使用ps命令可以看到当前有两个进程
nginx 常用指令配置总结

 

  • 其中master_process : 用来指定是否开启工作进程
  • worker_processes:
    用于配置
    Nginx
    生成工作进程的数量,这个是
    Nginx 服务器实现并发处理服务的关键所在。理论上来说workder process
    的值越大,可以支持的并发处理量也越多,但事实上这个值的设定是需要 受到来自服务器自身的限制,建议将该值和服务器CPU
    的内核数保存一 致。
nginx 常用指令配置总结

 

nginx 常用指令配置总结

 

如果将
worker_processes
设置成
2
,则会看到如下内容
:
nginx 常用指令配置总结

 

3、daemon指令

设定
Nginx
是否以守护进程的方式启动

守护式进程是
linux
后台执行的一种服务进程,特点是独立于控制终端,不会随着终端关闭而停止
nginx 常用指令配置总结

 

4、pid指令

用来配置
Nginx
当前
master
进程的进程号
ID
存储的文件路径。

nginx 常用指令配置总结

 

该属性可以通过
./configure

pid

path=PATH
来指定

5、error_log

用来配置
Nginx
的错误日志存放路径
nginx 常用指令配置总结

 

该属性可以通过
./configure

error

log

path=PATH
来指定
其中日志级别的值有:
debug|info|notice|warn|error|crit|alert|emerg
,翻译过来为试
|
信息|
通知
|
警告
|
错误
|
临界
|
警报
|
紧急,建议大家设置的时不要设置成info
以下等级,会带来大量的磁盘
I/O
消耗,影响
Nginx
性能;

6、include

用来引入其他配置文件,使
Nginx
的配置更加灵活

nginx 常用指令配置总结

 

events

nginx 常用指令配置总结

 

events块中可配置的指令包括如下,分别做说明

1、accept_mutex

用来设置Nginx网络连接序列化

nginx 常用指令配置总结

 

这个配置主要可以用来解决常说的

惊群

问题。大致意思是在某一个时 刻,客户端发来一个请求连接,Nginx
后台是以多进程的工作模式,也就是说有多个worker
进程会被同时唤醒,但是最终只会有一个进程可以获取到连接,如果每次唤醒的进程数目太多,就会影响Nginx
的整体性能。如果将上述值设置为on(
开启状态
)
,将会对多个
Nginx
进程接收连接进行序列号,一个个来唤醒接收,就防止了多个进程对连接的争抢;

2、multi_accept

用来设置是否允许同时接收多个网络连接

nginx 常用指令配置总结

如果
multi_accept
被禁止了,
nginx
一个工作进程只能同时接受一个新的连接。否则,一个工作进程可以同时接受所有的新连接;

 3、worker_connections

用来配置单个worker进程最大的连接数

nginx 常用指令配置总结

这里的连接数不仅仅包括和前端用户建立的连接数,而是包括所有可能的连接数。另外,number
值不能大于操作系统支持打开的最大文件句柄数量。

4、user

用来设置
Nginx
服务器选择哪种事件驱动来处理网络消息

nginx 常用指令配置总结

注意:此处所选择事件处理模型是
Nginx
优化部分的一个重要内容,method的可选值有
select/poll/epoll/kqueue
等,之前在准备
centos
环境的时候,我们强调过要使用linux
内核在
2.6
以上,就是为了能使用epoll函数来优化
Nginx

另外下面这些值也可以在编译的时候选择使用:

with

select_module


without

select_module
、–with

poll_module


without

poll_module
来设置是否需要将对应的事件驱动模块编译到Nginx
的内核;
events
指令配置实例
events { 

     accept_mutex on;
     multi_accept on; 
     worker_commections 1024; 
     use epoll; 

}

http

http模块是nginx.conf配置文件中最重要的部分,日常开发中最重要的的配置几乎都是在这个模块中进行的;

1、定义MIME-Type

我们都知道浏览器中可以显示的内容有
HTML

XML

GIF
等种类繁多的文件、媒体等资源,浏览器为了区分这些资源,就需要使用MIME Type。所以说
MIME Type
是网络资源的媒体类型。
Nginx
作为
web
服务器,也需要能够识别前端请求的资源类型;

Nginx
的配置文件中,默认有两行配置
include mime.types;
default_type application/octet-stream;

nginx 常用指令配置总结

 

default_type

用来配置
Nginx
响应前端请求默认的
MIME
类型。

nginx 常用指令配置总结

 在default_type之前还有一句include mime.types ,include之前我们已经介绍过,相当于把mime.types文件中MIMT类型与相关类型文件的文件后缀名的对应关系加入到当前的配置文件中;

举例说明:

有些时候请求某些接口的时候需要返回指定的文本字符串或者
json
字符串,如果逻辑非常简单或者干脆是固定的字符串,那么可以使用nginx
快速实现,这样就不用编写程序响应请求了,可以减少服务器资源占用并且响应性能非常快。
配置实现如下:
location /get_text { 

	#这里也可以设置成
	default_type text/plain; 
	return 200 "This is nginx's text"; 
}

location /get_json { 

	default_type application/json; 
	return 200 '{"name":"TOM","age":18}'; 

}

配置完毕后,重启nginx,浏览器分别访问上面两个路径,均能满足预期的效果

nginx 常用指令配置总结

 nginx 常用指令配置总结

 2、自定义服务日志

Nginx
中日志的类型分
access.log

error.log
  • access.log:用来记录用户所有的访问请求
  • error.log:记录nginx本身运行时的错误信息,不会记录用户的访问请求
Nginx
服务器支持对服务日志的格式、大小、输出等进行设置,需要使用到两个指令,分别是access_log

log_format
指令。

access_log

nginx 常用指令配置总结 

用来设置用户访问日志的相关属性

nginx 常用指令配置总结

log_format

用来指定日志的输出格式

nginx 常用指令配置总结

 

其他配置指令

1、 sendfifile

用来设置
Nginx
服务器是否使用
sendfifile()
传输文件,该属性可以大大提高Nginx
处理静态资源的性能

nginx 常用指令配置总结

 2、keepalive_timeout

用来设置长连接的超时时间

 nginx 常用指令配置总结

 3、keepalive_requests

用来设置一个keep-alive连接使用的次数

nginx 常用指令配置总结

 

补充说明:为什么要使用keepalive

  • 我们都知道HTTP是一种无状态协议,客户端向服务端发送一个TCP请求,服务端响应完毕后断开连接;
  • 如何客户端向服务端发送多个请求,每个请求都需要重新创建一次连接,效率相对来说比较多,使用keepalive模式,可以告诉服务器端在处理完 一个请求后保持这个TCP连接的打开状态;
  • 若接收到来自这个客户端的其 他请求,服务端就会利用这个未被关闭的连接,而不需要重新创建一个新 连接,提升效率;
  • 但是这个连接也不能一直保持,这样的话,连接如果过 多,也会是服务端的性能下降,这个时候就需要我们进行设置其的超时时间;

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/143234.html

(0)
飞熊的头像飞熊bm

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!