1.准备两台安了nginx的机器
192.169.125.128
192.169.125.129
2.修改两台nginx首页内容以区分两台服务器
cd /usr/local/nginx/html/
ll
vim index.html
3.重启查看是否生效
/usr/local/nginx/sbin/nginx -s reload
4.负载均衡配置
负载均衡配置格式
upstream web_stream{
server 192.169.125.128:8080;
server 192.169.125.129:8080;
}
server {
location / {
proxy_pass http://web_stream;
}
}
轮询(默认)
192.169.125.129添加配置
vim /usr/local/nginx/conf/nginx.conf
添加
upstream web_stream{
server 192.168.125.128:80;
server 192.168.125.129:80;
}
server {
listen 8080;
server_name 192.168.125.129;
location / {
proxy_pass http://web_stream;
}
}
检查配置是否有错误
/usr/local/nginx/sbin/nginx -t
重启
/usr/local/nginx/sbin/nginx -s reload
请求会平均负载到两台服务器上
热备:两台nginx,192.169.125.128;192.169.125.129;正常情况下192.169.125.128工作,192.169.125.129不会被访问,一旦192.169.125.128宕机,服务会全部转发192.169.125.129上
修改配置
重启129
/usr/local/nginx/sbin/nginx -s reload
无论怎么刷新所有请求都会到129服务器上
到128服务器上执行
/usr/local/nginx/sbin/nginx -s stop
停止服务
再次刷新页面,请求会回到129上
如果再将128启动起来,请求会不会再次到128上呢?
到128服务器上执行
/usr/local/nginx/sbin/nginx
再次刷新页面
后面的请求还是会到128上,129回到热备状态
加权轮询:将请求按权重大小进行负载均衡,权重越大,分到请求的几率就越大
129上修改配置,重启
谷歌浏览器上刷新是严格按权重负载的,三次129一次128
ip_hash:nginx根据ip进行hash运算,使同一个ip访问固定的服务器
修改129配置,重启
实际操作中遇到两个问题
1.转发后404找不到
添加这一行
proxy_set_header Host $host;
2.转发后找不到端口号,需要手动添加
proxy_set_header Host $host:端口号;