前言
熟悉Nginx的同学应该了解,Nginx.conf
配置文件中默认有三大块:全局块、
events
块、
http
块 ,http块中可以配置多个
server
块,每个
server
块又可以配置多个
location块。
全局块
1、user指令
指令使用目的
2、work process指令
正常情况下,当开启Nginx服务后,使用ps命令可以看到当前有两个进程
- 其中master_process : 用来指定是否开启工作进程
3、daemon指令
4、pid指令
5、error_log
其中日志级别的值有:
debug|info|notice|warn|error|crit|alert|emerg
,翻译过来为试
|
信息|
通知
|
警告
|
错误
|
临界
|
警报
|
紧急,建议大家设置的时不要设置成info
以下等级,会带来大量的磁盘
I/O
消耗,影响
Nginx
性能;
6、include
events块
events块中可配置的指令包括如下,分别做说明
1、accept_mutex
用来设置Nginx网络连接序列化
这个配置主要可以用来解决常说的
"
惊群
"
问题。大致意思是在某一个时 刻,客户端发来一个请求连接,Nginx
后台是以多进程的工作模式,也就是说有多个worker
进程会被同时唤醒,但是最终只会有一个进程可以获取到连接,如果每次唤醒的进程数目太多,就会影响Nginx
的整体性能。如果将上述值设置为on(
开启状态
)
,将会对多个
Nginx
进程接收连接进行序列号,一个个来唤醒接收,就防止了多个进程对连接的争抢;
2、multi_accept
用来设置是否允许同时接收多个网络连接
3、worker_connections
用来配置单个worker进程最大的连接数
4、user
注意:此处所选择事件处理模型是
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
default_type
在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,浏览器分别访问上面两个路径,均能满足预期的效果
2、自定义服务日志
access_log
log_format
用来指定日志的输出格式
其他配置指令
1、 sendfifile
2、keepalive_timeout
用来设置长连接的超时时间
3、keepalive_requests
补充说明:为什么要使用keepalive?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。