Nginx系列--04HTTP常用指令及常用模块

前言

本篇总结Nginx中HTTP常用指令与一些常用的模块

一. HTTP协议常用指令


1. keepalive_timeout

语法 :
keepalive_timeout timeout [header_timeout];
解释 :
当第一个参数timeout的值不为零时,开启长连接。什么是长连接?我们知道应用层的HTTP协议使用的四层协议是tcp连接,而tcp连接非常重量级,如果用户请求一次资源就经历一次tcp的三次握手和四次挥手,伤不起呀!所以最好是能够重用TCP连接,用户请求一次资源后TCP连接不断开,而是等待用户的再一次请求。这种设计是非常合理的,因为一般的网站首页都是有好几十个请求的。我们以新浪官网为例

那长连接什么时候断开呢?他可以从两个维度进行判断,一个时间(timeout指定),一个请求的链接数(keepalive_requests指定)。那一个维度达到就断开tcp连接。
长连接设置的时间并非越长越好,因为有可能用户一次没有这么多请求,长期保持一个空闲的链接也是一种资源的浪费。那长连接保持多长时间最佳?答案是,没有最佳,一般来说timeout的默认值75秒相对大一点,15秒可以作为一个参考值。
timeout: 这个值Nginx默认为75s,这个为长连接在服务端保持时间。[header_timeout]将会在响应报文中设置keep-alive=header_timeout,他设置的是客户端保持长连接的时间,超过这个时间客户端将会断开连接,这个参数是可选的。
可在http,sever,location上下文中使用
接下来我们测试一下长连接
示例1--长连接开启:
配置文件/etc/nginx/nginx.conf

http {
    server {
    listen 80;
    server_name node1;
        root /var/www/vhost/;
    index index.html;
    keepalive_timeout 600s;
    }
}

长连接保持的是十分钟。

示例2--关闭长连接
配置文件/etc/nginx/nginx.conf

http {
    server {
    listen 80;
    server_name node1;
        root /var/www/vhost/;
    index index.html;
    keepalive_timeout 0s;
    }
}

修改了配置文件,记得重载哟

__示例3--header_timeout__

http {
    server {
            listen: 80;
                server_name node1;
                root /var/www/vhost;
                index index.html;
                keepalive_timeout 10s 5s;
        }
}

2. keepalive_requests

语法
keepalive_requests number
解释
在一次长连接中最多能够请求的此时,达到此值服务器端将会断开连接。
可在http,server, location上下文中使用。
示例

http {
    server {
            listen  80;
                server_name node1;
                root /var/www/vhost;
                index index.html
                keepalive_timeout 600s;
                keepavlie_requests 2;
        }
}

3. keepalive_disabled

语法
keepalive_disable none | browser ...;
解释
指明那些浏览器不开启长连接,像早期的ie 6浏览器就不支持长连接。默认msie6不开启长连接。对于这些不支持长连接的浏览器,server端开启长连接就没有必要了,所以要将不支持的浏览器去除。
可在http,server,location上下文中使用。

4. send_timeout

语法
send_timeout time
解释
指定相应客户端的超时时长。他是两次成功写操作相应报文时间,而不是传输整个相应报文时间。如果客户端在这个时间没有收到任何相应,连接会断开。默认是60秒

5. client_body_buffer_size

读取缓冲区大小,这个缓冲区用于存放用户请求body部分。如果请求的body大小大于缓冲区大小,整个body部分或者body的部分将会被写入临时文件中。

6. client_body_temp_path

语法
client_body_temp_path path [level1 [level2 [level3]]];
解释
指明用于存储用户body的目录,他是一个三级子目录结构。
示例
配置:
client_body_temp_path /spool/nginx/client_temp 1 2;
文件路径:
/spool/nginx/client_temp/7/45/00000123457
说明:
存储在磁盘是,每一个body会以一个文件的形式存在,他的文件名是通过hash得到。示例中的hash文件名为74500000123457。配置中的level 1为1,表明取hash中的第一个字母作为一级目录,配置中的level 2 为2,表明取hash中后续的两个字母为二级目录。所以文件路径为/spool/nginx/client_temp/7/45/00000123457。

7. limit_rate

设置响应报文传输给客户端的速率。单位是b/s。默认是0,0表示没有限制。

8. limit_except

设置能在location中使用的http方法。可以是如下这些:GET, HEAD, POST, PUT, DELETE, MKCOL, COPY, MOVE, OPTIONS, PROPFIND, PROPPATCH, LOCK, UNLOCK, or PATCH。容许GET方法,那么HEAD方法也可以。
注意次指令只能在location中使用。
示例
limit_except GET {
allow 192.168.1.0/32;
deny all;
}
这个配置可以使用GET和HEAD方法。

9. sendfile

这是sendfile功能是否开启,默认是off。
sendfile 功能:对于小的相应报文,并不是在应用层进行封装,而是在内核中封装后直接返回给用户。

二. 常用模块


1. ngx_http_access_module

作用
通过用户IP限制用户访问
示例
location / {
deny 192.168.1.1;
allow 192.168.1.0/24;
allow 10.1.1.0/16;
allow 2001:0db8::/32;
deny all;
}
说明
禁止192.168.1.1访问,除了192.168.1.0/24,10.1.1.0/16,2001:0db8::/32,其余都拒绝。

2. ngx_http_auth_basic_module

作用
通过用户名和密码控制用户访问
示例
location / {
auth_base "HTTP Basic Authentication ";
auth_basic_file_path /etc/nginx/conf.d/htpasswd;
}

创建登陆用户
使用的工具是htpasswd,来自httpd-tools包中
~]# htpasswd -c /etc/nginx/conf.d/htpasswd user1

3. ngx_http_sub_status_module

用于查看nginx内部状态。
示例
location /status {
stub_status;
}

4. ngx_http_gzip_module

作用
用于压缩相应报文
示例

gzip  on; #启用压缩功能
gzip_comp_level 6;    #指明压缩的的高级,数字越大,响应报文越小,但越占用CPU。
gzip_min_length 64;   # 当相应报文达到多少时才进行压缩。单位是字节
gzip_proxied any;
gzip_types text/xml text/css  application/javascript;

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的值为此三者中任何一个,则启用压缩功能;

参考

http://nginx.org/en/docs/
http://nginx.org/en/docs/http/ngx_http_access_module.html

原文地址:http://blog.51cto.com/13589448/2124666

时间: 2024-10-27 13:48:21

Nginx系列--04HTTP常用指令及常用模块的相关文章

Vue专题-js常用指令

vue.js官方给自己的定为是数据模板引擎,并给出了一套渲染数据的指令.本文详细介绍了vue.js的常用指令. vue.js常用指令 Vue.js使用方式及文本插值 Vue.js 使用了基于 HTML 的模板语法,最简单的使用vue的方式是渲染数据,渲染数据最常见的形式就是使用"Mustache"语法 (双大括号) 的文本插值. 123456789101112131415161718192021222324252627282930 <!DOCTYPE html><ht

Nginx主要模块常用指令说明

核心模块(Core Modules): 主模块(Main Module):配置和服务器全局有关的一些参数,比如错误日志.进程.权限等 user worker_processes error_logsyntax: error_log file [debug|info|notice|warn|error|crit]default: ${prefix}/logs/error.log 指定保存服务器(和 fastcgi)错误的日志文件.在不同的部分,错误等级的缺省值会不一样,为:1.在主要部分 – er

Nginx系列教程之四:Nginx常用变量汇总及测试

Nginx系列教程之:Nginx内置变量的收集及使用 前言:     各位小伙伴,前两天忙着测试openstack Icehouse,撰写openstack技术文档,导致nginx剩下的几篇博文没来得及整理,你是不是等着急啦?哈哈,抱歉,今天继续来聊一聊nginx常用的内置变量及其相关的使用. Nginx的变量在nginx的使用中还是占了一定的重要性,尤其是在日志和rewrite中,必须对各种变量的含义有所了解,才能组合出适合自己的日志格式和更高级的rewrite规则.其次了解nginx的变量含

Angular JS从入门基础 mvc三层架构 常用指令

Angular JS从入门基础  mvc模型 常用指令 ★ 最近一直在复习AngularJS,它是一款优秀的前端JS框架,已经被用于Google的多款产品当中.AngularJS有着诸多特性,最为核心的是:MVC.模块化.自动化双向数据绑定.语义化标签.依赖注入等等. 1.常用指令 AngularJS 通过指令扩展了HTML,且通过表达式绑定数据到 HTML.下面我们看一下AngularJS中的常用指令. (1).基本概念 指令:AngularJS中,通过扩展HTML的属性提供功能.所以,ng-

git常用指令整理及说明(详细)

git常用指令整理及说明(详细) git常用指令整理及说明详细 安装和配置 工作区版本库和暂存区 本地库和远程库 新建仓库 从远程库克隆 常用查看指令 常用修改指令 撤销修改和版本回退 分支管理 创建和合并分支 解决冲突 bug分支 远程分支 优秀教程笔记 本文是git系列博客的第二篇.本文对指令按照使用场景(建库,查看,修改,分支)进行分类归纳,介绍指令基本含义和用法,方便查阅. 安装和配置 参考我前面的博客:git在各操作系统平台下的安装和配置 工作区.版本库和暂存区 工作区:就是你在电脑里

yum 系列(二) yum 常用命令

yum 系列(二) yum 常用命令 一.yum 常用命令 yum 命令:http://man.linuxde.net/yum yum 是在 Fedora 和 RedHat 以及 SUSE 中基于 rpm 的软件包管理器,它可以使系统管理人员交互和自动化地更细与管理 RPM 软件包,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软体包,无须繁琐地一次次下载.安装. yum 提供了查找.安装.删除某一个.一组甚至全部软件包的命令,而且命令简洁而又好记.

Angular JS - 6 - Angular JS 常用指令

1 <!DOCTYPE html> 2 <html> 3 <head lang="en"> 4 <meta charset="UTF-8"> 5 <title></title> 6 </head> 7 <!-- 8 1. Angular指令 9 * Angular为HTML页面扩展的: 自定义标签属性或标签 10 * 与Angular的作用域对象(scope)交互,扩展页面的动

Dockerfile常用指令

Dockerfile常用指令 1.FROM:构建镜像基于哪个镜像 语法:FROM <image>[:<tag>] 例如:FROM centos:7 解释:设置要制作的镜像基于哪个镜像,FROM指令必须是整个Dockerfile的第一个指令,如果指定的镜像不存在默认会自动从Docker Hub上下载. 2.MAINTAINER:镜像维护者姓名或邮箱地址 语法:MAINTAINER <name> 例如:MAINTAINER adam 解释:MAINTAINER指令允许你给将

Dockerfile常用指令详解&镜像缓存特性

Dockerfile简介 Dockerfile 是Docker中用于定义镜像自动化构建流程的配置文件.在Dockerfile中,包含了构建镜像过程中需要执行的命令和其他操作.通过Dockerfile可以更加清晰,明确的给定Docker镜像的制作过程,由于仅是简单,小体积的文件,在网络等介质中传递的速度快,能够更快的实现容器迁移和集群部署.Dockerfile是一个文本文件,其内包含了一条条的指令,每一条指令构建一层,因此每一条指令的内容,就是描述该层应当如何构建. 相对于提交容器修改在进行镜像迁