nginx负载均衡

四层负载(IP:Port) 、七层负载(http://xxx)

nginx upstream 模块(通过server指令指定),和server平级

upstream backends {
	server 192.168.43.42:10086 down;
	server 192.168.43.42:10087;
	server 192.168.43.42:10088;
}
server {
	listen 192.168.43.42:888;
	server_name www.inhao.com;
	location / {
		proxy_pass http://backends;
	}

}

属性详解: upstream 主要是定义一个后端服务地址的集合列表,每个后端服务使用一个server命令表示 upstream {} 和 Server {} 两部分内容属于平级关系。

后端服务状态 在upstream模块中,可以使用server命令指定后端服务器的地址,同时还可以设置后端服务器在负载均衡调度中 的状态,常用的状态有以下几种:

down: 表示当前server主机暂时不参与负载均衡

backup:后备主机,当所有非backup机器出现故障或者繁忙的时候,才会请求backup机器。 

max_fails:允许请求的最大失败数,默认为1,配合fail_timeout一起使用

fail_timeout:经历max_fails次失败后,暂停服务的时间,默认为10s。 

负载均衡配置文件

# vim /etc/nginx/conf.d/upstream.conf
upstream backends {
	server 192.168.43.42:10086 down;
	server 192.168.43.42:10087;
	server 192.168.43.42:10088;
}
server {
	listen 192.168.43.42:888;
	server_name www.inhao.com;
	location / {
		proxy_pass http://backends;
	}

}
# vim /etc/nginx/conf.d/backend.conf
server {
	listen 192.168.43.42:10086;
	location / {

	root /var/www/html/hello/;
	try_files $uri $uri/ =404;
}
}
server {
	listen 192.168.43.42:10087;
	location / {

	root /var/www/html/nihao/;
	try_files $uri $uri/ =404;
}
}
server {
	listen 192.168.43.42:10088;
	location / {

	root /var/www/html/huanying/;
	try_files $uri $uri/ =404;
}
}

准备后端服务文件

mkdir -p /var/www/html/hello/
mkdir -p /var/www/html/nihao/
mkdir -p /var/www/html/huanying/
echo '<h1>backend_hello</h1>' > /var/www/html/hello/index.html
echo '<h1>backend_nihao</h1>' > /var/www/html/nihao/index.html
echo '<h1>backend_huanying</h1>' > /var/www/html/huanying/index.html
nginx -t
nginx -s reload

查看效果

apt-get install curl -y
for i in {1..100} ;do curl 192.168.43.42;done

自定义日志实践

 

需要获取代理前面客户端的真是IP,需要开启 --with-thhp_realip_module功能,Ubuntu默认安装的已经开启了该功能。

设置日志格式

$http_x_forwarded_for   可以记录客户端IP,通过代理服务器来记录客户端的ip地址 

$http_x_real_ip 可以记录客户端IP,通过代理服务器来记录客户端的ip地址

两个通常一起使用

# vim /etc/nginx/nginx.conf
# Logging Settings
log_format proxy_format '$remote_addr - $remote_user [$time_local] ' '"$request" $status $body_bytes_sent "$http_referer"' '"$http_user_agent" "$http_x_real_ip" "$http_x_forwarded_for"';

proxy_format是这个日志格式的名字

负载均衡配置文件

~# vim /etc/nginx/conf.d/upstream.conf 
upstream backends { server 192.168.43.42:10086; } 
server { 
    listen 88; server_name localhost; 
location / { proxy_pass http://backends; 
    ###
    proxy_set_header X-Real-IP $remote_addr; 
    ###
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
} 

后端代理配置文件

~# vim /etc/nginx/conf.d/backend.conf 
server { 
        listen 192.168.43.42:10086; 
        root /var/www/html/app1/; 
        # 设置日志格式及存放位置
        access_log /var/log/nginx/app1/access.log proxy_format; 
        ####
        real_ip_header X-Forwarded-For; 
        # 指定部分ip段
        set_real_ip_from 192.168.0.0/16;
        #递归
         real_ip_recursive on; 
        location / { 
        try_files $uri $uri/ =404; 
} 
}

准备后端服务文件

mkdir -p /var/www/html/app1/ 
echo '<h1>backend_app1</h1>' > /var/www/html/app1/index.html 
mkdir /var/log/nginx/app1 -p
# 查看自定制的日志

cat /var/log/nginx/app1/access.log

# 查看默认日志

cat /var/etc/log/nginx/access.log

注意: 如果生产中出现了多级代理,

在第一层代理上添加 proxy_set_header X-Real-IP $remote_addr;属性

在所有代理上必须添加 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;属性

真实主机上使用 real_ip_header X-Forwarded-For;属性

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值