认识nginx基本配置文件

nginx服务器安装完成后,默认安装时自带的配置文件全部存储在conf目录下,并且每个配置文件都还提供了一个以.default结尾的备份文件。其中nginx.conf是nginx默认的主配置文件,所有功能的实现都与此文件的配置相关。

配置文件结构

打开nginx.conf配置文件,从整体结构可以看出,配置文件主要分5个部分,main、events、http、server、location。

main;

events {...}

http {
    server {
        location {...}
    }
}

各块文件结构说明如下:

  • main 主要控制nginx子进程所属的用户和用户组、派生子进程数、错误日志位置与级别、pid位置、子进程优先级、进程对应CPU、进程能够打开的文件描述符数目等
  • events 控制nginx处理连接的方式
  • http nginx处理http请求的主要配置块,大多数配置都在这里面进行
  • server nginx中主机的配置块,可用于配置多个虚拟主机
  • location server中对应目录级别的控制块,可以有多个

对于嵌套块(如http、server、location)中的指令,执行的顺序为从外到内依次执行,内层块中的大部分指令会自动获取外层块指令的值作为默认值,特殊指令除外。

默认的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       2021;
        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的指令由指令名称和参数组成。如 worker_processes  1,worker_processes为指令名称,1为参数。当一个指令中含有多个子指令作为参数时,需要用大括号{ }进行包裹,如events块,且大括号中的每条指令都已分号“;”结尾。

配置文件中,有一个特殊的参数mime.types,表示村塾文件扩展名与文件类型的映射表。

默认配置指令说明

默认配置指令说明
指令 说明
worker_processes 配置nginx的工作进程数,一般设为CPU总核数或者总核数的两倍
worker_connections 配置nginx允许单个进程并发连接的最大请求数
include 用于引入配置文件
default_type 设置默认文件类型
sendfile 默认值为on,表示开启高效文件传输模式
keepalive_timeout 设置默认长连接超时时间(单位:秒)
listen 监听端口,默认监控80端口
server_name 设置主机域名
root 设置主机站点根目录地址
index 指定默认索引文件
error_page 自定义错误页面

设置用户和组

nginx服务是由一个主进程(master process)和多个工作进程(work processes)组成的。其中,主进程以root权限运行,而工作进程在默认情况下以nobody用户运行。原因在于nobody用户是一个不能登录的账号,有一个专用的id,可将每个运行的工作进程隔离出来,这样即使黑客攻击破坏了服务器程序,因其不是root用户,不会影响到其它数据。

因此,为工作进程设置的执行用户权限越低,则服务器安全系数越高。

如何查看当前用户主进程和工作进程的用户权限,使用ps 命令,ps -ef|grep nginx

图中可以看到,nginx默认有一个主进程master process 和一个工作进程worker process,主进程用户为root,工作进程用户为nobody。

nginx提供配置用户和组的功能,针对的就是工作进程worker process,主要用于对某些操作提供权限。例如,配置日志文件时,主进程创建日志文件后,会议工作进程的用户作为文件所有者,从而使工作进程能够将日志写入指定文件中。

自定义错误页

在访问网站过程中,经常会遇见各种各样的错误,如找不到访问的页面则会提示404 not found错误,没有访问权限会提示403 forbidden等。在nginx的主配置文件中,给出了如下的处理方式。

error_page   500 502 503 504  /50x.html;
默认配置文件中,error_page指令用于定义错误页面,500/502/503/504指的都是http错误代码,/50x.html用于表示发生上述指定的任一错误时,都是用网站根目录下的50x.html文件处理。这个是nginx默认的错误页面错误,如果我们想手动设置自己的错误页面,怎么处理呢

为每种类型的错误设置单独的处理方式

# 指定403错误页面为 403.jpg
error_page 403  403.jpg;

# 指定404错误页面为 404.jpg
error_page 404 404.jpg;

将上述配置放到server块中,将对应的静态资源文件放置到nginx安装目录下的html目录下面(nginx/html)即可, 使用nginx -s reload 重启nginx使配置生效。

访问一个不存在的请求url localhost:2021/hhi,正常跳转到我们配置的404.jpg页面

利用在线资源进行处理错误

处理错误的页面除了可以使用本站的资源外,还可以在发生指定错误时跳转到指定的url,利用在线的资源进行处理。

# 处理单个指定错误
error_page 404  http://www.baidu.com;

#处理一系列指定错误
error_page 500 502 503 504 http://www.jd.com;

配置后,重启nginx服务,访问 localhost:2021/baidu ,baidu为一个不存在的服务url,会返回404状态码,并展示在线错误提示信息 http://www.baidu.com

更改响应状态码

用户通过浏览器发送http请求时,服务器处理完成后会返回响应信息,响应信息中的状态码(status)就是服务器在处理用户http请求后的响应状态。例如,用户访问一个不存在的页面,服务器返回的状态码就为404。

在一些nginx限流或其它场景中,须要隐藏服务器返回的真实状态码信息,则可以利用“=”进行自定义设置,具体配置如下。

error_page 404=200 /40x.html;

按照上述设置修改配置文件,再次进行访问。可以看到,发生404错误时候,响应信息中的状态码是自定义的码值200,成功隐藏了实际响应状态码。

猜你喜欢

转载自blog.csdn.net/magi1201/article/details/112799307