百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术教程 > 正文

Nginx 实现负载均衡 java web 实例教学

suiw9 2025-03-25 17:18 12 浏览 0 评论

本文将详细介绍使用 Nginx 实现 Java Web 应用负载均衡的完整实例,包括 Java Web 项目搭建、Nginx 配置及负载均衡测试。

1. 搭建 Java Web 项目

这里使用 Spring Boot 框架来创建一个简单的 Java Web 项目,该项目会返回当前处理请求的服务器信息。

步骤

  1. 1. 创建 Spring Boot 项目:可以使用 Spring Initializr(https://start.spring.io/)来快速创建一个基本的 Spring Boot 项目,添加 Spring Web 依赖。
  2. 2. 编写控制器类:在 src/main/java 目录下创建一个控制器类,例如 HelloController.java,代码如下:
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class HelloController {

    @GetMapping("/hello")
    public String hello() {
        return "Hello from Server: " + System.getProperty("server.name", "Unknown");
    }
}
  1. 3. 打包并运行项目:使用 Maven 或 Gradle 打包项目,生成可执行的 JAR 文件。然后分别在不同的端口启动多个实例,模拟不同的服务器。例如,启动两个实例,分别监听 80818082 端口:
# 启动第一个实例,监听 8081 端口
java -Dserver.port=8081 -Dserver.name=Server1 -jar your-project.jar
# 启动第二个实例,监听 8082 端口
java -Dserver.port=8082 -Dserver.name=Server2 -jar your-project.jar

2. 配置 Nginx 实现负载均衡

步骤

  1. 1. 安装 Nginx:根据你的操作系统安装 Nginx,例如在 Ubuntu 上可以使用以下命令:
sudo apt-get update
sudo apt-get install nginx
  1. 2. 编辑 Nginx 配置文件:打开 Nginx 的配置文件,通常位于 /etc/nginx/nginx.conf/etc/nginx/sites-available/default。在配置文件中添加以下内容:
http {
    # 定义后端服务器组
    upstream backend_servers {
        server 127.0.0.1:8081;
        server 127.0.0.1:8082;
    }

    server {
        listen 80;
        server_name your_domain_or_ip;

        location / {
            # 配置反向代理和负载均衡
            proxy_pass http://backend_servers;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        }
    }
}

上述配置中:

  • upstream backend_servers:定义了一个名为 backend_servers 的后端服务器组,包含两个服务器 127.0.0.1:8081127.0.0.1:8082
  • proxy_pass http://backend_servers:将请求代理到 backend_servers 服务器组,Nginx 会自动实现负载均衡。
  1. 3. 检查并重新加载 Nginx 配置
sudo nginx -t  # 检查配置文件语法
sudo systemctl reload nginx  # 重新加载 Nginx 配置

3. 测试负载均衡

打开浏览器或使用工具(如 curl)多次访问
http://your_domain_or_ip/hello
,每次访问时,返回的服务器信息可能会不同,这表明 Nginx 已经成功实现了负载均衡。例如:

curl http://your_domain_or_ip/hello

多次执行上述命令,你可能会看到交替返回 Hello from Server: Server1Hello from Server: Server2

4. 其他负载均衡策略(可选)

Nginx 支持多种负载均衡策略,除了默认的轮询策略,还可以使用以下策略:

加权轮询

upstream 块中为每个服务器指定权重,权重越高,分配到的请求越多。

upstream backend_servers {
    server 127.0.0.1:8081 weight=2;
    server 127.0.0.1:8082 weight=1;
}

IP 哈希

根据客户端的 IP 地址进行哈希计算,将相同 IP 地址的请求始终分配到同一台服务器。

upstream backend_servers {
    ip_hash;
    server 127.0.0.1:8081;
    server 127.0.0.1:8082;
}

基于以上步骤,你可以实现一个简单的 Java Web 应用负载均衡实例。

还是那句话:干中学,学中干

如果觉得不错的话,麻烦点个关注,收藏谢谢。

毕竟:

相关推荐

Qt编程进阶(99):使用OpenGL绘制三维图形

一、Qt中的OpenGL支持...

OpenGL基础图形编程(七)建模(opengl教程48讲)

七、OpenGL建模  OpenGL基本库提供了大量绘制各种类型图元的方法,辅助库也提供了不少描述复杂三维图形的函数。这一章主要介绍基本图元,如点、线、多边形,有了这些图元,就可以建立比较复杂的模型了...

ffmpeg cv:Mat编码成H265数据流(ffmpeg编码mp4视频)

流程下面附一张使用FFmpeg编码视频的流程图。使用该流程,不仅可以编码H.264的视频,而且可以编码MPEG4/MPEG2/VP8等等各种...

986g超轻酷睿本,联想ThinkPad X1 Carbon 2025 Aura评测

今年3月份,联想首发了搭载Intel酷睿Ultra移动平台的ThinkPadX1CarbonGen12轻薄本,其续航表现令人惊喜。时隔9个月,IT之家收到了ThinkPad...

拆解五六年前的国产平板,这做工!

之前在论坛有幸运得被抽到奖,就是猎奇手机镜头,到手的时候玩了下鱼眼和广角微距,效果见图,用手机拍的那么就进入正题来说下拆鸡过程,外壳我就不拍出来了,免得打广告之嫌,拆出背面外壳就出现了一个裸板。第...

什么是闭合GOP和开放GOP?(闭合式和开放式区分)

翻译|Alex技术审校|李忠本文来自OTTVerse,作者为KrishnaRaoVijayanagar。...

拆解五六年前的国产平板(国产平板怎么拆开)

之前在论坛有幸运得被抽到奖,就是猎奇手机镜头,到手的时候玩了下鱼眼和广角微距,效果见图,用手机拍的那么就进入正题来说下拆鸡过程,外壳我就不拍出来了,免得打广告之嫌,拆出背面外壳就出现了一个裸板。第...

如何使用PSV播放MP4 视频自动退出怎么办

作者:iamwin来源:巴士论坛(点此进入)看到有很多同学在为psv无法播放视频而困扰,自己研究了下,发一个可以解决PSV出现播放视频播放到一半就跳出的问题。就是这个问题:首先,请大家先升级到版本≥1...

2023-03-21:音视频解混合(demuxer)为MP3和H264...

2023-03-21:音视频解混合(demuxer)为MP3和H264,用go语言编写。答案2023-03-21:...

FFmpeg解码H264及swscale缩放详解

本文概要:...

CasaOS保姆级喂饭教程!网心云OEC-Turbo安装CasaOS系统固件!

本内容来源于@什么值得买APP,观点仅代表作者本人|作者:柒叶君...

Firefox 33将整合思科开源编解码器OpenH264

思科去年在BSD许可证下开源了支持H.264编解码的OpenH264,Mozilla则在当时宣布将在Firefox中整合思科的二进制模块。现在,最新的FirefoxNightly(Firefox3...

为什么传输视频流的时候需要将YUV编码成H.264?

首先开始的时候我们借用一张雷神的图帮助大家理解一下从上图可以看出我们要做的,就是将像素层的YUV格式,编码出编码层的h264数据。...

FFmpeg学习(1)开篇(ffmpeg开发教程)

FFmpeg学习(1)开篇...

喜欢看视频必须了解 AV1编码那点事

喜欢看视频的小伙伴大概都有点感觉,AV1这个不太熟悉的视频格式,最近闹出的事情可不少,比如视频网站为了节约带宽偷偷默认使用AV1格式,让电脑狂转;比如Intel专门给旧CPU发布了相关工具;再比如GP...

取消回复欢迎 发表评论: