实现负载均衡

1.安装依赖

sudo apt insta11 libgd-dev

2.下载nginx

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

3.解压nginx

tar -zvxf nginx-1.22.1.tar.g2

4.编译安装

cd nginx-1.22.1

5.编译并指定安装位置,执行安装之后会创建指定文件夹/www/env/nginx

./configure--prefix=/www/env/nginx--with-pcre

--with-http_ssl_module--with-http_v2_module

--with-http_realip_module--with-http_addition_module--with-http_sub_module

--with-http_dav_module

--with-http_fiv_module

--with-http_mp4_module

--with-http_gunzip_module

--with-http_gzip_static_module--with-http_random_index_module--with-http_secure_ink_module--with-http_stub_status_module--with-http_auth_request_module--with-http image filter module

./configure --prefix=/home/nginx--with-pcre

--with-http_ss1_module

--with-http_v2_module

--with-http_realip_module--with-http_addition_module--with-http_sub_module

--with-http_dav_module

--with-http_fiv_module

--with-http_mp4_module

--with-http_gunzip_module

--with-http_gzip_static_module--with-http_random_index_module--with-http_secure_link_module--with-http_stub_status_module--with-http_auth_request_module--with-http image filter_module--with-http_slice_module

--with-mai]

--with-threads

--with-file-aio

--with-stream

--with-mail_ss1_module

--with-stream_ssl module

安装结果:

nginx常用命令

nginx -s reload修改配置后重新加载生效

快速停止nginx

nginx -s stop

nginx -s start

启动nginx

nginx -s quit

完整有序的停止nginx

查看nginx的版本nginx -v

nginx -V

查看版本和nginx的配置选项

nginx-t-c/path/to/nginx.conf 测试nginx配置文件是否正确重新打开日志文件

nginx -s reopen、

启动nginx: ps -ef | grep nginx

首先通过SpringBoot+Freemarker快速搭建一个WEB项目:springboot-web-nginx然后在该项目中,创建一个IndexNginxController.java文件,逻辑如下:

复制代码
public class IndexNginxController {
    @Value("${server.port}")
    private String port;
​
    @RequestMapping("/")
    public ModelAndView index(){
        ModelAndView model = new ModelAndView();
        model.addObject("port", port);
        model.setViewName("index");
        return model;
    }
}

在该Controller类中,存在一个成员变量:port,它的值即是从application.properties配置文件中获取server.port值。当出现访问/资源的请求时,跳转前端index页面,并将该值携带返回。

前端的index.ftl文件代码如下:

复制代码
<html>
    <head>
        <title>Nginx演示页面</title>
        <link href="nginx_style.css" rel="stylesheet" type="text/css"/>
    </head>
    <body>
        <div style="border: 2px solid red;margin: auto;width: 800px;text-align: center">
            <div  id="nginx_title">
                <h1>$hello world 172.16.100.10{port}号!</h1>
            </div>
        </div>
    </body>
</html>
复制代码
复制代码

从上可以看出其逻辑并不复杂,仅是从响应中获取了port输出。

前提工作准备就绪后,再简单修改一下nginx.conf的配置即可:

复制代码
upstream nginx_boot{
   # 30s内检查心跳发送两次包,未回复就代表该机器宕机,请求分发权重比为1:2
   server 192.168.100.25:8080 weight=100 max_fails=2 fail_timeout=30s; 
   server 192.168.100.10:8090 weight=200 max_fails=2 fail_timeout=30s;
   # 这里的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;
    }
}

至此,所有的前提工作准备就绪,紧接着再启动Nginx,然后再启动两个web服务,第一个WEB服务启动时,在application.properties配置文件中,将端口号改为8080,第二个WEB服务启动时,将其端口号改为8090

运行结果:

相关推荐
是阿建吖!4 分钟前
【Linux | 网络】传输层(UDP和TCP)
linux·网络·udp·tcp
dessler25 分钟前
RabbitMQ-镜像队列(Mirrored Queues)
linux·运维·rabbitmq
瑾曦29 分钟前
Docker相关命令
linux
发抖吧小喵喵33 分钟前
rpm包直接安装新系统缺少依赖问题处理
linux·运维·服务器
码农101号1 小时前
Linux中Docker Swarm介绍和使用
linux·spring cloud·docker
Nazi61 小时前
dockerfile基础
linux·运维·docker·容器·云计算
所念皆为东辞2 小时前
elk部署加日志收集
linux·elk·elasticsearch·centos
TLucas2 小时前
Centos 7部署.NET 8网站项目
linux·nginx·postgresql·centos·.net
Doris_LMS7 小时前
在Linux下安装nginx(保姆级别)
linux·运维·nginx·centos
超級二蓋茨8 小时前
在 CentOS 上安装 FFmpeg
linux·ffmpeg·centos