Nginx配置详细解析(全)
一、nginx.conf文件结构
(1)共三部分:由全局块、events块、http块组成。http块又包含http全局块、server块;server块由多个location块组成。
(2)一般情况下,高一级块中的指令可以作用于自身所在块和此块包含的所有低级块。
(3)如果某个指令在两个不同层级的块中同时出现,则以较低层块中的配置为准。
1.全局块
(1)从开始到events块之间的一部分内容。
(2)主要配置影响nginx服务器整体运行的配置指令;作用域时nginx服务器全局。
(3)可配置:nginx服务器的用户和组、允许生成的worker process数、nginx进程pid存放路径、日志的存放路径、类型以及配置文件引入等。
2.events块
(1)主要影响nginx服务器与用户的网络连接。
(2)可配置:是否开启对worker process下的网络连接进行序列化、是否允许同时接收多个网络连接、选取哪种事件驱动模型处理连接亲求、每个worker process可以同时支持的最大连接数。
3.http块
(1)包含http全局块、server块、server块中包含location块。
(2)http全局块可配置:文件引入、MIME-Type定义、日志自定义、是否启用sendfile传输文件、连接超时时间、单连接请求数上限等。
4.server块
(1)server块和虚拟主机有密切联系。
(2)虚拟主机,又称虚拟服务器、主机空间、网页空间,它是一种技术。
(3)虚拟主机技术主要应用于HTTP、FTP及EMAIL等多项服务,将一台服务器的某项或全部服务内容 逻辑划分为多个服务单位,对外表现为多个服务器,从而充分利用服务器硬件资源。
(4)从用户角度看,一台虚拟主机和一台独立的硬件主机是完全一样的。
(5)虚拟主机技术使nginx服务器可以在同一台服务器上只运行一组nginx进程,就可以运行多个网站。
(6)server全局块可配置:本虚拟主机的监听配置和本虚拟主机的名称或 IP(域名)配置。
5.location块
(1)严格意义上讲,location块是server块的一个指令。
(2)主要作用是,基于nginx服务器接收到的请求字符串,对虚拟主机名称(域名)之外的字符串进行匹配,对特定的请求进行处理。
(3)可配置:地址定向、数据缓存、应答控制、第三方模块配置等。
二、具体配置
1.配置运行nginx服务器的用户和组
user user group;
#user指定可运行用户
#group 指定可运行用户组
#只有被设置的用户或用户组成员才有权限启动nginx进程
#配置在全局块2.配置允许生成的worker process数
worker_processes number | auto ;
#number 为指定nginx进程最多可以产生的worker process进程数
#auto,设置此值时,nginx进程将自动检测
#配置在全局快3.配置nginx进程pid存放路径
pid /usr/local/nginx/logs/nginx.pid;
#默认路径
#也可放置在/usr/local/nginx/sbin目录下命名为web_nginx
#pid sbin/web_nginx4.配置错误日志的存放路径
(1)全局块、http块、server块都可以对nginx服务器日志进行相关配置。
(2)使用需要在编译时使用--with-debug开启debug开关
(3)错误日志级别,由低到高分为:debug | info | notice | warn | error | crit | alert | emerg ;级别越低出现的次数越高;
error_logs/error.log error;
#指定的文件对于运行nginx进程的用户具有写权限;
#也可使用绝对路径:error_log /usr/locar/nginx/logs/error.log info;
#可在全局快、http块、server块、location块中配置;5.配置文件的引入
(1)将其他的nginx配置或第三方模块的配置引用到当前的主配置文件中。
(2)nginx提供include指令来完成配置文件的引入。
include file;
#file 是要引入的配置文件,它支持相对路径
#新引入进的文件,需要运行nginx进程的用户对其有写权限
#此指令可放在配置文件任意地方6.设置网络连接的序列化
(1)nginx配置中包含accept_mutex ,当其设置为开启时,将会对nginx进程接收连接进行序列化,防止多个进程对连接的争抢。
accept_mutex on|off ;
#on 为开启, off 为关闭;默认开启;
#只能在events块中进行配置7.设置是否允许同时接收多个网络连接
(1)每个nginx服务器的worker_process都有能力接收多个新到达的网络连接。
(2)指令为multi_accept
multi_accept on | off ;
#默认关闭,即每个worker process一次只能接收一个新到达的网络连接
#只能在events块中进行配置8.配置事件驱动模型
(1)nginx服务器提供多种事件驱动模型来处理网络消息。
(2)可以强制指定nginx服务器选择某种事件驱动模型进行消息处理。
(3)指令为use
use method;
#method可选择的内容有:select、poll、kqueue、epoll、rtsing、/deve/poll、eventport;
#epoll特点:选择句柄的时候不是遍历的,是事件响应的,就是句柄上事件来就马上选择出来,不需要便利整个句柄链表,效率高;
#select特点:选择句柄的时候,是遍历所有句柄,也就是说句柄有事件响应,select就需要遍历所有句柄才能获取到那些句柄有事件通知,效率低;
#nginx采用epoll模型,apache采用select模型;
#可以在编译时使用: --with-epoll_module 和 --without-epoll_module设置是否强制编译epoll模块到nginx内核。
#只能在event块配置。9.配置最大连接数
(1)允许每一个worker process同时开启的最大连接数。
worker_connections number;
#number表示所有可能的连接数
#number值不能大于操作系统支持打开的最大文件句柄数量
#只能在events块中配置10.定义MIME-Type
(1)区分html、xml、gif、flash等种类繁多的文本媒体资源,需要使用MIME-Type。
(2)MIME-Type是网络资源的媒体类型。
(3)nginx服务器作为web服务器,必须能够识别前端请求的资源类型。
include mime.types;
#引用mime_types文件
default_type application/octet-stream;
#配置用于处理前端请求的MIME类型
#可以在http块、server块、location块中配置11.自定义服务日志
(1)nginx服务器支持服务日志格式、大小、输出等进行配置。
(2)两个指令:access_log 和 log_format 。
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
#此命令只能在http块中进行配置
# $remote_addr 获取客户端IP地址
# $remote_user 记录客户端用户名称
# $time_local 获取本地时间
# $request 记录请求的url和http协议
# $status 记录返回http请求的状态
# $body_bytes_sent 发送给客户端的字节数,不包括响应头的大小
# $bytes_sent 发送给客户端的总字节数
# $http_referer 记录从哪个页面连接访问过来的
# $http_user_agent 记录客户端浏览器相关信息
# $http_x_forwarded_for 记录http请求端真实ip地址,用于多级代理情况
# $http_x_real_ip 记录访问上级代理服务器的ip地址
# $connection_requests 当前通过一个连接获得的请求数量;
# $request_length 请求的长度,包括请求行,请求头和请求正文;
# $server_name 虚拟主机名称;
# $msec 日志写入时间
# $request_time 请求处理时间,单位为秒,精度毫秒,nginx接收用户请求的第一个字节到发完响应数据的时间,包括:接收请求数据时间、程序响应时间、输入、响应数据时间。
# $upstream_response_time 应用程序响应时间,nginx向后端服务建立连接开始接收完数据后关闭连接为止的总时间。
access_log logs/access.log main;
# 此命令可在http块、server块、location块中进行配置12.配置允许sendfile方式传输文件
(1)可以实现网页加速
sendfile on | off ;
#开启或关闭,可以在http块、server块、location块配置
sendfile_max_chunk size;
#size值如果大于0,nginx进程的每个worker process每次调用sendfile() 传输的数据量最大不能超过这个值;
#size值为0,则无限制
#可以在http块、server块、location块配置13.配置连接超时时间
(1)与用户建会话连接后,nginx服务器可以保持这些连接打开一段时间
keepalive_timeout ;
#连接保持时间为65秒
#可在server块和location块中配置14.单连接请求数上限
(1)用于限制用户通过某一连接向nginx服务器发送请求的次数
keeplive_requests ;
#可在server块和location块中配置;默认设置10015.配置网络监听
listen *: | *:;
#监听所有80端口和8000端口
listen 10.0.0.4:;
#监听具体的ip和具体的端口上的连接
listen 10.0.0.4;
#监听具体ip的所有端口上的连接
listen ;
#监听具体端口上的所有ip连接;相当于 listen *:8000;
listen 10.0.0.4 default_server backlog=;
#设置10.0.0.4的连接请求默认由此虚拟主机处理;
#允许最多1024网络连接同时处于挂起状态16.配置虚拟主机的名称
(1)可以使用正则表达式
(2)可直接配置ip地址
server_name www.baidu.com;
#配置虚拟主机名称,也就是域名
server_name ~^www\.(.+)\.com$;
server_name 192.168.1.111;18.配置补充
Nginx配置详细解析(全)的更多相关文章
- nginx配置详细解析
转自 http://blog.csdn.net/zhongguozhichuang/article/details/528168871.静态HTTP服务器 首先,Nginx是一个HTTP服务器,可以将 ...
- Argo workflow 案例练习和配置详细解析
参数化 - parameters hello-world-parameters.yaml文件解析 apiVersion: argoproj.io/v1alpha1 kind: Workflow met ...
- 2.nginx配置详细说明
Nginx配置详解 nginx概述 nginx是一款自由的.开源的.高性能的HTTP服务器和反向代理服务器:同时也是一个IMAP.POP3.SMTP代理服务器:nginx可以作为一个HTTP服务器进行 ...
- Nginx 配置详细文件
概述 Nginx 是使用一个 master 进程来管理多个 worker 进程提供服务.master 负责管理 worker 进程,而 worker 进程则提供真正的客户服务,worker 进程的数量 ...
- nginx 配置相关解析
nginx模块处理流程一般是这样的: 客户端发送HTTP请求 –> Nginx基于配置文件中的位置选择一个合适的处理模块 ->(如果有)负载均衡模块选择一台后端服务器 –> 处理模块 ...
- Linux系统下ssh的相关配置详细解析
Linux系统下ssh的相关配置进行了详细的分析介绍. ssh是大家常用的登录linux服务器的方式,但是为了安全考虑,有时候我们需要针对ssh做一些特殊处理,本文记录笔者曾经做过的一些修改,供大家参 ...
- Nginx配置详细
######Nginx配置文件nginx.conf中文详解##### #定义Nginx运行的用户和用户组 user www www; #nginx进程数,建议设置为等于CPU总核心数. worker_ ...
- redis.conf配置详细解析
# redis 配置文件示例 # 当你需要为某个配置项指定内存大小的时候,必须要带上单位, # 通常的格式就是 1k 5gb 4m 等酱紫: # # 1k => 1000 bytes # 1kb ...
- Redis 中 redis.conf配置详细解析
########################################### 基本配置 ##################################### # 端口 port 666 ...
随机推荐
- csps模拟测试57
T1 天空龙 大神题,考察多方面知识,例如:快读 附上考试代码,以供后人学习 应某迪要求,我决定多写一点. 正如文化课有知识性失分和非知识性失分一样,OI也同样存在. 但非知识性失分往往比知识性失分更 ...
- 考试T1护花
传送门 这题的提议似乎有什么问题,只要约翰选好了要抓那头牛,他就不会吃草了,站在原地傻等? 这题就是贪心,但在用cmp中比较单位时间吃草数量时,要用double型,不然可能会有点一样... 还有就是主 ...
- UiPath之基础知识(一)
各位小伙伴,大家好.在10月份小U的微信订阅号做了一个投票,主题是UiPath目前已经掌握的程度. 从投票的结果来看,有一半以上的人还是刚刚起步,为了帮助刚刚起步的小伙伴,准备陆续发布一些基础性的内容 ...
- 使用springcloud开发测试问题总结
使用springcloud开发测试 如下描述的问题,没有指明是linux部署的,都是在windows开发环境上部署验证发现的. Issue1配置客户端不使用配置中心 问题描述: 配置客户端使用配置中心 ...
- HTTPS加密流程理解
HTTPS加密流程 由于HTTP的内容在网络上实际是明文传输,并且也没有身份验证之类的安全措施,所以容易遭到挟持与攻击 HTTPS是通过SSL(安全套接层)和TLS(安全传输协议)的组合使用,加密TC ...
- 详解Spring Security的HttpBasic登录验证模式
一.HttpBasic模式的应用场景 HttpBasic登录验证模式是Spring Security实现登录验证最简单的一种方式,也可以说是最简陋的一种方式.它的目的并不是保障登录验证的绝对安全,而是 ...
- SSM整合案例--用户登录
实现用户登录案例,并进行非法拦截 实现当用户未登录时,无法跳转到出登录页面以外的任何页面,拦截用户仍在登陆页面:当用户登录成功即可跳转到其他页面 (1)导入依赖 <!-- https://mvn ...
- 一个excel(20M)就能干趴你的poi,你信吗?
自从上一篇:一个普通类就能干趴你的springboot,你信吗?后,很巧的是这次又发现一个问题,所以有了这篇文章,还是想沿用上篇的”流水帐“的方式查找问题和解决问题.这篇文章主要是因为使用POI导入一 ...
- ThinkPHP6 核心分析:系统服务
什么是系统服务?系统服务是对于程序要用到的类在使用前先进行类的标识的绑定,以便容器能够对其进行解析(通过服务类的 register 方法),还有就是初始化一些参数.注册路由等(不限于这些操作,主要是看 ...
- [LC]35题 Search Insert Position (搜索插入位置)
①英文题目 Given a sorted array and a target value, return the index if the target is found. If not, retu ...