美文网首页
Nginx配置文件(.conf)详解

Nginx配置文件(.conf)详解

作者: Zhang21 | 来源:发表于2017-04-07 16:53 被阅读0次

Nginx配置文件主要分成四部分:main(全局设置)、server(主机设置)、upstream(上游服务器设置,主要为反向代理、负载均衡相关配置)和 location(URL匹配特定位置后的设置),每部分包含若干个指令。

Nginx目录结构

main 部分设置的指令将影响其它所有部分的设置;

server 部分的指令主要用于指定虚拟主机域名、IP和端口;

虚拟主机,在Web服务里就是一个独立的网站站点,这个站点对应独立的域名(也可以是IP或端口);

Nginx中使用一个 server { } 标签来标示一个虚拟主机;

一个Web服务里可以有多个虚拟主机标签对,即可以同时支持多可虚拟主机站点;

有基于域名的虚拟主机、基于端口的虚拟主机、基于IP的虚拟主机;

虚拟主机还可有多个别名;

upstream 的指令用于设置一系列的后端服务器,设置反向代理及后端服务器的负载均衡;

location 部分用于匹配网页位置(比如,根目录“/”,“/images”,等等)。

他们之间的关系式:server继承main,location继承server;upstream既不会继承指令也不会被继承。它有自己的特殊指令,不需要在其他地方的应用。

......         #全局块

events {    #events块

}

http {    #http块

        server {    #server块

                location {    #location块

                               }

               location {

                             }

                    }

upstream {

}

         server {

                    }

}

全局块:配置影响Nginx全局的指令。一般有运行Nginx服务器的用户组,Nginx进程pid存放路径,日志存放路径,配置文件引入,允许生成Worker Process数等。

events块:配置影响Nginx服务器或与用户的网络连接。有每个进程的最大连接数,选取哪种事件驱动模型处理连接请求,是否允许同时接受多个网络连接,开启多个网络连接序列化等。

http块:可以嵌套多个server,配置代理,缓存,日志定义等绝大多数功能和第三方模块的配置。如文件引入,mime-type定义,日志自定义,是否使用sendfile传输文件,链接超时时间,单连接请求数等。

Nginx http模块功能汇总

server块:配置虚拟主机的相关参数,一个http中可以有多个server。

location块:配置请求的路由,以及各种页面的处理情况。

我的虚拟机上面的默认配置如下如所示:

nginx.conf

main全局配置:

nginx在运行时与具体业务功能(比如http服务或者email服务代理)无关的一些参数,比如工作进程数,运行的身份等。

user  nginx;    #配置用户或者组

worker_processes;    #允许生成的进程数

error_log;    #日志文件目录

pid;    #指定Nginx进程文件的存放位置

events块:

配置影响nginx服务器或与用户的网络连接。有每个进程的最大连接数,选取哪种事件驱动模型处理连接请求,是否允许同时接受多个网路连接,开启多个网络连接序列化等。

worker_connections;    #最大连接数

use  epoll;    #事件驱动模型

http块:

与提供http服务相关的一些配置参数。例如:是否使用keepalive啊,是否使用gzip进行压缩等。

default_type;    #默认文件类型

log_format;    #自定义格式

1.$remote_addr 与$http_x_forwarded_for 用以记录客户端的ip地址;

 2.$remote_user :用来记录客户端用户名称;

 3.$time_local : 用来记录访问时间与时区;

4.$request : 用来记录请求的url与http协议;

5.$status : 用来记录请求状态;成功是200;

6.$body_bytes_s ent :记录发送给客户端文件主体内容大小;

7.$http_referer :用来记录从那个页面链接访问过来的; 

8.$http_user_agent :记录客户端浏览器的相关信息;

Nginx日志变量

所有日志段以空格分割,一行可以纪录多个;

Nginx访问日志轮询切割:

默认情况Nginx会把所有的访问日志生成到一个指定的访问日志文件access.log里,但这样一来,时间长了就会导致日志个头很大,不利用日志的分析和处理。因此,有必要对Nginx日志,按天或小时进行切割,使其分成不同的文件保存;

现在Nginx是自动切割日志;


sendfile on;

开启高效文件传输模式,sendfile指令指定nginx是否调用sendfile函数来输出文件,减少用户空间到内核空间的上下文切换。对于普通应用设为 on,如果用来进行下载等应用磁盘IO重负载应用,可设置为off,以平衡磁盘与网络I/O处理速度,降低系统的负载。

keepalive_timeout 65;

长连接超时时间,单位是秒,这个参数很敏感,涉及浏览器的种类、后端服务器的超时设置、操作系统的设置,可以另外起一片文章了。长连接请求大量小文件的时候,可以减少重建连接的开销,但假如有大文件上传,65s内没上传完成会导致失败。如果设置时间过长,用户又多,长时间保持连接会占用大量资源。

send_timeout;

用于指定响应客户端的超时时间。这个超时仅限于两个连接活动之间的时间,如果超过这个时间,客户端没有任何活动,Nginx将会关闭连接。

client_max_body_size 10m;

允许客户端请求的最大单文件字节数。如果有上传较大文件,请设置它的限制值

client_body_buffer_size 128k;

缓冲区代理缓冲用户端请求的最大字节数

gzip on;    #开启gzip压缩输出,减少网络传输。

include 文件映射

server块默认配置

server块:

http服务上支持若干虚拟主机。每个虚拟主机一个对应的server配置项,配置项里面包含该虚拟主机相关的配置。在提供mail服务的代理时,也可以建立若干server。每个server通过监听地址或端口来区分。

listen;    #监听端口,默认80

server_name;    #服务器名,如localhost、www.xxxxx.com,可以通过正则匹配

location块:

http服务中,某些特定的URL对应的一系列配置项。

root  /dir/path/file;    #定义服务器的默认网站根目录位置,如果location的url匹配的是子目录或文件,root 没什么作用,一般放在server指令里面或 / 下

index  index.html  index.html;    #定义路径下默认访问的文件名,一般跟着root放

proxy_pass http://127.0.0.1;    #请求转向127.0.0.1定义的服务器列表,即反向代理,对应upstream负载均衡器,还可以是 http://ip:port

其他:

访问控制 allow/deny

allow  111.111.111.111;

allow  192.168.1.0/24;

deny  all;

提示:在启动或重启服务前检查Nginx语法非常重要,可以防止因配置错误导致网站重启或重新加载配置等对用户的影响。

nginx  -t

每次更改Nginx的配置都需要管理员重新加载,是配置生效,这是因为Nginx在启动时已经把所有的配置信息都加在到内存中了,若更改了磁盘上的 .conf 配置文件,需要把新的配置重新加载到内存中,使其生效。这样设计的目的是大服务提升Nginx服务的访问性能。

相关文章

网友评论

      本文标题:Nginx配置文件(.conf)详解

      本文链接:https://www.haomeiwen.com/subject/gtjhattx.html