Nginx作为七层负载均衡调度器

本文介绍了Nginx作为静态web服务器的角色,重点阐述了其在反向代理和负载均衡中的广泛应用,特别是在七层负载均衡方面的功能。通过添加自定义首部和特定模块的使用,详细说明了Nginx如何实现更精细的流量调度。同时,提供了相关参考博客和开源模块链接以供深入学习。
摘要由CSDN通过智能技术生成


Nginx可以作为静态web服务器
Nginx在实际运维中,用到最多的地方是反向代理服务器,或负载均衡服务器

Alt text

(二)ngx_http_proxy_module模块详解

Nginx在实际运维中,用到最多的地方是反向代理服务器,或负载均衡服务器

  • Nginx使用proxy_pass和fastcgi_pass实现单台主机的动静分离(PHP以daemon方式运行)

 
 
 
# 如果用户请求的URI为/index.html
# 所有的静态请求调度到httpd服务器
# 用户请求的URI会加到http://192.168.23.11:8080,请求会变成http://192.168.23.11:8080/index.html
location ~* \.html$ {
proxy_pass http://192.168.23.11:8080;
}
# php以php-fpm的模式运行
# 如果用户请求的URI为/index.php
# 所有的动态请求调度到PHP服务器
location ~* \.php$ {
fastcgi_pass 192.168.23.12:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /app/php/ $fastcgi_script_name;
include fastcgi_params;
}
  • Nginx使用proxy_pass和fastcgi_pass实现单台主机的动静分离(PHP以httpd模块方式运行)

 
 
 
location ~* \.html$ {
proxy_pass http://192.168.23.11:8080;
}
location ~* \.php$ {
proxy_pass http://192.168.23.12:8080;
}
  • 解决内网服务器的日志中记录的客户端IP地址为反代的IP(如果代理前端有CDN,需要在CDN上配置X-Forwarded-For)

 
 
 
通常的情况下,对内网中的web服务器的日志进行分析是非常关键的,但是基于前端调度器调度之后,所有的web服务器的日志信息中客户端 IP地址都变成了调度器的内网 IP地址。那么在这种情况下,需要使用Nginx的一个指令:proxy_set_header 将客户端的 IP地址获得后,传递给内网的web服务器,让内网的web服务器的日志的客户端 IP地址为真实的客户端 IP地址

 
 
 
# 在Nginx中配置
proxy_set_header X-Forwarded-For $remote_addr;
# 在httpd中配置
LogFormat "%{X-Forwarded-For}i %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined

 
 
 
add_header X- cache $uptream_cache_status ;
  • 如何使用反向proxy的cache机制(与fastcgi的缓存类似,先在server中定义再调用)

 
 
 
# proxy定义缓存的方式与fastcgi的方式一样
1:在http段中先定义缓存,其中/var/cache/nginx/proxy_cache为缓存在磁盘文件的路径, 122表示存储在磁盘上的文件使用三个层次的目录结构,在内存中的keys缓存名为proxy_cache,大小为 10M,磁盘最大缓存为 10G。缓存目录/var/cache/nginx/proxy_cache需要提前创建好
http{
proxy_cache_path /var/cache/nginx/proxy_cache levels= 1: 2: 2 keys_zone=proxy_cache: 100m max_size= 10g;
}
2:调用缓存功能写在 location中调用
location / {
proxy_pass http: //192.168.23.11;
index index.html index.htm;
# 指定的key的名称
proxy_cache_key $request_uri;
# 调用缓存
proxy_cache proxy_cache;
# 指定不同的状态码的缓存时长
proxy_cache_valid 200 302 10m;
proxy_cache_valid 301 1h;
proxy_cache_valid any 1m;
}

(三)ngx_http_headers_module模块详解

这个模块可以给响应报文添加自定义首部

  • 可以在location段中添加

 
 
 
# 添加一个响应头,指明响应请求的服务器的主机名
add_header X-Server $server_name ;
# 指明缓存的超时时长,超过这段时间缓存服务器就会向后端真实服务器请求,并更新缓存
expires 24h ;
# 告知客户端,响应客户端请求的报文是缓存中加载的,还是后端服务器响应的
add_header X- cache $uptream_cache_status ;

(四)ngx_stream_upstream_module模块详解(做实验的时候,请关闭cache缓存功能)

这个模块是实现了Nginx的七层负载均衡

  • 功用:可以将后端响应客户端请求的真实的服务器进行分组,实现后端服务器的批量上线和下线
  • 使用方式:服务器组必须定义在http端中,在location段使用反代指令调用

 
 
 
# 服务器组的选项说明
1:weight= 1 指定权重
2:max_fails= 3 指定如果想后端服务器请求 3次,依然不相应,则将其标记为不可用
3:fail_timeout= 10s 指定如果请求超过了 10秒,后端服务器任然无法响应,那么表示此次请求失败
4:backup 指定此服务器为备用服务器,当所有的后端服务器都不用时启用,俗称救火服务器
5:down 指定此服务器下线,不再接受用户的请求

                
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值