一致性哈希算法在1997年由麻省理工学院提出,是一种特殊的哈希算法,在移除或者添加一个服务器时,能够尽可能小地改变已存在的服务请求与处理请求服务器之间的映射关系。
一、基础
Nginx由内核和模块组成:内核的设计非常微小和简洁,完成的工作也非常简单,仅仅通过查找配置文件将客户端请求映射到一个location block,而在这个location中所配置的每个指令将会启动不同的模块去完成相应的工作;Nginx的功能如此强大是因为它有非常多的模块来支撑,Nginx本身包含很多模块,用户也可以根据自己的需求开发模块。
Nginx模块从结构上分为:基础模块、核心模块和第三方模块。核心模块包含HTTP模块、EVENT模块和MAIL模块等;基础模块包含HTTP Access模块、HTTP FastCGI模块、HTTP Proxy模块和HTTP Rewrite模块等;第三方模块包含HTTP Upstream Request Hash模块、Notice模块和HTTP Access Key模块等。第三方模块从功能上又可以分为Handlers处理器模块:直接处理请求,并进行输出内容和修改headers信息等操作,一般只有一个;Filters过滤器模块:主要对其他处理器模块输出的内容进行修改操作,最后由Nginx输出;Proxies代理类模块:此类模块是Nginx的HTTP Up-stream之类的模块,主要与后端一些服务比如FastCGI等进行交互,实现服务代理和负载均衡等功能。用户根据自己的需要开发的模块都属于第三方模块。正是有了这么多模块的支撑,Nginx的功能才会如此强大。
nginx echo模块是在nginx程序上扩展了echo输出字符的功能,对于调试很方便,传送门。
二、开干
- 进入nginx目录这一步可选
- 下载echo模块
git clone https://github.com/openresty/echo-nginx-module
- 查看nginx相关信息,主要为了取configure信息
/usr/local/nginx1.17.5/sbin/nginx -V
- 复制上一步中的
configure arguments:
后面的信息,即上一次编译时的参数 - 环境验证并生成Makefile
sudo ./configure --prefix=/usr/local/nginx1.17.5 --add-module=/usr/local/src/nginx-1.17.5/echo-nginx-module
- 重新编译
make
,千万不要make install
,否则会把原先安装的都覆盖掉 - 备份
sudo mv /usr/local/nginx1.17.5/sbin/nginx /usr/local/nginx1.17.5/sbin/nginx.bak
- 替换
sudo cp /usr/local/src/nginx-1.17.5/objs/nginx /usr/local/nginx1.17.5/sbin/
- 重启
sudo /usr/local/nginx1.17.5/sbin/nginx -s reload
三、demo
- 配置vhost
1 | default_type text/plain; |
- 重启nginx
1 | sudo killall nginx |
- 浏览器访问
http://localhost/echo?a=1&b=2