当前位置: 首页 > news >正文

Nginx04-核心配置文件

零、文章目录

Nginx04-核心配置文件

1、概述

(1)配置文件路径
  • Nginx的核心配置文件默认是放在/usr/local/nginx/conf/nginx.conf
(2)配置文件内容
  • 文件中的#代表注释,删除注释之后文件内容如下
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;}}}
(3)配置文件说明
  • 有些指令既能配置在全局块,又能配置在http块、server块、location块,生效遵循就近原则。
#全局块,主要设置Nginx服务器整体运行的配置指令
指令名	指令值;  #events块,主要设置Nginx服务器与用户的网络连接,这一部分对Nginx服务器的性能影响较大
events {	 指令名	指令值;
}#http块,是Nginx服务器配置中的重要部分,代理、缓存、日志记录、第三方模块配置...
http {		指令名	指令值;server { #server块,是Nginx配置和虚拟主机相关的内容指令名	指令值;location / { #location块,基于Nginx服务器接收请求字符串与location后面的值进行匹配,对特定请求进行处理指令名	指令值;}}...
}
  • nginx.conf配置文件中默认有三大块
    • 全局块:主要设置Nginx服务器整体运行的配置指令
    • events块:主要设置Nginx服务器与用户的网络连接,这一部分对Nginx服务器的性能影响较大
    • http块:是Nginx服务器配置中的重要部分,代理、缓存、日志记录、第三方模块配置…
      • http块中可以配置多个server块
        • 每个server块又可以配置多个location块

2、全局块

(1)user
  • 用于配置运行Nginx服务器的worker进程的用户和用户组。使用user指令可以指定启动运行工作进程的用户及用户组,这样对于系统的权限访问控制的更加精细,也更加安全。nginx只能访问给定的目录。
  • 该属性也可以在编译的时候指定,语法如下./configure --user=user --group=group,如果两个地方都进行了设置,最终生效的是配置文件中的配置。
语法user user [group]
默认值nobody
位置全局块
  • 案例演示

    • 在linux下创建www用户
    useradd www
    
    • 在配置文件中配置user为www
    user www;
    
    • 重新加载配置文件,进程用户更改完成,从原来的nobody变成www
    [root@localhost ~]# ps -ef|grep nginx
    root      53723      1  0 17:43 ?        00:00:00 nginx: master process /usr/local/nginx/sbin/nginx
    nobody    53724  53723  0 17:43 ?        00:00:00 nginx: worker process
    root      56121   1775  0 17:45 pts/0    00:00:00 grep --color=auto nginx
    [root@localhost ~]# /usr/local/nginx/sbin/nginx -s reload
    [root@localhost ~]# ps -ef|grep nginx
    www       23146  53723  0 19:39 ?        00:00:00 nginx: worker process
    root      23195   1775  0 19:39 pts/0    00:00:00 grep --color=auto nginx
    root      53723      1  0 17:43 ?        00:00:00 nginx: master process /usr/local/nginx/sbin/nginx
    
(2)master_process
  • 用来指定是否开启工作进程。
语法master_process on|off;
默认值master_process on;
位置全局块
(3)worker_processes
  • 用于配置Nginx生成工作进程的数量,这个是Nginx服务器实现并发处理服务的关键所在。
  • 理论上来说workder process的值越大,可以支持的并发处理量也越多,但事实上这个值的设定是需要受到来自服务器自身的限制,建议将该值和服务器CPU的内核数保存一致。
语法worker_processes num/auto;
默认值1
位置全局块
(4)daemon
  • 设定Nginx是否以守护进程的方式启动。
  • 守护式进程是linux后台执行的一种服务进程,特点是独立于控制终端,不会随着终端关闭而停止。
语法daemon on|off;
默认值daemon on;
位置全局块
(5)pid
  • 用来配置Nginx当前master进程的进程号ID存储的文件路径。
  • 该属性可以通过./configure --pid-path=PATH来指定
默认值默认为:/usr/local/nginx/logs/nginx.pid
语法pid file;
位置全局块
(6)error_log
  • 用来配置Nginx的错误日志存放路径
  • 该属性可以通过./configure --error-log-path=PATH来指定
  • 其中日志级别的值有:debug|info|notice|warn|error|crit|alert|emerg,翻译过来为试|信息|通知|警告|错误|临界|警报|紧急,这块建议大家设置的时候不要设置成info以下的等级,因为会带来大量的磁盘I/O消耗,影响Nginx的性能。
语法error_log file [日志级别];
默认值error_log logs/error.log error;
位置全局块、http、server、location
(7)include
  • 用来引入其他配置文件,使Nginx的配置更加灵活
语法include file;
默认值
位置any

3、events块

(1)accept_mutex
  • 用来设置Nginx网络连接序列化。
  • 这个配置主要可以用来解决常说的"惊群"问题。大致意思是在某一个时刻,客户端发来一个请求连接,Nginx后台是以多进程的工作模式,也就是说有多个worker进程会被同时唤醒,但是最终只会有一个进程可以获取到连接,如果每次唤醒的进程数目太多,就会影响Nginx的整体性能。如果将上述值设置为on(开启状态),将会对多个Nginx进程接收连接进行序列号,一个个来唤醒接收,就防止了多个进程对连接的争抢。
语法accept_mutex on|off;
默认值accept_mutex on;
位置events
(2)multi_accept
  • 用来设置是否允许同时接收多个网络连接。
  • 如果multi_accept被禁止了,nginx一个工作进程只能同时接受一个新的连接。否则,一个工作进程可以同时接受所有的新连接。
语法multi_accept on|off;
默认值multi_accept off;
位置events
(3)worker_connections
  • 用来配置单个worker进程最大的连接数。
  • 这里的连接数不仅仅包括和前端用户建立的连接数,而是包括所有可能的连接数。另外,number值不能大于操作系统支持打开的最大文件句柄数量。
语法worker_connections number;
默认值worker_commections 512;
位置events
(4)use
  • 用来设置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的内核。
语法use method;
默认值根据操作系统定
位置events
(5)案例
events{accept_mutex on;multi_accept on;worker_commections 1024;use epoll;
}

4、http块

  • 我们都知道浏览器中可以显示的内容有HTML、XML、GIF等种类繁多的文件、媒体等资源,浏览器为了区分这些资源,就需要使用MIME Type。所以说MIME Type是网络资源的媒体类型。Nginx作为web服务器,也需要能够识别前端请求的资源类型。

  • 在Nginx的配置文件中,默认有两行配置

include mime.types;
default_type application/octet-stream;
(1)default_type
  • 用来配置Nginx响应前端请求默认的MIME类型。
  • 在default_type之前还有一句include mime.types,include之前我们已经介绍过,相当于把mime.types文件中MIMT类型与相关类型文件的文件后缀名的对应关系加入到当前的配置文件中。
默认值default_type text/plain;
语法default_type mime-type;
位置http、server、location
  • 案例:有些时候请求某些接口的时候需要返回指定的文本字符串或者json字符串,如果逻辑非常简单或者干脆是固定的字符串,那么可以使用nginx快速实现,这样就不用编写程序响应请求了,可以减少服务器资源占用并且响应性能非常快。
location /get_text {#这里也可以设置成text/plaindefault_type text/html;return 200 "This is nginx's text";
}location /get_json{default_type application/json;return 200 '{"name":"TOM","age":18}';
}
(2)access_log/error_log
  • Nginx中日志的类型分access.log、error.log。
    • access.log:用来记录用户所有的访问请求。
    • error.log:记录nginx本身运行时的错误信息,不会记录用户的访问请求。
  • Nginx服务器支持对服务日志的格式、大小、输出等进行设置,需要使用到两个指令,分别是access_log和log_format指令。
语法access_log path[format[buffer=size]]
默认值access_log logs/access.log combined;
位置http, server, location
  • 这里的name 和 access_log 的 format是对应的。
语法log_format name [escape=default|json|none] string…;
默认值log_format combined “…”;
位置http
(3)sendfile
  • 用来设置Nginx服务器是否使用sendfile()传输文件,该属性可以大大提高Nginx处理静态资源的性能
语法sendfile on|off;
默认值sendfile off;
位置http、server、location
(4)keepalive_timeout
  • 用来设置长连接的超时时间。
  • 为什么要使用keepalive?我们都知道HTTP是一种无状态协议,客户端向服务端发送一个TCP请求,服务端响应完毕后断开连接。
    如何客户端向服务端发送多个请求,每个请求都需要重新创建一次连接,效率相对来说比较多,使用keepalive模式,可以告诉服务器端在处理完一个请求后保持这个TCP连接的打开状态,若接收到来自这个客户端的其他请求,服务端就会利用这个未被关闭的连接,而不需要重新创建一个新连接,提升效率,但是这个连接也不能一直保持,这样的话,连接如果过多,也会是服务端的性能下降,这个时候就需要我们进行设置其的超时时间。超过这个时间就断开。
语法keepalive_timeout time;
默认值keepalive_timeout 75s;
位置http、server、location
(5)keepalive_requests
  • 用来设置一个keep-alive连接使用的次数。
语法keepalive_requests number;
默认值keepalive_requests 100;
位置http、server、location

5、server块和location块

(1)配置文件
server {listen       80;     # 监听 80 端口,如果更改端口,则外界访问的时候带上对应的端口号,如 8080server_name  localhost;  # 指定可以访问 Nginx 的 IP 地址location / {      root   html;    # 访问资源所对应的目录,这里是 html 目录index  index.html index.htm;    # 访问资源所对应目录下的默认页面,优先级递增}error_page   500 502 503 504 404  /50x.html;  # 访问错误,跳转访问 /50x.html 请求location = /50x.html {   # 访问 /50x.html 请求的处理root   html;    # 访问资源所对应的目录,这里是 html 目录的 50x.html}
}
(2)配置说明
  • **listen 和 server_name:**对应我们的请求地址 http://server_name:listen,如 http://localhost:80
  • **location / :**就是匹配 http://server_name:listen/后面的/,返回页面 /html/index.html
  • **error_page 500 502 503 504 404 /50x.html:**服务器响应码是500 502 503 504 404的时候 跳转访问 http://server_name:listen/50x.html
  • **location = /50x.html:**就是访问 http://server_name:listen/50x.html,返回错误页面/html/50x.html
  • **root html:**代表资源目录/html
  • **index index.html index.htm:**代表默认访问网页index.html、index.htm

http://www.mrgr.cn/news/44789.html

相关文章:

  • 【Java基础】用Scanner类获取控制台输入
  • 深度学习速通系列:如何使用bert和crf进行法律文书脱敏
  • 基于FPGA的多路视频缓存
  • Python酷库之旅-第三方库Pandas(134)
  • OBOO鸥柏丨数字化展厅液晶拼接屏联动展馆触摸屏查询一体机信息化
  • 前端模块化进化史:从全局 function 到 ES Modules
  • Linux终端管理效率:深入学习Screen
  • 【英特尔IA-32架构软件开发者开发手册第3卷:系统编程指南】2001年版翻译,1-2
  • Pr小白也能玩转的神器助你高效剪辑~
  • Python + Selenium,分分钟搭建 Web 自动化测试框架!
  • 杭电合集小tips
  • 国产游戏技术:迈向全球引领者的征途
  • ARM(5)内存管理单元MMU
  • 探索深度学习的奥秘:从理论到实践的奇幻之旅
  • 雪花算法相关面试题
  • LeetCode hot100---双指针专题(C++语言)
  • 笔记整理—linux进程部分(8)线程与进程
  • 知识图谱入门——11:构建动态图谱渲染应用:Vue3与Neo4j的集成与实践
  • 【GitHub】上传文件到GitHub
  • 接口怎么返回文件或数据流,@RequestMapping注解里面的属性项有哪些