nginx.config详解

程序员成长之旅 · 程序员成长之旅/Linux学习 · 2770 字

nginx.conf文件的结构

首先介绍文件的架构,整个conf文件分为 全局块、events块、http块、server块、location块。每个块有每个块的作用域,越外层的块作用域就包含内部块的作用域,如全局块作用域就包含events块、http块、server块和location块。而文件中的“#”代表注析,#后的代码是不会有效果的。修改nginx.conf后是必须重启nginx才会生效。这些要注意。  下面就看文件架构:

...                 #全局块

event{              #events块
    ...
}

http{               #http块

    server{         #server块
        ...         #server全局块

        location{   #location块
            ...
        }

        location{   #location块
            ...
        }
    }

    server{         #server块
        ...
    }
    ...             #http全局块
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25

大致的nginx.conf文件如上,而下面讲解各块的作用。

名称 说明
全局块 全局块是默认配置文件从开始到events块之间的一部分内容,主要是设置一些影响Nginx服务器整体运行的配置指令。因此,这些指令的作用域是Nginx服务器全局。作用:配置Ngnix服务器的用户组、worker process数、Nginx进程PID存放路径、日志的存放路径和类型已经配置文件引入等。
events块 events块的指令主要影响Nginx服务器与用户的网络链接。 作用:是否开启多worker process下的网络连接进行序列化,是否允许同时接收多个网络连接,选取那种事件驱动模型处连接请求,每个worker process可以同时支持的最大连接数等。
http块 http块是Nginx服务器配置中的重要部分,代理、缓存和日志定义等绝大多数的功能和第三方模块的配置都可以放在这模块中。作用包括:文件引入、MIME-Type定义、日志自定义、是否使用sendfile传输文件、连接超时时间、单连接请求数上限等。
server块 server块,虚拟主机(虚拟服务器)。作用:使得Nginx服务器可以在同一台服务器上至运行一组Nginx进程,就可以运行多个网站。
location块 location块是server块的一个指令。作用:基于Nginx服务器接收到的请求字符串,虚拟主机名称(ip,域名)、url匹配,对特定请求进行处理。

指令说明

日常我们使用到的配置如下,这些都是常用的指令。

#### 全局块 开始 ####
user nobody nobody;                 #配置允许运行nginx服务器的用户和用户组
worker_processes 3;                 #配置允许nginx进程生产的worker process数
error_log logs/error.log;           #配置nginx服务器运行对错误日志存放路径
pid nginx.pid;                      #配置nginx服务器运行时的pid文件存放路径和名称
#### 全局块 结束 ####

#### events块 开始 ####
events
{
    ues epoll;                      #配置事件驱动模型
    worker_connections 1024;        #配置最大连接数
}
#### events块 结束 ####

#### http块 开始 ####
http
{
    include mime.types;             #定义MIME-Type
    default_type application/octet-stream;   
    sendfile on;                   #配置允许使用sendfile方式传输
    keepalive_timeout 65;           #配置连接超时时间
    log_format access.log '$remote_addr-[$time_local]-"$request"-"$http_user_agent"';     #配置请求处理日志的格式

    #### server块 开始 ####
    ##配置虚拟主机 myServerl
    server
    {
        listen  8081;              #配置监听端口和主机名称
        server_name myServer1;

        access_log  /myweb/server1/logaccess.log;#配置请求处理日志存放路径
        error_page 404  /404.html;     #配置错误页面

        location  /server1/location1 { #配置处理/server1/location1 请求的location
            root  /myweb;
            index index.svr1-loc1.htm;
        }

        location  /server1/location2 { #配置处理/server1/location2 请求的location
            root  /myweb;
            index index.svr1-loc2.htm;
        }
    }

    server
    {
        listen  8082;
        server_name  192.168.1.3;
        access_log  /myweb/server2/log/access.log;
        error_log  404  /404.html;    #对错误页面404.html 做了定向配置
        location  /server2/location1 
        {
            root  /myweb;
            index index.svr2-loc1.htm;
        }

        location  /svr2/loc2 
        {
            alias  /myweb/server2/location2;       #对location的URL进行更改
            index index.svr2-loc1.htm;
        }

        location = /404.html                  #配置错误页面转向
        {
            root  /myweb/;
            index 404.html;
        }
    }
    #### server块 结束 ####
}
### http块 结束 ####
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
指令 说明
user user [group] 用于配置允许Nginx服务器用户(组)。user,指可以运行Nginx服务器的用户。group,指可以运行Nginx服务器的用户组。通常设置:user nobody nobody
worker process number auto
pid file Nginx进程作为系统的守护进程运行,我们需要在某文件中保存当前运行程序的主进程号。Nginx支持对它的存放路径进行自定义配置,指令时pid。如pid sbin/web_nginx
error_log file 配置错误日志存放路径,全局块、http块和server块中都可以对日志进行相关配置。如:error_log logs/error.log error
incloud file 配置文件的引入,引入其他Nginx配置或者第三方模块的配置。如:include mime.types
accept_mutex on off
accept_accept on off
use method 事件驱动模型选择,强制Nginx服务器选择那种事件驱动模型进行消息处理。method:select、poll、kqueue、epoll、rtsig、/dev/poll 以及eventport。此指令智能在events块中配置。
woker_connections number 配置最大连接数,设置允许每一个worker process同时开启的最大连接数。默认为512。只能在events块中配置。
default_type mime-type 在浏览器中,显示内容HTML、XML、GIF和Flash等种类繁多的文本、媒体等资源,浏览器为了区分这些资源,需要使用MIME Type。MIME Type是网络资源的媒体类型。Nginx服务器作为Web服务器,必须能够识别前端请求的资源类型。配置如:include mime.types; default_type application/octet-stream;在http块、server块或者location块进行配置。
access_log path[format[buffer=size]] 服务日志定义,此处定义所指日志与常规的不同,记录Nginx服务器提供服务过程应答前端请求的日志。可以对服务日志进行格式定义。配置如:log_format exampleLog ‘remoteaddr−[remoteaddr−[time_local] requestrequeststatus bodybytessentbodybytessenthttp_referer $http_user_agent’输出:192.168.1.102 - [31/Oct/2011:20:41:29 +0800] “GET/HTTP/1.1” 200 151 “-” “Mozilla/5.0(compatible;MSIE 10.0;Window NT 6.2; Trident/6.0)”
sendfile on off
sendfile_max_chunk size worker process每次调用sendfile传输的数据量最大不能超过这个值。默认为0。在http块、server块或location块中配置。和sendfile指令一起使用。
keepalive_timeout timeout[header_timeout] 配置连接超时时间,与用户建立会话连接后,Nginx服务器保持这些连接打开一段时间。此指令设置时间。timeout,服务器端对连接的保持时间。默认值为75s。header_tiemout,可选项,在应答报文头部Keep-Alive域设置超时时间。该指令被Mozilla或者Konqueror识别。配置如:keepalive_timeout 120s 100s;此指令在http块、server块或location块中配置。
keepalive_requests number 单连接请求数上限,用户端和服务端建立连接后,用于限制用户通过某一连接向Nginx服务器发送请求的次数。在server块和location块中,默认设置100。
listen address[:port][default_server][setfib=number][backlog=number][rcvbuf=size][sndbuf=size][deferred] 配置监听使用指令listen。address,IP地址,如果有IPv6的地址,需要使用中括号“[]”括起来,比如[fe80::1]等port,端口号,如果只定义IP地址没有定义端口号,就使用80端口。path,socket文件路径,如/var/run/nginx.sock等default_server,标识符,将此虚拟主机设置为address:port的默认主机。配置如:listen :80
server_name name… 基于名称的虚拟主机配置,主机指server块虚拟主机。设置主机名称并配置号DNS,用户就可以使用这个名词向此虚拟主机请求了。配置如:server_name myserver.com www.myserver.com
location [ = ~
root path 配置请求的根目录,在服务端指定目录中请求资源。
alias path 更改location的URL,使用alias指令改变location接收的URL的请求路径。配置如:alias /locationtest1/other/$1
index file … 设置网站的默认首页,用于index设置为默认首页。配置如:index index.$1.html index.my.html index.html
error_page code … [=[response]] url 设置网站的错误页面,如果服务端错误需要错误页面来显示。这个设置错误页面。配置如:error_page 404 404/html
allow address CIDR
auth_basic string off
auth_basic_user_file file 用语设置包含用户名和密码信息的文件路径。file为密码文件的绝对路径。file配置如:name1:password1

结论

通过指令的实例和指令的详细说明,可以学会看nginx.conf。nginx虽然容易使用,但想使用的好。需要了解指令的用法。最后才可以实现高性能服务器。

原地址:https://blog.csdn.net/rth362147773/article/details/78837971