摘要:
1 location 的匹配符1.1 等于匹配符:=等于匹配符就是等号,特点可以概括为两点:精确匹配不支持正则表达式1.2 空匹配符空匹配符的特点是:匹配以指定模式开始的 URI不支持正则表达式1.3 正则匹配符:~正则匹配符是可以使用正则表达式的匹配符。不过这里要强调的是,一般来说~是指:区分大小... 阅读全文
posted @ 2014-10-22 17:33
暗痛
阅读(277)
评论(0)
推荐(0)
摘要:
Nginx 的 HttpUpstreamModule 提供对后端(backend)服务器的简单负载均衡。一个最简单的 upstream 写法如下: server backend1.example.com; server backend2.example.com; server.backend... 阅读全文
posted @ 2014-10-22 17:30
暗痛
阅读(242)
评论(0)
推荐(0)
摘要:
1、概述(可以直接跳过看第2部分)Nginx方便地帮助我们实现了平滑升级。其原理简单概括,就是:(1)在不停掉老进程的情况下,启动新进程。(2)老进程负责处理仍然没有处理完的请求,但不再接受处理请求。(3)新进程接受新请求。(4)老进程处理完所有请求,关闭所有连接后,停止。这样就很方便地实现了平滑升... 阅读全文
posted @ 2014-10-22 17:29
暗痛
阅读(296)
评论(0)
推荐(0)
摘要:
通过《高性能Web服务器Nginx的配置与部署研究——(11)应用模块之Memcached模块的两大应用场景》一文,我们知道Nginx从Memcached读取数据的方式,如果命中,那么效率是相当高的。那么:1. 如果不命中呢?我们可以到相应的数据服务器上读取数据,然后将它缓存到Nginx服务器上,然... 阅读全文
posted @ 2014-10-22 17:19
暗痛
阅读(540)
评论(0)
推荐(0)
摘要:
在上一篇文章中,提到的Nginx的Memcached模块应用场景,主要是作为文件缓存。然后就发现了一个问题,当以字节数组方式缓存较大的文件时,缓存数据会被压缩,从而在读取的时候出现问题。(本文欢迎转载,尊重他人劳动,转载请注明出处:http://blog.csdn.net/poechant/arti... 阅读全文
posted @ 2014-10-22 17:18
暗痛
阅读(253)
评论(0)
推荐(0)
摘要:
一、应用场景1最近在一个项目中,用到了Nginx的Memcached模块,所以就在这个系列教程中提前把Memcached模块拿出来写了。另外发现最近我的 博客文章频频被很多用采集器的网站拿走,帮我发扬光大,都不听我说声谢谢。在此还是希望我的博文被转载的时候能够被注明出处,满足下我小小的虚荣心。现在有... 阅读全文
posted @ 2014-10-22 17:17
暗痛
阅读(348)
评论(0)
推荐(0)
摘要:
一、基本语法语法:location [= | ~ | ~* | ^~] {...}缺省:N/A作用域:server二、匹配规则1. 四种匹配方式= 精确匹配~ 大小写敏感正则匹配~* 大小写不敏感正则匹配^~ 前缀匹配2. location匹配指令的执行顺序首先:= 精确匹配;其次:^~ 前缀匹配... 阅读全文
posted @ 2014-10-22 17:15
暗痛
阅读(203)
评论(0)
推荐(0)
摘要:
一、HTTP模块的作用是什么?Nginx的HTTP模块用于控制Nginx的HTTP进程。二、指令1. alias含义:指定location使用的路径,与root类似,但不改变文件的跟路径,仅适用文件系统的路径。语法:alias 缺省:N/A作用域:http.server.location示例:loc... 阅读全文
posted @ 2014-10-22 17:14
暗痛
阅读(220)
评论(0)
推荐(0)
摘要:
一、事件模块的作用是什么?用来设置Nginx处理链接请求。二、相关指令1. accept_mutex含义:设置是否使用连接互斥锁进行顺序的accept()系统调用。语法:accept_mutex ;缺省:on示例:accept_mutex off;2. accept_mutex_delay含义:设置... 阅读全文
posted @ 2014-10-22 17:13
暗痛
阅读(329)
评论(0)
推荐(0)
摘要:
1. error_log含义:指定存储错误日志的文件语法:error_log [debug|info|notice|warn|error|crit]缺省:${prefix}/logs/error_log示例:error_log file debug;注意:在编译Nginx使用--with-debu... 阅读全文
posted @ 2014-10-22 17:12
暗痛
阅读(209)
评论(0)
推荐(0)
摘要:
1. daemon含义:设置是否以守护进程模式运行语法:daemon on|off缺省:on示例:daemon off;注意:生产环境(production mode)中不要使用daemon指令,这些选项仅用于开发测试(development mode)。2. debug_points含义:断点调试... 阅读全文
posted @ 2014-10-22 17:11
暗痛
阅读(255)
评论(0)
推荐(0)
摘要:
1. 容量符号k 千字节K 千字节m 兆字节M 兆字节2. 时间符号ms 毫秒s 秒m 分h 时d 日w 周M 月(按照30天计算)y 年(按照365天计算)3. 示例1h 30m 表示1小时30分钟1y 6M 表示1年6个月 阅读全文
posted @ 2014-10-22 17:10
暗痛
阅读(215)
评论(0)
推荐(0)
摘要:
1. 启动 Nginxpoechant@ubuntu:sudo ./sbin/nginx 2. 停止 Nginxpoechant@ubuntu:sudo ./sbin/nginx -s stoppoechant@ubuntu:sudo ./sbin/nginx -s quit-s都是采用向 Ngin... 阅读全文
posted @ 2014-10-22 17:08
暗痛
阅读(232)
评论(0)
推荐(0)
摘要:
1. 处理什么样的请求处理访问到 Nginx 所在 IP 地址的请求,并且这些请求的 HTTP 头信息中的 Host 为所要处理的域名(如下以80端口为例),如下几个 server 就对应响应的请求:server { listen 80; server_name nginx... 阅读全文
posted @ 2014-10-22 17:06
暗痛
阅读(245)
评论(0)
推荐(0)
摘要:
1. Nginx 程序包目前最新的开发版本时1.1.12:Linux/Unix:nginx-1.1.12.tar.gzWindows:nginx-1.1.12.zip我们可以下载稳定版尝试:Linux/Unix:nginx-1.0.11.tar.gzWindows:nginx-1.0.11.zip ... 阅读全文
posted @ 2014-10-22 17:05
暗痛
阅读(256)
评论(0)
推荐(0)
摘要:
概述从这篇博文起,将带领读者们一起领略Nginx的强大。Nginx 是做什么用的?我相信很多朋友都已经使用过,如果你没有,那么你一定知道以下这些名称之一:Apache,Lighttpd,Tomcat,Jetty。 它们占据了目前Web服务器的几乎全部江山,其中 Apache 是知名度最高的,同时也是... 阅读全文
posted @ 2014-10-22 17:04
暗痛
阅读(255)
评论(0)
推荐(0)
摘要:
1 auto/types/sizeof该脚本的功能,是通过测试程序获知给定的ngx_type的大小。1.1 显示提示信息echo $ngx_n "checking for $ngx_type size ...$ngx_c"cat > $NGX_AUTOCONF_ERR----------------... 阅读全文
posted @ 2014-10-22 16:59
暗痛
阅读(446)
评论(0)
推荐(0)
摘要:
回顾变量 CC最初是在auto/options脚本中初始化的:CC=${CC:-gcc}1 C Compiler 的 featureWindows 平台的编译器叫做MSVC,其他平台的都统称为C Compiler。1.1 获取编译器参数该脚本并不复杂,首先通过NGX_PLATFORM变量来判断是否是... 阅读全文
posted @ 2014-10-22 16:58
暗痛
阅读(593)
评论(0)
推荐(0)
摘要:
在 Nginx 的自动脚本中,auto/cc目录下的所有脚本都是用于编译器相关配置使用的。Nginx的出色跨平台性(Linux、Darwin、Solaris、Win32 等)就有这些脚本的贡献。该目录下包含如下脚本:目录conf:主脚本,配置编译器的基本属性,并根据系统的编译器环境引用不同的脚本。n... 阅读全文
posted @ 2014-10-22 16:56
暗痛
阅读(476)
评论(0)
推荐(0)
摘要:
目录auto/have 向自动配置头文件追加可用宏定义(objs/ngx_auto_config.h)auto/nohave 向自动配置头文件追加不可用宏定义(objs/ngx_auto_config.h)auto/define 向自动配置脚本追加 K-V 宏定义(objs/ngx_auto_con... 阅读全文
posted @ 2014-10-22 16:55
暗痛
阅读(665)
评论(0)
推荐(0)
摘要:
在configure脚本中,运行完auto/options和auto/init脚本后,接下来就运行auto/soures脚本。这个脚本是为编译做准备的。目录核心模块事件模块OpenSSL 模块相关变量事件驱动模块操作系统相关项HTTP 模块邮件模块Google PerfTools 模块C++ 测试模... 阅读全文
posted @ 2014-10-22 16:54
暗痛
阅读(846)
评论(1)
推荐(1)
摘要:
在configure中运行完auto/options脚本后,接着运行auto/init脚本,其中所做的工作如下。1 Makefile文件名变量默认情况下是:objs/Makefile代码如下:NGX_MAKEFILE=$NGX_OBJS/Makefile2 源文件名变量默认情况下是:objs/ngx... 阅读全文
posted @ 2014-10-22 16:50
暗痛
阅读(1390)
评论(0)
推荐(0)
摘要:
在安装Nginx之前(即运行make脚本之前),首先是进行安装的配置准备,包括环境检查及生成文件。这些工作是由自动脚本完成的。和绝大多数软件一样,Nginx的自动脚本的入口,同样是名为configure的文件。除了configure,其他的自动脚本都在auto目录下。通过分析configure脚本源... 阅读全文
posted @ 2014-10-22 16:49
暗痛
阅读(935)
评论(0)
推荐(0)
摘要:
1 Backgroundngx_http_stub_status_module 是一个 Nginx 的内置 HTTP 模块,该模块可以提供 Nginx 的状态信息。默认情况下这个模块是不被编译进来的,所以在编译 Nginx 时要指定加载该模块:--with-http_stub_status_modu... 阅读全文
posted @ 2014-10-22 16:47
暗痛
阅读(525)
评论(0)
推荐(0)
摘要:
1 命名规则1.1 基本变量基本变量有三个:ngx_module_t 类型的 ngx_http_foo_bar_module;ngx_command_t 类型的数组 ngx_http_foo_bar_commands;ngx_http_module_t 类型的 ngx_http_foo_bar_mo... 阅读全文
posted @ 2014-10-22 16:46
暗痛
阅读(522)
评论(0)
推荐(0)
摘要:
还记得我们定义过一个结构体如下吗?typedef struct { ngx_str_t output_words;} ngx_http_hello_world_loc_conf_t;它就是 HelloWorld 的 location 组件配置,其中有一个字符串成员 output_words。1... 阅读全文
posted @ 2014-10-22 16:44
暗痛
阅读(973)
评论(0)
推荐(0)
摘要:
elloWorld 是一个典型的 location 模块。什么是 location 模块?在 Nginx 中,根据作用域,有 main 模块、server 模块、location 模块。1 模块定义在 HelloWorld 模块中有一个 ngx_http_hello_world_module 变量,... 阅读全文
posted @ 2014-10-22 16:43
暗痛
阅读(1180)
评论(0)
推荐(0)
摘要:
1 学习 Nginx 模块开发需要有哪些准备?需要的预备知识不多,有如下几点:有过一些 C 语言的编程经历;知道 Nginx 是干嘛的,并有过编写或改写 Nginx 的配置文件的经历。OK,就这两点就够了 :)好了,那就开始吧~2 我们的 HelloWorld 的目标是什么?我们的目标,就是你在浏览... 阅读全文
posted @ 2014-10-22 16:41
暗痛
阅读(939)
评论(0)
推荐(0)
摘要:
Nginx 是多进程模式的,一个 master 与多个 workers,一般工作在多核 CPU 上,所以自旋锁就是必须用到的。Nginx 中的自旋锁的定义,位于 ngx_spinlock.c 中,如下:voidngx_spinlock(ngx_atomic_t *lock, ngx_atomic_i... 阅读全文
posted @ 2014-10-22 16:38
暗痛
阅读(733)
评论(0)
推荐(0)
摘要:
ngx_radix_tree.h// 未被使用的节点#define NGX_RADIX_NO_VALUE (uintptr_t) -1typedef struct ngx_radix_node_s ngx_radix_node_t;struct ngx_radix_node_s { ng... 阅读全文
posted @ 2014-10-22 16:37
暗痛
阅读(474)
评论(0)
推荐(0)
摘要:
本文分析 ngxin.c 中的 ngx_get_options 函数,其影响:nginx.c 中的:static ngx_uint_t ngx_show_help;static ngx_uint_t ngx_show_version;static ngx_uint_t ngx_show_... 阅读全文
posted @ 2014-10-22 16:35
暗痛
阅读(537)
评论(0)
推荐(0)
摘要:
errno.h中的strerror(int errno)可以确定指定的errno的错误的提示信息。在 Nginx 中,将所有错误提示信息预先存储在一个数组里,而预先确定这个数组的大小,是在自动化脚本中完成的,如下是auto/unix脚本:(其中自动化脚本auto/feature的作用参考《解剖 Ng... 阅读全文
posted @ 2014-10-22 16:33
暗痛
阅读(836)
评论(0)
推荐(0)
摘要:
ngx_palloc.h/* * NGX_MAX_ALLOC_FROM_POOL should be (ngx_pagesize - 1), i.e. 4095 on x86. * On Windows NT it decreases a number of locked pages in a ke... 阅读全文
posted @ 2014-10-22 16:32
暗痛
阅读(450)
评论(0)
推荐(0)
摘要:
下面是摘自 Google Code 的 Murmurhash 开源项目主页上的 Murmurhash2,Nginx 就是采用的这个。uint32_t MurmurHash2 ( const void * key, int len, uint32_t seed ){ // 'm' and 'r' a... 阅读全文
posted @ 2014-10-22 16:30
暗痛
阅读(910)
评论(0)
推荐(0)
摘要:
/* * Copyright (C) Igor Sysoev * Copyright (C) Nginx, Inc. */#include #include // 如果 CPU 架构是 i386 或 amd64,并且编译器是 GNU Compiler 或 Intel Compiler,则定义 cng... 阅读全文
posted @ 2014-10-22 16:28
暗痛
阅读(370)
评论(0)
推荐(0)
摘要:
队列头文件ngx_queue.h#include #include #ifndef _NGX_QUEUE_H_INCLUDED_#define _NGX_QUEUE_H_INCLUDED_typedef struct ngx_queue_s ngx_queue_t;// 队列的节点,也直接表示队列... 阅读全文
posted @ 2014-10-22 16:27
暗痛
阅读(365)
评论(0)
推荐(0)
摘要:
列表头文件ngx_list.h#ifndef _NGX_LIST_H_INCLUDED_#define _NGX_LIST_H_INCLUDED_#include #include typedef struct ngx_list_part_s ngx_list_part_t;// 一个 part ... 阅读全文
posted @ 2014-10-22 16:25
暗痛
阅读(286)
评论(0)
推荐(0)
摘要:
数组头文件ngx_array.h#include #include struct ngx_array_s { void *elts; ngx_uint_t nelts; size_t size; ngx_uint_t nalloc; n... 阅读全文
posted @ 2014-10-22 16:23
暗痛
阅读(393)
评论(0)
推荐(0)
摘要:
首先看 ngx_alloc.h 文件,主要声明或宏定义了 ngx_alloc,ngx_calloc,ngx_memalign,ngx_free。/* * Copyright (C) Igor Sysoev * Copyright (C) Nginx, Inc. */#ifndef _NGX_ALLO... 阅读全文
posted @ 2014-10-22 16:21
暗痛
阅读(516)
评论(0)
推荐(0)
浙公网安备 33010602011771号