nginx(二):基本应用
配置文件详解
event段配置
- worker_connections #;
每个worker进程所能够响应的最大并发请求数量;
nginx最大并发响应数=worker_proceses * worker_connections
注意,nginx的worker_connections也受到worker_rlimit_nofile number的影响;
- use method
method: [epoll|rgsig|select|poll];
定义使用的事件模型;linux只能使用epoll;
- accept_mutex [on|off];
默认on,各worker接收用户的请求的负载均衡锁;启用时,表示用于让多个worker轮流地、序列化地响应新请求;
http配置段
套接字相关配置
- server{.....}指令
用来定义和配置一个虚拟主机
eg:server {
listen PORT
server_name HOSTNAME1 HOSTNAME2 ...;
root /PATH/;
}
- listen
该指令用来指定在server{...}中接收请求的IP和port。
a) 三种格式:
listen address[:port] [default_server] [ssl] [http2 | spdy] [proxy_protocol] [setfib=number] [fastopen=number] [backlog=number] [rcvbuf=size] [sndbuf=size] [accept_filter=filter] [deferred] [bind] [ipv6only=on|off] [reuseport] [so_keepalive=on|off|[keepidle]:[keepintvl]:[keepcnt]];
listen port [default_server] [ssl] [http2 | spdy] [proxy_protocol] [setfib=number] [fastopen=number] [backlog=number] [rcvbuf=size] [sndbuf=size] [accept_filter=filter] [deferred] [bind] [ipv6only=on|off] [reuseport] [so_keepalive=on|off|[keepidle]:[keepintvl]:[keepcnt]];
listen unix:path [default_server] [ssl] [http2 | spdy] [proxy_protocol] [backlog=number] [rcvbuf=size] [sndbuf=size] [accept_filter=filter] [deferred] [bind] [so_keepalive=on|off|[keepidle]:[keepintvl]:[keepcnt]];
b) 参数介绍
default_server:默认虚拟主机。使用场景,在用户请求的主机不能匹配服务器上的所有虚拟主机时,使用default_server提供服务。
ssl:设置使用ssl连接提供服务
backlog:后援队列的长度,一般来说每一个应用程序,在此应用对应的内核缓冲中都有对应的缓冲接收,列入一个服务最大并发响应为100,单同时有200个并发此时使用到后援队列。
unix:path:使用unix套接字文件通信。使用场景本机应用访问本地的nginx服务时。
rcvbuf:接受缓冲区大小
sndbuf:发送缓冲区大小
- server_name NAME1 NAME2 ....;
a) 指明当前server的主机名。主机名支持通配符*,以及正则表达式~。
b) 主机名匹配策略
首先做精确匹配;例如:www.magedu.com
左侧通配符;例如:*.magedu.com
右侧通配符,例如:www.magedu.*
正则表达式,例如:~^.*\.magedu\.com$
default_server
- tcp_nodelay on|off;
默认值:on
对keepalived模式下的连接是否启用TCP_NODELAY选项。基于TCP的连接每次都需要三次握手四次断开的过程,在通信时发送很小的数据包也需要这个过程,这样开销很大,浪费带宽。所以TCP有针对于此的优化,在客户端请求很小的资源时,会有一定延迟,多积累几个请求,一并处理。这会导致在客户端只访问一个小的资源时,会迟迟得不到响应。对于WEB服务器这种影响很致命,所以应该启用tcp_nodelay。
- sendfile on|off;
默认为 off,通常需要启动起来。
在内核中直接封装响应报文,发送给资源请求客户端。
路径相关配置
- root PATH;
设置WEB资源路径映射;用于指名用户请求的uri对应本地文件系统上的文档所在的目录路径。
- location [ = | ~ | ~* | ^~ ] uri { ... }
location @name { ... }
a) 功能:允许根据用户请求的URI来匹配定义的各location,匹配到时,此请求将被相应的location块中的配置所处理;简言之,即用于为需要用到专用配置的uri提供特定配置;
b) 匹配规则
=:URI的精确匹配;一字不差。
^~:URI的左半部分匹配,不区分字符大小写;
~:做正则表达式匹配,区分字符大小写;
~*:做正则表达式匹配,不区分字符大小写;
c) 匹配优先级:精确匹配=、^~、~或~*、不带符号的URL;
d) 使用场景eg:对于用户请求的某一 特定类型的资源,如.txt做压缩处理。
location ~*\.txt${
gzip on;
}
- alias path;
a) 定义路径别名,文档映射的一种机制;只适用于location上下文
b) 辨析root和alias的不同,我们来举例说明。
a.1 访问http://www.A.com/sa/1.jpg
location /sa/ {
alias /web/user/sa/;
}
对应的是/web/user/sa/1.jps。alias其实就是把我们访问的uri,替换为alias指定的uri
a.2 location /sa/ {
root /web/user/sa/;
}
对应的是/web/user/sa/sa/1.jps。root指令指定的是根。
- index file;
定义默认站点主页面。
- error_page code ... [=[response]] uri;
根据http的状态码重定向错误页面;
error_page 404 /404.html
error_page 404 =200 /404.html (以指定的响应状态码进行响应)
- try_files file ... uri;
eg:
location /test {
try_files test1.html test2.html test3.html http://156.0.235.24/index.html
}
尝试查找第1至第N-1个文件,第一个即为返回给请求者的资源;若1至N-1文件都不存在,则跳转至最一个uri(必须不能匹配至当前location,而应该匹配至其它location,否则会导致死循环);
客户端请求相关配置
- keepalive_timeout timeout [header_timeout];
设定keepalive连接的超时时长;0表示禁止长连接;默认为75s;
- keepalive_requests number;
在keepalived连接上所允许请求的最大资源数量;默认为100;
- keepalive_disable none | browser ...;
指明禁止为何种浏览器使用keepalive功能;
注意这个指令并不是进制keepalived功能,而是有些浏览器对此功能支持不好,此指令是为了指名对何种浏览器禁用keepalived功能。
- send_timeout time;
发送响应报文的超时时长,默认为60s; 两次写操作的间隔时长
- client_body_buffer_size size;
接收客户请求报文body的缓冲区大小;默认为16k;超出此指定大小时,其将被移存于client_body_temp_path指令指定的磁盘上;
- client_body_temp_path path [level1 [level2 [level3]]];
设定用于存储客户端请求body的临时存储路径及子目录结构和数量;
client_body_temp_path /var/tmp/client_body 2 1;
2代表使用2个16进制字符来创建一级子目录,共有2^8(256)个。
1代表使用1个16进制字符来在每一个一级子目录下创建2^4(16)个二级级子目录,最多有三级.
对客户端请求的进行限制
- limit_excpet METHOD {...}
限制客户端的请求方法,对指定范围之外的其它的方法进行访问控制;
limit_except GET {
allow 172.16.0.0/16;
deny all;
}
示例:curl -X PUT http://1.1.1.1/download/index.html ,put为GET之外的方法,所以会拒绝访问
- limit_rate speed;
a) 限制客户端每秒钟所能够传输的字节数,默认speed为0表示无限制;
b) eg:
location /download/{
limit_rate 20;
root /web/;
}
c) 验证:weget http://ip:piort/download/1.txt。
文件操作优化相关的配置
- aio on|off|threads[=pool];了解
是否启用异步IO功能,默认关闭。
- directio size|off; 指定直接IO大小,或者关闭直接IO功能。
直接IO是指,直接将数据写入磁盘,而不是先缓存到内存中
- open_file_cache off;
open_file_cache max=N [inactive=time];
打开文件相关信息的缓存
nginx可以缓存以下三种信息:
(1) 文件描述符、文件大小和最近一次的修改时间;
(2) 打开的目录的结构;
(3) 没有找到的或者没有权限操作的文件的相关信息;
max=N表示可缓存的最大条目上限;一旦达到上限,则会使用LRU算法从缓
存中删除最近最少使用的缓存项;
inactive=time:在此处指定的时长内没有被访问过的缓存项是为非活动缓存项,非活动缓存是无效的,因此直接删除;
- open_file_cache_errors on | off;
该配置项决定open_file_cache 是否缓存找不到其路径的文件,或没有权限没有权限访问的文件相关信息;
- open_file_cache_valid time;
每隔多久检查一次缓存中缓存项的有效性;默认为60s;
- open_file_cache_min_uses number;
定义在 open_file_cache max=N [inactive=time]; 中inactive定义的时间内,最少被访问次数,如果访问次数少于number,则被视为非活动项,其不会被缓存
nginx(二):基本应用的更多相关文章
- nginx(二)----ubuntu14.04下启动或重启和关闭nginx
/** * lihaibo * 文章内容都是根据自己工作情况实践得出. *如有错误,请指正 *转载请注明出处 */ 一.启动 /usr/local/nginx/sbin/nginx或者cd /usr/ ...
- 网关中间件-Nginx(二)
网关中间件-Nginx(一) 第一部分我们主要介绍如下几点: 1.nginx的基本概念 2.nginx结合业务场景实现负载均衡 3.常见问题的举例 这一部分主要介绍Nginx中限流,缓存,动静分离,以 ...
- Nginx (二) Nginx的反向代理负载均衡以及日志切割
Nginx是一个高并发,高性能的服务器,可以进行反向代理以及网站的负载均衡.这些功能的运用都在配置文件中,也就是Nginx安装目录下的conf/nginx.conf. nginx.conf 1. 先来 ...
- 快速掌握Nginx(二) —— Nginx的Location和Rewrite
1 location详解 1.location匹配规则 Nginx中location的作用是根据Url来决定怎么处理用户请求(转发请求给其他服务器处理或者查找本地文件进行处理).location支持正 ...
- nginx(二)nginx的安装
下载 nginx官网下载地址 把源码解压缩之后,在终端里运行如下命令: ./configure make make install 默认情况下,Nginx 会被安装在 /usr/local/nginx ...
- Nginx(二) nginx 无法启动
有时候在客户端输入:nginx 但是终端会输出以下,显示启动失败 nginx: [emerg] bind() to 0.0.0.0:8080 failed (48: Address already i ...
- Nginx(二):虚拟主机配置
什么是虚拟主机? 虚拟主机使用的是特殊的软硬件技术,它把一台运行在因特网上的服务器主机分成一台台“虚拟”的主机,每台虚拟主机都可以是一个独立的网站,可以具有独立的域名,具有完整的Intemet服务器功 ...
- 《nginx 二》深入理解nginx的各项配置
Nginx应用场景 1.http服务器.Nginx是一个http服务可以独立提供http服务.可以做网页静态服务器. 2.虚拟主机.可以实现在一台服务器虚拟出多个网站,例如个人网站使用的虚拟机. 3. ...
- Nginx(二) 反向代理&负载均衡
1.反向代理 当我们请求一个网站时,nginx会决定由哪台服务器提供服务,就是反向代理. nginx只做请求的转发,后台有多个tomcat服务器提供服务,nginx的功能就是把请求转发给后面的服务器, ...
- nginx(二)
nginx rewrite Nginx提供的全局变量或自己设置的变量,结合正则表达式和标志位实现url重写以及重定向.rewrite只能放在server{},location{},if{}中,并且 ...
随机推荐
- ESP8266 打造一款物联网产品---搭建环境编译及烧录
一 前记 作为一个在wifi领域耕耘了多年的人,以前一直在外企和大公司做芯片,没有怎么使用过国内的芯片公司做出来的芯片.最近正好有一个项目需要用到一款低成本的wifi芯片,找来找去,发现乐鑫的最适合. ...
- django-表单之模型表单渲染(六)
class StudentForms(forms.ModelForm): formats=[ '%Y-%m-%d', '%m/%d/%Y', ] birthday = forms.DateField( ...
- 【MySQL】MySQL服务启动失解决方法
写在前面的话:前段时间,为了更加流畅愉快的玩PUBG,我在任务管理器中,关闭了mysqld服务.后来我在使用MySQL数据库服务的时候,发现去到MySQL安装目录下双击运行mysqld.exe(数据库 ...
- ArcGIS Engine空间分析之拓扑分析的实现
简单介绍: 拓扑学是一门研究几何图形位置关系的科学. GIS所关注的拓扑主要集中在拓扑关系——存在于地理实体间的拓扑关系. 拓扑关系在GIS中起着描述两个地理实体的相对空间位置的重要作用.它是GIS空 ...
- Knative Serving 健康检查机制分析
作者| 阿里云智能事业群技术专家牛秋霖(冬岛) 导读:从头开发一个Serverless引擎并不是一件容易的事情,今天咱们就从Knative的健康检查说起.通过健康检查这一个点来看看Serverles ...
- 学习笔记59_python字符串处理
python中,字符串可以使用 '或"括起来 1. 要想写成 "hellow "aaaa" ",在python中,可以"hellow ' ...
- iOS:探究视图控制器的转场动画
一.介绍 在iOS开发中,转场动画的使用无处不见,不只是我们自己更多的使用UIViewblock动画实现一个转场动画,其实,在我们实现VC控制器跳转的时候都是转场动画的实现,例如标签栏控制器的切换.模 ...
- CSPS模拟 64
觉悟试炼场 暴力没打满有点遗憾 T2莫队没想到有点遗憾 T1 Trade 反悔贪心? 赛时猜了个解法,结果过样例过对拍就交了. 贪心依据:如果目前买入a有机会在b卖出赚钱,则a在任何最优方案中都被购买 ...
- vue中组件的data为什么是一个函数
1. 前言 在学习vue的时候,一直纳闷一件事:组件的data数据为什么必须要以函数返回的形式,为什么不是简单的对象形式呢?遂带着问题去翻官方文档,文档中自然也写明了这么做的原因,本篇博文以官方文档给 ...
- P中值选址问题的整数规划求解
P中值选址问题的整数规划求解 一 .P-中值问题 p-中值选址问题是一个常见的选址问题. 问题是给定I个需求结点和J个待选设施地点, 要求选择p个地点建立设施, 使得运输成本最低. 下面是个英文的问题 ...