Nginx学习指南之模块的应用

一、自述

Nginx模块功能也是相当的丰富,但对于Apache Web来说,两者之间还是有区别的,大家都知道Nginx模块是直接被编译进了nginx.conf配置文件,而Apache则是被编译成为.SO文件,有些是需要在httpd.conf配置文件中指定是否加载,这样才能激活模块功能。Nginx模块有三个角色,Handlers(处理一个HTTP请求,并产生输出);Filters(处理由一个handler生成的输出);load-balancers(负载均衡器,当后端服务器符合一个以上后,依据算法选择其中一台服务器处理一个HTTP请求),首先会依次介绍Nginx core module(核心模块),Standard HTTP modules(标准的HTTP模块),Optional HTTP module(可选的HTTP模块);至于第三方的Nginx模块,以后会详细的讲解。

无论你选择哪种安装方式,Nginx Core Module(Nginx核心模块),Standard Http Modules(标准的HTTP模块)默认都会被安装,其中Nginx核心模块是必须被安装的,而标准的HTTP模块则可以通过—without关闭相应的模块功能,对于Optional HTTP module(可选的HTTP模块),默认则不会被编译,需要指定相应的参数,激活模块的功能,例如:--with-http_sub_module(Nginx状态功能模块),当一个模块被安装以后,都会附加一些模块指令提供相应的服务,接下来介绍Nginx Core Module一些常用的模块指令与参数。

http://www.evanmiller.org/nginx-modules-guide.html

二、模块与指令

ngx_http_core_module(核心模块)

root

##设置网站请求的根目录;

Server

##设置虚拟服务器配置,可以基于IP地址和域名的形式;

Server_name

##定义虚拟主机的名称;

Location

##根据请求URL,设置站点的请求路径,location可以引用正则表达式;

Listen

##设置服务器接受请求的IP地址和端口;

client_body_buffer_size

##设置客户端请求主体的缓存区大小,默认大小为8k|16k;

client_body_temp_path

##设置客户端请求主体的临时文件存储目录,最多允许三个层次的子目录结构;

client_body_timeout

##定义客户端读取请求主体的超时时间,默认为60s;

client_max_body_size

##设置客户端请求主体所允许的最大数值,默认为1m;

client_header_buffer_size

##设置客户端请求头的缓冲区大小,默认为1k,对于大多数的请求,1k字节的缓存区就够了;

large_client_header_buffers

##设置客户端请求头的缓存区最大值,默认为4 8k,处理客户端请求头超过1k字节的请求;

client_header_timeout

##定义客户端读取请求头的超时时间,默认为60s;

error_page

##定义请求错误的URL所返回的状态码,如:404,500,502,503,504,日志类型:debug|info|notice|warn|error|crit;

server_tokens

##定义Httprequest请求错误时,是否反馈Nginx的版本信息;

open_file_cache

##配置文件缓存存储:

1)打开的文件描述符,他们的大小和修改时间;

2)存在的目录信息

3)文件查找错误,例如:为找到文件,没有读取权限,等等;

open_file_cache_errors

##启用或禁用open_file_cache文件查找错误的缓存,默认值on|off;

open_file_cache_min_uses

##设置文件访问期间的最小数,且在缓存期间需要一个文件描述符保持打开状态;

open_file_cache_valid

##设置访问文件缓存的验证时间,默认为60s;

Sendfile

##设置高效文件传输模式,对于普通应用设为on,否则off;

send_timeout

##设置客户端传输响应的超时时间,默认为60s;

tcp_nodelay

##防止网络阻塞

tcp_nopush

##防止网络阻塞

keepalived_timeout

##设置长连接超时时间,默认为75s;

server_names_hash_bucket_size

##设置服务器名称哈希表的大小,可以加快静态数据的处理过程,默认为32|64|128

server_names_hash_max_size

##设置服务器名称哈希表的最大值;加快了通过减少访问内存的数量在处理器的散列键搜索,默认为512

三、安装与配置

3、1 服务器资源列表


服务器名称


系统


CPU架构


内核


IP地址


角色


WEB1


Ubuntu 13.10


x86_64


3.11.0-12-generic


10.16.10.38


Web Server

3、2 安装与配置

##提示

前一篇文档介绍了在CentOS下如何安装Nginx的两种方式,现在介绍在Ubuntu下如何安装Nginx,编译安装的方式与CentOS一致,这里不再过多讲解,主要介绍apt-get的安装方式;

#编辑APT数据源列表,末尾添加如下两行:

[email protected]:~# vim /etc/apt/sources.list
deb http://nginx.org/packages/ubuntu/ codename nginx
deb-src http://nginx.org/packages/ubuntu/ codename nginx

3、2、1更新APT数据源列表

3、2、2 apt-get安装

3、3、3 配置

[email protected]:~# vim /etc/nginx/nginx.conf
user nginx nginx;
worker_processes 8;
pid /run/nginx.pid;
worker_rlimit_nofile 65535;
events {
        use epoll;
        worker_connections 65535;
}
http {
        include mime.types;
        default_type application/octet-stream;
        log_format  main  ‘$http_x_forwarded_for $remote_addr - ‘
                         ‘$remote_user [$time_local] "$request" ‘
                         ‘$status $body_bytes_sent "$http_referer" ‘
                         ‘"$http_user_agent" "$gzip_ratio"‘;
        sendfile on;
        tcp_nopush on;
        tcp_nodelay on;
        keepalive_timeout 60;
        types_hash_max_size 2048;
        server_tokens off;
        client_body_buffer_size 16k;
        client_body_timeout 60s;
        client_max_body_size 1m;
        client_body_temp_path /data/cache/client_temp 1 2;
        client_header_buffer_size 1k;
        large_client_header_buffers 4 8k;
        client_header_timeout 60s;
        server_names_hash_bucket_size 64;
        server_name_in_redirect off;
        # File Cache
        open_file_cache max=1000 inactive=30s;
        open_file_cache_valid   30s;
        open_file_cache_min_uses 2;
        open_file_cache_errors  on;
        # Logging Settings
        access_log /var/log/nginx/access.log main;
        error_log /var/log/nginx/error.log crit;

        location ~* \.(gif|jpg|jpeg|png|bmp|swf)$ {         #忽略大小写,匹配以*.jpeg,*.png,*.swf结尾的图片,缓存1天;
            expires 1d;
        }
        location ~* \.(css|js)$ {                               #忽略大小写,匹配*.css,*.js结尾的文件,缓存1小时;
            expires 1h;
        }
        access_log  on;                                 #启用日志功能;
}
[email protected]:~# mkdir /etc/nginx/vhosts/
[email protected]:~# vim /etc/nginx/vhosts/www.exiuxiu.com
server {
         location / {
                        root /data/bbs/program;         #站点根目录,需要在此目录下创建index.html文件;
                        index index.html index.htm;         #索引文件类型
                }
                error_page 404 /error/404.html;             #定义404错误页面
                error_page 500 /error/500.html;
                error_page 502 /error/500.html;
}

四、测试

4、1 启动nginx服务

[email protected]:~# nginx –t                                         #检查语法

nginx: the configuration file/etc/nginx/nginx.conf syntax is ok

nginx: configuration file/etc/nginx/nginx.conf test is successful

[email protected]:~# /etc/init.d/nginx start

*Starting nginx nginx                                   [ OK ]

[email protected]:~# netstat –lntp                                    #检查端口

Active Internet connections (only servers)

Proto Recv-Q Send-Q Local AddressForeign AddressStatePID/Program name

tcp00 0.0.0.0:800.0.0.0:*LISTEN21472/nginx: master

tcp00 0.0.0.0:220.0.0.0:*LISTEN17668/sshd

tcp600 :::22:::*LISTEN17668/sshd

4、2 本地测试

[email protected]:~# curl -Ihttp://localhost/index.html

HTTP/1.1 200 OK

Server: nginx

Date: Fri, 09 May 2014 06:54:49 GMT

Content-Type: text/html

Content-Length: 44

Last-Modified: Fri, 09 May 2014 06:03:38GMT

Connection: keep-alive

ETag: "536c6fba-2c"

Accept-Ranges: bytes

4、3 Windows端Firefox浏览器测试

此篇文档一花费了好几个小时才写出来,希望能够帮得到大家,后期还会有更多的Nginx文档更新,如:Nginx+php-fpm+Opcache,Nginx+keepalived,Nginx+tomcat,Nginx+resin,Nginx+Apache等,请大家多多支持;

Nginx学习指南之模块的应用,布布扣,bubuko.com

时间: 2024-12-28 16:00:04

Nginx学习指南之模块的应用的相关文章

Nginx学习指南之安装与配置

一.简介 Nginx [engine x]是Igor Sysoev编写的一个HTTP和反向代理服务器,另外它可以作为邮件代理服务器.Nginx已经在众多流量很大的俄罗斯网站上使用了很长时间,这些网站包括Yandex,Mail.Ru.VKontakte,以及Rambler,在国内使用Nginx作为Web Server,Cache Server,Proxy Server网站包括百度,新浪,腾讯,网易,机锋网等,根据Netcraft统计,在2012年8月份,世界上最繁忙的网站中有11.48使用Ngin

nginx 学习五 filter模块简介和实现一个简单的filter模块

1 nginx过滤模块简介 过滤(filter)模块是过滤响应头和内容的模块,可以对回复的头和内容进行处理.它的处理时间在获取回复内容之后, 向用户发送响应之前.它的处理过程分为两个阶段,过滤HTTP回复的头部和主体,在这两个阶段可以分别对头部和主体 进行修改. 2 过滤模块执行顺序 2.1 ngx_http_output_(head, body)_filter_pt 先看一下nginx常用的过滤模块,在ngx_moudles.c中有一下代码: ngx_module_t *ngx_modules

Nginx学习(六)ngx_lua_waf模块

http://blog.chinaunix.net/uid-1728743-id-3546152.html https://github.com/loveshell/ngx_lua_waf

[转帖]Nginx 重写规则指南

Nginx 重写规则指南 https://linux.cn/article-5229-1.html 作者: 默北 | 2015-04-09 09:54   评论: 1 收藏: 10 当运维遇到要重写情况时,往往是要程序员把重写规则写好后,发给你,你再到生产环境下配置.对于重写规则说到底就是正则匹配,做运维的岂能对正则表达式不了解的?最起码最基本的正则表达式会写.套用一句阿里的话(某网友说是阿里说的,不清楚到底是不是出自阿里)“不懂程序的运维,不是好运维:不懂运维的开发,不是好开发.”. 正则表达

nginx 学习(二) hello world 程序

hello wrold 1 本节目的 2实现步骤 2.1config编写 2.2模块代码实现 2.3配置文件的编写 3将模块编译进nginx中 1本节的目的 本节用nginx来实现一个经典程序hello world,这个程序也是我们学任何编程语言时首先接触的程序,这个程序的目的是 初步了解nginx怎样嵌入第三方模块,也是学习nginx的HTTP模块的入门. 2实现步骤 nginx 提供了一种简单的方式将第三方模块嵌入nginx中:只需要三个步骤 步骤一:编写config 步骤二:实现模块的代码

整理得很全面的Nginx学习资源

Nginx基础 1.  nginx安装 2.  nginx 编译参数详解 3.  nginx安装配置+清缓存模块安装 4.  nginx+PHP 5.5 5.  nginx配置虚拟主机 6.  nginx location配置 7.  nginx root&alias文件路径配置 8.  ngx_http_core_module模块提供的变量 9.  nginx日志配置 10. apache和nginx支持SSI配置 12. nginx日志切割 13. Nginx重写规则指南 14. nginx

Nginx学习回顾总结 部分:

21:46 2015/11/9Nginx学习回顾总结进程间通信,近似于socket通信的的东西:才发现这种通信并不是很难,并不是我想象的那样很多内容,新领域,入门只是几个函数的使用而已.以前猜过是这样,今天总算验证了.包括pdo是数据库连接,smarty,xml解析,应该都是这样,入门都不难,然后就是需要看一下手册之类的,了解一下有哪些内容而已.主要就是消息的读写解析,部分参数的设置----以我浅显的认识来讲应该是的.然后一般会有几种选项或分类,如单向通信,双向通信等进程通信方式,不过还是最常用

Nginx学习——负载均衡

负载均衡 Nginx提供了较多的负载均衡策略,包括加权轮询.IP哈希.fair.一致哈希等.前两个是Nginx官方源码内置的策略,而后面几个都是第三方模块,所以下面我们重点来看前两个内置策略. Nginx默认采用round_robin加权算法,如果要采用IP哈希策略,那么必须在Nginx的配置文件里通过配置指令ip_hash明确指定. 当整个http配置块被Nginx解析完毕之后,会调用各个http模块对应的初始函数.对于模块ngx_http_upstream_module而言,对应的main配

nginx学习(一)nginx安装

很早就听说nginx性能高,并且并发能力强,是能够和Apache竞争的服务器,而且代码时开源的,所以很想学习一下,可是一直没有时间, 刚好这段比较空闲,就来学习一下. 很多关于nginx的资料都是基于linux平台的,所以就在win7下安装了图形界面的Ubuntu,可是用惯了windowx安装软件就点一下那个exe, 悲催的linux下没有exe的软件,做什么事情都是在黑框框中写命令,这对于没用学过linux命令的人来说真是一件难事. nginx的安装 首先下载nginx的安装包,因为我买了<n