下载功能模块
wget https://codeload.github.com/yaoweibin/nginx_upstream_check_module/zip/master
功能模块所需插件
yum install patch-2.7.1-12.el7_7.x86_64 -y
patch -p1 < /usr/src/nginx_upstream_check_module-master/check_1.16.1+.patch
查看版本信息
/usr/local/nginx/sbin/nginx -V
nginx version: nginx/1.16.1
built by gcc 4.8.5 20150623 (Red Hat 4.8.5-39) (GCC)
configure arguments: --prefix=/usr/local/nginx
添加模块
./configure --prefix=/usr/local/nginx --add-module=/usr/src/nginx_upstream_check_module-master/
重新编译
make && make install
make upgrade
Nginx模块名称 | 模块作用 |
---|---|
ngx_http_upstream_module | 负载均衡模块,提供服务器分组转发、权重分配、状态监测、调度算法等高级功能 |
ngx_http_access_module | 四层基于IP的访问控制,可以通过匹配客户端源IP地址进行限制 |
ngx_http_auth_basic_module | 状态页,使用basic机制进行用户认证,在编译安装nginx的时候需要添加编译参数–withhttp_stub_status_module,否则配置完成之后监测会是提示语法错误 |
ngx_http_stub_status_module | 状态统计模块 |
ngx_http_gzip_module | 文件的压缩功能 |
ngx_http_gzip_static_module | 静态压缩模块 |
ngx_http_ssl_module | nginx 的https 功能 |
ngx_http_rewrite_module | 重定向模块,解析和处理rewrite请求 |
ngx_http_referer_module | 防盗链功能,基于访问安全考虑 |
ngx_http_proxy_module | 将客户端的请求以http协议转发至指定服务器进行处理 |
ngx_stream_proxy_module | tcp负载,将客户端的请求以tcp协议转发至指定服务器处理 |
ngx_http_fastcgi_module | 将客户端对php的请求以fastcgi协议转发至指定服务器助理 |
ngx_http_uwsgi_module | 将客户端对Python的请求以uwsgi协议转发至指定服务器处理 |
ngx_http_headers_module | 可以实现对头部报文添加指定的key与值 |
ngx_stream_upstream_module | 后端服务器分组转发、权重分配、状态监测、调度算法等高级功能 |
ngx_http_fastcgi_module | 实现通过fastcgi协议将指定的客户端请求转发至php-fpm处理 |
ngx_http_flv_module | 为flv伪流媒体服务端提供支持 |
格式:
allow address; //允许访问
deny address; //拒绝访问
location / {
root html;
index index.html index.htm;
allow 127.0.0.1; #允许本机地址访问
deny 127.0.0.1; #拒绝本机地址访问
}
官网实例:
location / {
auth_basic "off"; //启用使用“HTTP基本身份验证”协议验证用户名和密码,默认off
auth_basic_user_file conf/htpasswd; //指定保存用户名和密码的文件
}
auth_basic_user_file文件格式:
name:password
name:password:comment
安装htpassd命令
yum install -y httpd-tools
创建密码文件
htpasswd -c /etc/nginx/passwd.db zhangsan
New password:
Re-type new password:
Adding password for user zhangsan
添加用户
htpasswd /etc/nginx/passwd.db lisi
New password:
Re-type new password:
Adding password for user lisi
//官网实例
location = /basic_status {
stub_status;
}
//返回数据
Active connections: 291
server accepts handled requests
16630948 16630948 31070465
Reading: 6
Writing: 179
Waiting: 106
location / {
gzip on;
gzip_buffers 4 8k;
gzip_comp_level 6;
gzip_disable "MSIE [1-6]\.";
gzip_http_version 1.1;
gzip_min_length 1000;
gzip_proxied any;
gzip_vary on;
gzip_types text/plain text/css application/javascript application/x-javascript text/xml application/xml application/xml+rss text/javascript application/json image/jpeg image/gif image/png image/jpg;
}
User-Agent
头字段的请求响应做 gzip 处理;Content-Length
响应头字段确定,默认20;Via
请求头字段是否存在。该指令接受多个参数:
off
禁用所有代理请求压缩,忽略其他参数expired
如果响应头包含 Expires”
字段并且其值为禁用缓存,则启用压缩no-cache
如果响应头包含具有 no-cache
参数的 Cache-Control
字段,则启用压缩no-store
如果响应头包含具有 no-store
参数的 Cache-Control
字段,则启用压缩private
如果响应头包含带有 private
参数的 Cache-Control
字段,则启用压缩no_last_modified
如果响应头不包含 Last-Modified
字段,则启用压缩no_etag
如果响应头不包含 ETag
字段,则启用压缩auth
如果请求头包含 Authorization
字段,则启用压缩any
为所有代理请求启用压缩text/html
之外,还可以针对指定的 MIME 类型启用 gzip 响应。特殊值 *
匹配任何 MIME 类型(0.8.29)。对 text/html
类型的响应始终启用压缩。Vary:Accept-Encoding
响应头字段。首次安装
nginx编译和安装时,需要把–with-http_ssl_module加在./configure后面,如果需要加载gzip模块,需要把–with-http-gzip-static-module加在./configure后面。
ngx_http_upstream_module,可以做到基本的健康检查。
upstream指令块中的server子指令参数:max_fails、fail_timeout
upstream backend {
server 127.0.0.1:8080 weight=1 max_fails=2 fail_timeout=10s;
}
github地址:https://github.com/yaoweibin/nginx_upstream_check_module
taobao官网:http://tengine.taobao.org/document_cn/http_upstream_check_cn.html
nginx 需要添加nginx_upstream_check_module 模块,用于对后端服务器的健康情况检测,如果后端服务器不可用,则把这台服务器移除负载均衡轮循集群,所有的请求不往这台服务器上转发,待这台服务器恢复正常后,再把这台加入到负载均衡集群。
http {
upstream cluster1 {
# simple round-robin
server 192.168.0.1:80;
server 192.168.0.2:80;
check interval=3000 rise=2 fall=5 timeout=1000 type=http;
check_http_send "HEAD / HTTP/1.0\r\n\r\n";
check_http_expect_alive http_2xx http_3xx;
}
upstream cluster2 {
# simple round-robin
server 192.168.0.3:80;
server 192.168.0.4:80;
check interval=3000 rise=2 fall=5 timeout=1000 type=http;
check_keepalive_requests 100;
check_http_send "HEAD / HTTP/1.1\r\nConnection: keep-alive\r\n\r\n";
check_http_expect_alive http_2xx http_3xx;
}
server {
listen 80;
location /1 {
proxy_pass http://cluster1;
}
location /2 {
proxy_pass http://cluster2;
}
location /status {
check_status;
access_log off;
allow SOME.IP.ADD.RESS;
deny all;
}
}
}
check_http_expect_alive
:指定主动健康检查时HTTP回复的成功状态
check_http_send
:配置http健康检查包发送的请求内容