使用Ubuntu完成nginx的负载均衡

一,Ubuntu的安装以及调试

Ubuntu下载链接:Ubuntu 16.04.7 LTS (Xenial Xerus)

1.1Ubuntu的远程登录问题

Ubuntu初始情况下无法进行ssh登录需要下载更新ssh服务以及修改文件

1.更新源列表

sudo apt-get update

2.安装ssh

sudo apt-get install openssh-server

3.检测ssh服务

sudo ps -e |grep ssh

有sshd,说明ssh服务已经启动,如果没有启动,输入"sudo service ssh start"-->回车-->ssh服务就会启动

4.使用vim修改配置文件"/etc/ssh/sshd_config"

vim /etc/ssh/sshd_config

注释掉 PermitRootLogin without-password //如果不注释,则无法使用密码登陆

增加 PermitRootLogin yes //允许root用户登陆

5重启ssh服务

systemctl restart ssh

二,nginx的安装

1,安装依赖

sudo apt install libgd-dev

下载nginx

注:需要先安装wget初始的Ubuntu没有wget

apt install wget

wget http://nginx.org/download/nginx-1.22.1.tar.gz

解压nginx

 tar -zvxf nginx-1.22.1.tar.gz

测试

在`Windows的浏览器中,直接输入Ubuntu的地址访问`Nginx`:

三,负载均衡

1.网页搭建

在 /var/www/html下创建网页

2.设置负载均衡

编辑/etc/nginx/sites-available下的default文件

upstream nginx_boot(这个名字可以自己更改){
   # 30s内检查心跳发送两次包,未回复就代表该机器宕机,请求分发权重比为1:2
   server 192.168.0.000:8080 weight=100 max_fails=2 fail_timeout=30s; 
   server 192.168.0.000:8090 weight=200 max_fails=2 fail_timeout=30s;
                                weight是设置权重决定命中率到达负载均衡的效果
除了权重算法以为还可以通过反向代理算法设置策略
   # 这里的IP请配置成你WEB服务所在的机器IP
}

server {
    location / {
        root   html;
        # 配置一下index的地址,最后加上index.ftl。
        index  index.html index.htm index.jsp index.ftl;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        # 请求交给名为nginx_boot的upstream上
        proxy_pass http://nginx_boot;
    }
}

常见的反向代理算法

1.rr轮询(默认)

2.weight(权重),在轮询算法的基础上加上权重(默认是rr+weight)

3.ip_hash

该调度算法可以解决动态网页session共享的问题

缺陷:分配不均

4.fair算法(第三方)

根据后端服务器RS的响应时间来分配请求,响应时间短的优先分配

5.url_hash(第三方)

按访问url的hash结果来分配请求,让每个url定位到同一个后端服务器,后端服务器为缓存服务器时效果明显

6.最少连接数

哪台机器连接数少就分配给哪台

访问

nginx

nginx的工作原理

Nginx采用多进程模型,主进程负责接收客户端的连接请求,然后将连接请求分发给工作进程来处理。每个工作进程可以处理多个客户端连接,采用异步非阻塞的方式来处理连接请求。

个人认为nginx本质上类似于一个反射器将用户的请求先打到nginx服务器上在由nginx服务器分发请求,可以使请求不直接接触服务器达到保护服务器的作用,同时在存在多台路由器的情况下可以检测各台服务器的工作能力选择合适的服务器发放请求。

Nginx的工作流程

客户端向Nginx发送HTTP请求。

Nginx主进程接收到请求,并将请求分发给空闲的工作进程。

工作进程接收到请求,进行请求处理,并将处理结果返回给Nginx主进程。

Nginx主进程将请求结果返回给客户端

nginx的常用功能

静态文件服务:Nginx可以作为静态文件服务器,可以快速响应客户端请求,提供高效的文件服务。

反向代理:Nginx可以作为反向代理服务器,将客户端的请求代理到后端的Web服务器上进行处理,从而提高系统的可靠性和可用性。

负载均衡:Nginx可以进行负载均衡,将客户端请求分发到多个后端服务器上进行处理,从而提高系统的性能和可扩展性。

缓存加速:Nginx可以缓存静态文件和动态内容,提高系统的响应速度和性能。

SSL/TLS加密:Nginx可以提供HTTPS服务,支持SSL/TLS加密,保证数据的安全性。

访问控制:Nginx可以对客户端的请求进行访问控制,包括IP黑白名单、HTTP Basic认证等方式。

相关推荐
Christal_pyy13 分钟前
树莓派4基于Debian GNU/Linux 12 (Bookworm)添加多个静态ipv4网络
linux·网络·debian
招风的黑耳43 分钟前
使用Nginx本地部署Axure生成的HTML文件,局域网内浏览器通过IP和地址访问
nginx·html·axure·本地部署
csbDD1 小时前
2025年网络安全(黑客技术)三个月自学手册
linux·网络·python·安全·web安全
s_fox_2 小时前
nginx ngx_http_module(7) 指令详解
运维·nginx·http
若云止水3 小时前
Ubuntu 下 nginx-1.24.0 源码分析 - ngx_process_options
运维·nginx
s_fox_3 小时前
nginx ngx_http_module(9) 指令详解
运维·nginx·http
Natsuagin3 小时前
轻松美化双系统启动界面与同步时间设置(Windows + Ubuntu)
linux·windows·ubuntu·grub
我们的五年4 小时前
【Linux网络编程】应用层协议HTTP(请求方法,状态码,重定向,cookie,session)
linux·网络·http
我们的五年6 小时前
【Linux网络】TCP/IP地址的有机结合(有能力VS100%???),IP地址的介绍
linux·运维·网络·tcp/ip
davenian6 小时前
< OS 有关 > Ubuntu 24 SSH 服务器更换端口 in jp/us VPSs
linux·ubuntu·ssh