Nginx配置文件(.conf)详解

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服务的访问性能。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,560评论 4 361
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,104评论 1 291
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,297评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,869评论 0 204
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,275评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,563评论 1 216
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,833评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,543评论 0 197
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,245评论 1 241
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,512评论 2 244
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,011评论 1 258
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,359评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,006评论 3 235
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,062评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,825评论 0 194
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,590评论 2 273
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,501评论 2 268

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,099评论 18 139
  • 配置运行Nginx服务器用户(组) 用于配置运行Nginx服务器用户(组)的指令是user,其语法格式为: use...
    吃瓜的东阅读 4,405评论 0 41
  • 上一篇《WEB请求处理一:浏览器请求发起处理》,我们讲述了浏览器端请求发起过程,通过DNS域名解析服务器IP,并建...
    七寸知架构阅读 80,526评论 21 356
  • 第一章 Nginx简介 Nginx是什么 没有听过Nginx?那么一定听过它的“同行”Apache吧!Ngi...
    JokerW阅读 32,457评论 24 1,003
  • Nginx简介 解决基于进程模型产生的C10K问题,请求时即使无状态连接如web服务都无法达到并发响应量级一万的现...
    魏镇坪阅读 1,958评论 0 9