侧边栏壁纸
博主头像
小明锅博主等级

没错,我就是小明,不过已经长大了,成为一名码农,在搬砖的同时,喜欢分享Java的编程知识,本网站致力于一站式后端人员开发,解决码农日常问题,挤出更多moyu时间

  • 累计撰写 15 篇文章
  • 累计创建 7 个标签
  • 累计收到 2 条评论
标签搜索

目 录CONTENT

文章目录

Nginx搭建负载均衡+反向代理

小明锅
2024-04-15 / 0 评论 / 0 点赞 / 64 阅读 / 1,595 字 / 正在检测是否收录...

一:需求背景

Nginx相信大家应该不陌生吧!是一个高性能web服务器,可以做负载均衡或者是反向代理,比如,把静态页面直接部署到到html,实现动静分离,一个服务器部署多个服务,缓解服务压力,等等,都可以利用Nginx实现。

1.负载均衡

这个理解比较简单,其实就是压力分摊,一个工程部署多个节点,也就是传说中的分布式,这样对于所有请求不会全部落到一个节点上,而造成某个节点压力过大。nginx在配置上游服务就可以设置对应负载权重。

2.反向代理

这个可能不太好理解,可以先看一下图:
image-1713162796343

也就是,用户就访问了一个服务器域名,Nginx会帮我们转发到实际访问的ip或者端口,比如对于微服务工程,用户访问:www.mall.com/product,但是可能会转发到product-service这个工程的主机ip,这就是Nginx给我们处理的,反向代理。

而正向代理,就不会去转发,处理请求也是域名对应的ip主机。

二:Nginx负载均衡+反向代理实战

1.Nginx配置结构

首先,在开发配置修改前,我们简单了解一下Nginx的结构,对于Windows版本,官网下载,文件目录结构如下:

image-1713162814010

我们主要关注的是conf文件下的配置文件nginx.conf,这个文件也是我们后面要修改配置负载均衡和反向代理,后面对于其他Nginx配置也是修改这个文件

image-1713162821153

nginx.conf文件的结构:主要关注server块,一个服务对应一个sever块

image-1713162826989

2.代码实战

使用idea开发工具随便讲一个springboot工程,本文主要是介绍Nginx的配置,工程服务内容可以不用在意,不过可以写一个controller请求,响应提示我们请求了那个服务器端口,来验证负载均衡。保证工程正常启动,配置启动项,在VM配置JVM启动端口,指定服务端口,我们可以配置两个服务端口,9901和9902,来模拟同个服务部署到两个机器

image-1713162834176

Nginx修改conf配置文件:

#user  nobody;
worker_processes  1;

#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#pid        logs/nginx.pid;


events {
    worker_connections  1024;
}


http {
    include       mime.types;
    default_type  application/octet-stream;


    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;

    # 配置上游服务器,负载均衡
    upstream mynginx{
        server localhost:9901;
		server localhost:9902;
    }

    server {
        listen       8801;
        server_name  localhost;


        location / {
            proxy_pass http://mynginx;
            index  index.html index.htm;
        }

        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }

    }
}

配置说明:

网络请求到localhost:8801,会反向代理到上游服务器,也就是upstream mynginx,上游服务配置了多个,会默认根据轮询的方式进行请求。

程序效果:我们只访问http://localhost:8801/inventory/sale,但是实际上9901和9902两个端口会分担请求,至此我们就完成了负载均衡。

image-1713162853738
image-1713162859244

三:总结

本文主要是介绍了Nginx负载均衡和反向代理的hallo world,算是比较基础入门,比较适合新手开始,能够加深对Nginx的理解和使用。其实Nginx还能做很多事情,后续会继续发文,欢迎大家评论区留言和订阅。

0

评论区