2-4-运维必备核心技能-nginx实现web服务配置

定义客户端请求的相关配置
12、keepalive_timeout timeout [header_timeout]
设定保持连接的超时时长,0表示禁止长连接,默认为75s
13、keepalive_requests number
在一次长连接上所允许请求的资源的最大数量,默认为100,如果第12项设置为0,此项没有用处
14、keepalive_disable none | browser ...
对哪种浏览器禁用长连接,现在绝大多数浏览器都支持,但可以设置禁用(防止爬虫)
15、send_timeout time---客户端断开连接了,服务端要重试的发送,指这个时间
向客户端发送响应报文的超时时长,此处,是指两次写操作之间的间隔时长
对应的就应该有resolver_timeout---主机名解析时用到的
16、client_body_buffer_size size---如果nginx允许上传文件或post方法,请求报文中才有body,这个大小根据网站的类型调整(论坛要大,电商不动)
用于接收客户端请求报文的body部分的缓冲区大小;默认为16k;超出此大小时,其将被暂存到磁盘上的由client_body_temp_path指令所定义的位置(发起磁盘IO,这会影响性能)
17、client_body_temp_path path [level1 [level2 [level3]]]
设定用于存储客户端请求报文的body部分的临时存储路径及子目录结构和数量---把用户的url做一次hash计算,然后根据hash值取hash值的几位(1到2位)创建多少个子目录,从左到右或从右到左,创建一级二级三级子目录
16进制的数字
client_body_temp_path /var/tmp/client_body 2 1 1
1:表示用一位16进制数字表示一级子目录:0-f
2:表示用2位16进制数字表示二级子目录:00-ff
2:表示用2位16进制数字表示三级子目录:00-ff
echo http://www.ilinux.io/index.html | md5sum结果是1182a。。。。。。hash值
对客户端进行限制的相关配置:
18、limit_rate rate
限制响应给客户端的传输速率,单位是bytes/second,0表示无限制
登陆的用户一个速率,没登陆的另外一个速率
19、limit_except method ... {...}---互联网通常只允许get head post方法,其他的太危险了
限制对指定的请求方法之外的其它方法的使用客户端

limit_except GET {---除了get方法以外的方法,只允许,其他都不允许
allow 192.168.1.0/24;
deny all;
}
文件操作优化的配置
20、aio on | off |threads[=pool];---可以使用多少个线程池,一般设置为on
是否启用aio功能;
21、directio size | off;---不是关键选项,使用默认值即可,不用设置
在linux主机启用O_DIRECT标记,此处意味文件大于等于给定的大小时使用,例如directio 4m;
22、open_file_cache off;---几乎所有缓存都是用LRU,最近最少使用
open_file_cache max=N [inactive=time];
nginx可以缓存以下三种信息:---缓存的是元数据信息而不是文件内容
(1)文件的描述符,文件大小和最近一次的修改时间
(2)打开的目录结构
(3)没有找到的或者没有权限访问的文件的相关信息
max=N:可缓存的缓存项上限;达到上限后会使用LRU算法(最近最少使用)实现缓存管理---这里需要缓存到内存中,占用内存空间,小心设置
inactive=time:缓存项的非活动时长,在此处指定的时长内未被命中的或命中的次数少于open_file_cache_min_uses指令所指定的次数的缓存项即为非活动项
23、open_file_cache_valid time;
缓存项有效性的检查频率;默认为60s
24、open_file_cache_min_uses number;
在open_file_cache指令的inactive参数指定的时长内,至少应该被命中多少次方可被归类为活动项
25、open_file_cache_errors on | off
是否缓存查找时发生错误的文件一类的信息;

ngx_http_access_module模块:
实现基于IP的访问控制功能
26、allow address | CIDR |unix: | all;
27、deny address | CIDR |unix: | all;
ngx_http_auth_basic_module模块
实现基于用户的访问控制,使用basic机制进行用户认证;
28、auth_basic string | off
29、auth_basic_user_file file;
location /admin/ {
alias /webapps/app1/data/;
auth_basic "Admin Area";
auth_basic_user_file /etc/nginx/.ngxpasswd;
}
注意:htpasswd命令由httpd-tools所提供;yum install -y httpd-tools
htpasswd -c -m /etc/nginx/.ngxpasswd tom---会弹出输入密码,用户名tom
配置文件中:
location ~* ^/(admin|login) {---以admin或login开头做认证
auth_basic "admin area or login url";
auth_basic_user_file /etc/nginx/.ngxpasswd;---用这个文件做认证
}
mkdir /data/nginx/vhost1/admin
vim /data/nginx/vhost1/admin/index.html
访问这个路径,客户端会弹出用户验证的消息,服务器提示的就是admin area or login url32:00

ngx_http_stub_status_module模块---nginx内建的状态页
用于输出nginx的基本状态信息;
Active connections:291
server accepts handled requests
16630948 16630948 31070465
Reading:6 Writing:179 Waiting:106

Active connections:活动状态的连接数;
accepts:已经接受的客户端请求的总数
handled:已经处理完成的客户端请求的总数;
requests:客户端发来的总的请求数;
Reading:处于读取客户端请求报文首部的连接的连接数
Writing:处于向客户端发送响应报文过程中的连接数;
Waiting:处于等待客户端口、发出请求的空闲连接数;

30、stub_status:---注意,这是服务器内部信息,不能随便访问,可以做auth-basic认证
配置示例:
location /basic_status {
stub_status;
}

ngx_http_log_module模块
he ngx_http_log_module module writes request logs in the specified format.

31、log_format name string ...;
string可以使用nginx核心模块及其它模块内嵌的变量;
课外作业:为nginx定义使用类似于httpd的combined格式的访问日志;
32、access_log path [format[buffer=size][gzip[=level]][flush=time][if=condition]];---可以定义在http上下文中
access_log off;---关闭访问日志,有些监控系统采集可以关闭
访问日志文件路径,格式及相关的缓冲的配置;
buffer=size---服务器并发量很大,可以把日志缓存到内存中,空闲时再写入磁盘
flush=time
gzip:日志文件可以压缩存放,但是压缩会浪费cpu时钟周期,一般不压缩
33、open_log_file_cache max=N[inactive=time][min_uses=N][valid=time];
open_log_file_cache off;---一旦超出利用LRU
缓存和缓冲的区别:缓存一般为了加速读,缓冲为了加速写操作
缓存各日志文件相关的元数据信息;

max:缓存的最大文件描述符数量;
min_uses:在inactive指定的时长内访问大于等于此值方可被当作活动项;
inactive:非活动时长
valid:验证缓存中各缓存项是否为活动项的时间间隔;

ngx_http_gzip_module:---浪费的cpu时间可以用传输时间的减小弥补,最终节约了带宽
The nbx_http_gzip_module module is a filter that compresses responses using the "gzip" method.This often helps to reduce the size of transmitted data by half or even more.

1、gzip on | off;
Enables or disables gzipping of responses.
2、gzip_comp_level level;---默认是1
Sets a gzip compression level of a response.Acceptable values are in the range from 1 to 9.
3、gzip_ddisable regex ...;---哪些浏览器不支持压缩可以禁用
Disables gzipping of responses for requests with "User-Agent" header fields matching any of the specified regular expressions.
4、gzip_min_length length;---默认 20
启用压缩功能的响应报文大小阈值;
5、gzip_buffers number size;
gzip_buffer 32 4k | 16 8k;
支持实现压缩功能时为其配置的缓冲区数量及每个缓存区的大小;多少段,每段的大小
6、gzip_proxied off | expired | no-cache | no-store | private | no_last_modified | no_etag | auth | any ...;
nginx作为代理服务器接收到从被代理服务器发送的响应报文后,在何种条件下启用压缩功能的;
off:对代理的请求不启用
no-cache,no-store,private:表示从被代理服务器收到的响应报文首部的Cache-Control的值为此三者中任何一个,则启用压缩功能;
7、gzip_types mime-type ...;
压缩过滤器,仅对此处设定的MIME类型的内容启用压缩功能;
示例:
gzip on;
gzip_proxy any;
gzip_types text/xml text/css application/javascript;

8、gzip_vary on | off;
要不要在响应报文中如果出现gzip,启用一个Vary:Accept-Encoding可以接收各种各样的格式

注意:一般只需要gzip on,gzip_comp_level,gzip_types这三个选项就可以了,如果有代理还要gzip_proxied

原文地址:https://blog.51cto.com/13852573/2364137

时间: 2024-11-09 10:36:20

2-4-运维必备核心技能-nginx实现web服务配置的相关文章

2-2-运维必备核心技能-nginx基础入门

Nginx的程序架构:master/worker一个master进程:---主进程负载加载和分析配置文件.管理worker进程.平滑升级一个或多个worker进程---子进程处理并响应用户请求缓存相关的进程:cache loader:载入缓存对象cache manager:管理缓存对象特性:异步.事件驱动和非阻塞并发请求处理:通过kevent.epoll.select./dev/poll文件io:高级io sendfile,异步,mmapnginx模块:高度模块化,但其模块早期不支持dso机制(

2-3-运维必备核心技能-nginx配置文件全面讲解

aio这种逻辑一般只能在磁盘io上实现绑定8颗cpu中的后4颗,从0开始掩码为4.0001 00005.0010 00006.0100 00007.1000 0000看哪个进程运行在哪个cpu上ps axo comm,pid,psr | grep nginxwatch -n.5 'ps axo comm,pid,psr | grep nginx'动态观测0.5秒这个命令的执行结果没有人访问,所以可能不会变化yum install -y httpd-toolsab -n 10000 -c 100

2-5-运维必备核心技能-nginx实现模块化应用实战

nginx如何配置称为https服务器ngx_http_ssl_module模块:---ssl功能仅能够基于ip地址来实现,如果只有一个ip却有多个server,只能有一个是基于ssl的ssl的交互过程:1.三次握手2.服务端发送证书给客户端,并发送支持的加密方式等等3.客户端接收证书,选择验证方式,验证后选择一次性会话密钥,用对方的公钥加密传给服务器,完成密钥交换4.服务端就可以使用这个密码来加密客户端请求的url资源1.ssl on | off;Enables the HTTPS proto

[运维] 第六篇:告警是数据中心运维的核心驱动力!

告警事件是数据中心运维的核心驱动力,我们做的所有运维工作都是要减少业务出现故障的概率,提供更高的业务可用性.不知道大家是否认可这句话?还是看这张图,通过这张图,把这个问题讲透:        作为综合事件管理平台自身,需要有这样几个部件:1 丰富事件接口.作为数据中心的核心驱动引擎,需要有丰富的事件接口可以将各种IT事件,甚至非IT事件接收过来,常见的接口有rest.web service.snmp.soap.socket.xml.文本.jdbc等.因为面对的对象不同,所以能够使用的方式是完全不

linux故障定位,运维必备

linux故障定位,运维必备 背景有时候会遇到一些疑难杂症,并且监控插件并不能一眼立马发现问题的根源.这时候就需要登录服务器进一步深入分析问题的根源.那么分析问题需要有一定的技术经验积累,并且有些问题涉及到的领域非常广,才能定位到问题.所以,分析问题和踩坑是非常锻炼一个人的成长和提升自我能力.如果我们有一套好的分析工具,那将是事半功倍,能够帮助大家快速定位问题,节省大家很多时间做更深入的事情. 说明本篇文章主要介绍各种问题定位的工具以及会结合案例分析问题. 分析问题的方法论套用5W2H方法,可以

02. SpringCloud实战项目-快速搭建Linux环境-运维必备

SpringCloud实战项目全套学习教程连载中 PassJava 学习教程 简介 PassJava-Learning项目是PassJava(佳必过)项目的学习教程.对架构.业务.技术要点进行讲解. PassJava 是一款Java面试刷题的开源系统,可以用零碎时间利用小程序查看常见面试题,夯实Java基础. PassJava 项目可以教会你如何搭建SpringBoot项目,Spring Cloud项目 采用流行的技术,如 SpringBoot.MyBatis.Redis. MySql. Mon

自动化运维系列之SaltStack批量部署Apache服务

自动化运维系列之SaltStack批量部署Apache服务 saltstack原理 SalStack由master和minion构成,master是服务端,表示一台服务器:minion是客户端,表示多台服务器.在Master上发送命令给符合条件的minion,Minion就会执行相应的命令.Master和Minion之间是通过ZeroMQ(消息队列)进行通信的. SaltStack的Master端的监听端口是4505和4506,4505端口是Master和Minion认证通信端口:4506端口是

Zabbix 使用nginx做web服务

zabbix 使用nginx做web服务 逻辑图: yum  nginx装好,默认的default.conf文件直接backup掉,新建一个zabbx.conf文件, #如果有报错看下nginx_log 日志排错,zabbix3.0.4nginx转发依赖./php-fpm -v PHP 5.6.25,之前代理发现没用 报错也不是配置错误,查看官网发现是php-fpm版本问题. 10.10.254.25 zabbix_server服务器nginx配置: $ cat zabbix.conf  ser

使用Nginx提供web服务

Nginx是由俄罗斯人开发的HTTP服务器,功能很多,本文主要使用其提供web服务.安装方式为编译安装.本文使用的程序版本及系统环境如下: 操作系统:centos6.6 x86_64 Nginx:nginx-1.8.0 一.编译安装Nginx  需要先安装包组"Development tools"和"Server Platform Development".另外因为默认的编译选项里支持URL重写功能,所以要安装pcre-devel. groupadd -r ngin