Java技术栈 —— Nginx的使用

news2024/12/22 4:48:14

Java技术栈 —— Nginx的使用

  • 一、认识Nginx
  • 二、搭建Nginx环境
    • 2.1 在Ubuntu上安装Nginx
  • 三、使用Nginx
    • 3.1 配置负载均衡(HTTP)

一、认识Nginx

企业需要运行多个相同的副本,并将负载分散在整个系统集群上,为了高性能的负载均衡,引入了Nginx代理,也就是说Nginx可以理解成一套负载均衡的解决方案

参考文章或视频链接
《Nginx官网》

二、搭建Nginx环境

2.1 在Ubuntu上安装Nginx

# (1)更新已配置源的软件包信息
apt-get update
# (2)安装一些有助于配置官方 NGINX 软件包仓库的软件包:
apt install -y curl gnupg2 ca-certificates lsb-release debian-archive-keyring
# (3)下载并保存 NGINX 签名密钥
curl https://nginx.org/keys/nginx_signing.key | gpg --dearmor | tee /usr/share/keyrings/nginx-archive-keyring.gpg >/dev/null
# (4)使用 lsb_release 设置定义操作系统和版本名称的变量,然后创建一个 apt 源文件
OS=$(lsb_release -is | tr '[:upper:]' '[:lower:]')
RELEASE=$(lsb_release -cs)
echo "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg] http://nginx.org/packages/${OS} ${RELEASE} nginx" | tee /etc/apt/sources.list.d/nginx.list
# (5)再次更新软件包信息,然后安装 NGINX
apt-get update
apt-get install -y nginx
# 启动Nginx
nginx
# 停止Nginx
nginx -s stop
# 重新加载配置
nginx -s reload

三、使用Nginx

3.1 配置负载均衡(HTTP)

配置负载均衡是Nginx最直接的功能了(准确的说是HTTP负载均衡,因为TCPUDPHTTP一样都是应用层协议,也可以配置负载均衡),这也是我们入门Nginx的首要目的。首先,假设你用SpringBoot搭了一个简单的Web应用,然后分别启动在99999998端口,那么可以认为这是一个简单的集群,提供同样的服务,但是作为用户肯定不希望记忆这种东西,既然提供同样的服务,那么地址就应该只有一个,下面是将负载分发到两台或多台 HTTP 服务器的配置示例。

假设这是你的SpringBoot项目的一个服务接口。

@RestController
public class demoController {

    public static int count = 0;
    @RequestMapping("/helloworld")
    public String hello_world(){
        System.out.println("Service is visited."+count);
        count++;
        return "hello world";
    }
}
server:
  port: 9999
  servlet: # 项目访问地址
    context-path: /

这是你的Nginx配置。

# /etc/nginx/nginx.conf。注意和/etc/nginx/conf.d/default.conf做区分
http{
	upstream demo {					# upstream代码块
	 	server 127.0.0.1:9999 weight=1;
	 	server 127.0.0.1:9998 weight=2; # 向这个配置所在服务器传输两倍的请求,weight默认值为1
	 	server 127.0.0.1:8000 backup;   # backup备用服务器,以便在上面两台主服务器不可用时发挥作用
	}
	server {
		listen 8011;
		server_name localhost;
	 	location / {
			root   /usr/share/nginx/html;
			index  index.html index.htm;
			proxy_pass http://demo;
	 	}
	}
}

配置好后保存并nginx -s reload重新加载,然后在99999998端口分别启动两个应用程序,那么之前我们访问的是http://127.0.0.1:9999/helloworldhttp://127.0.0.1:9998/helloworld,现在只需要输入 http://127.0.0.1:8011/helloworldhttp://localhost:8011/helloworld 即可,就像这样。

参考文章或视频链接
[1] 《Idea启动多个SpringBoot项目的3种方案》
[2] 《IDEA中run Dashboard面板如何出现?实现批量运行微服务》
[3] 《Nginx实现负载均衡配置》

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1351051.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Kubernetes】配置管理中心Configmap

配置管理中心Configmap 一、简介1.1、什么是Configmap1.2、Configmap能解决什么问题1.3、Configmap应用场景1.4、Configmap局限性 二、Configmap创建方法2.1、命令行直接创建2.2、通过文件创建2.3、指定目录创建2.4、编写configmap资源清单yaml文件 三、使用Configmap3.1、通过…

mac中excel条件格式找到每一列的最大值并标红

假设现在excel有A1:R24组数据,最终效果如下 先选择要处理数据的第一列,然后点击【条件格式】-【新建规则】 style选择【classic】以及【Use a formula to determine which cells to format】,输入规则【C3MAX(C$3:C$24)】 注意这里C$3前面没…

云原生学习系列之基础环境准备(虚拟机搭建)

最近由于工作需要开始学习云原生相关内容,为方便学习操作,准备在外网搭建自己的环境,然后进行相关的练习,搭建环境的第一步便是虚拟机的安装。 基础软件 这里我用到的是CentOS-7-x86_64的操作系统。 链接:https://pa…

Tabs组件的使用

概述 在我们常用的应用中,经常会有视图内容切换的场景,来展示更加丰富的内容。比如下面这个页面,点击底部的页签的选项,可以实现“首页”和“我的” 两个内容视图的切换。 ArkUI开发框架提供了一种页签容器组件Tabs,…

前端 js 基础对象 (3)

js 对象定义 <!DOCTYPE html> <html> <body><h1>JavaScript 对象创建</h1><p id"demo1"></p> <p>new</p> <p id"demo"></p><script> // 创建对象&#xff1a; var persona {fi…

58.网游逆向分析与插件开发-游戏增加自动化助手接口-游戏菜单文字资源读取的逆向分析

内容来源于&#xff1a;易道云信息技术研究院VIP课 之前的内容&#xff1a;接管游戏的自动药水设定功能-CSDN博客 码云地址&#xff08;master分支&#xff09;&#xff1a;https://gitee.com/dye_your_fingers/sro_-ex.git 码云版本号&#xff1a;34b9c1d43b512d0b4a3c395b…

gorm.PrepareStmt模式使用不当问题查询

一、背景 xx服务内存持续上涨。内存占用10%以内&#xff0c;在QPS无明显变化的前提下&#xff0c;内存占用50%左右。 dump了一下heap内存&#xff0c;发现主要是 InitUserCacheRefresh 任务代码占用 正常来说&#xff0c;dao层查完数据库之后&#xff0c;对象应该会释放&…

Python序列之字典

系列文章目录 Python序列之列表Python序列之元组Python序列之字典&#xff08;本篇文章&#xff09;Python序列之集合 Python序列之字典 系列文章目录前言一、字典是什么&#xff1f;二、字典的操作1.创建&#xff08;1&#xff09;通过{}、dict()创建&#xff08;2&#xff0…

实验室(检验科)信息系统LIS源码,客户端:WPF+Windows Forms

lis系统源码&#xff0c;医学检验信息系统源码 LIS系统&#xff08;Laboratory Information System&#xff09;即实验室&#xff08;检验科&#xff09;信息系统&#xff0c;它将检验仪器付出的检验数据与相关信息接入计算机网络系统中&#xff0c;让患者、实验室、临床科室、…

进入IC行业的学习之路:建议和必读书籍推荐

近期有不少渴望进入IC行业的同学在后台给我留言&#xff0c;他们询问如何入门&#xff1f;需要学习哪些内容&#xff1f;推荐的入门必读书籍。 在这个行业已经有些年头了&#xff0c;多多少少有一些经验之谈&#xff0c;今天在这里&#xff0c;我将以我的经验和专业知识为基础…

软件测试之自动化测试的四个阶段

第一阶段&#xff1a;API自动化 之前的想法是&#xff1a;通过API创建数据&#xff0c;访问数据&#xff0c;进行数据操作&#xff0c;存储数据库&#xff0c;通过模拟前端的操作来想象API的访问流程。 然后&#xff0c;验证数据库是否存储正确。后来发现该想法流程就是错误的…

IO作业2.0

思维导图 1> 使用fread、fwrite完成两个文件的拷贝 #include <stdio.h> #include <string.h> #include <stdlib.h> int main(int argc, const char *argv[]) {if(argc ! 3) //判断外部参数 {printf("The terminal format is incorrect\n");r…

刚来实习就跑路,可行么?

最近 编程导航 的一位鱼友问了个让我血压升高的问题&#xff1a; 鱼友提问 鱼皮你好&#xff0c;我投了两周简历&#xff0c;然后昨天面了一个小厂的远程实习并且拿到了 offer&#xff0c;我要不要试试呢&#xff1f; 我在顾虑比如我如果在远程实习期间找到一个中厂或者大厂…

GPT-4在概念推理任务表现不如人类,还需继续学习提高!

圣达菲研究所的科研人员对 GPT-4在推理和抽象能力方面与人类的差距进行了定量研究。他们使用 ConceptARC 基准测试评估了 GPT-4在文本和多模态方面的表现&#xff0c;并发现 GPT-4仍然与人类存在较大差距。对于 GPT-4的抽象推理能力&#xff0c;研究人员发现&#xff0c;无论是…

浏览器---善用的一些调试技巧

https://www.cnblogs.com/dasusu/p/17932742.html

初识Linux下进程

&#x1f30e;初识进程 初识进程 简单认识一下进程 如何管理进程 进程属性信息 内核运行队列 查看进程 通过系统调用获取进程标识符       父子进程       查看运行中的进程 总结 前言&#xff1a; 我们在电脑上点开的一个个应用&#xff0c;其实就是一个个进程&am…

计算机网络(7):网络安全

网络安全问题 计算机网络上的通信面临以下的四种威胁: (1)截获(interception)攻击者从网络上窃听他人的通信内容。 (2)中断(interruption)攻击者有意中断他人在网络上的通信。 (3)篡改(modification)攻击者故意篡改网络上传送的报文。 (4)伪造(fabrication)攻击者伪造信息在网…

DrGraph原理示教 - OpenCV 4 功能 - 阈值

普通阈值 OpenCV中的阈值用于相对于提供的阈值分配像素值。在阈值处理中&#xff0c;将每个像素值与阈值进行比较&#xff0c;如果像素值小于阈值则设置为0&#xff0c;否则设置为最大值&#xff08;一般为255&#xff09;。 在OpenCV中&#xff0c;有多种阈值类型可供选择&am…

融资项目——异常处理

当前端请求后端服务的时候&#xff0c;如果后端出现bug。会返回给前端通用的500异常结果。 但是在项目开发中&#xff0c;我们一般会定义一个统一结果类R用于返回结果数据&#xff0c;所以我们希望将错误也用统一结果类对象返回给前端。 1. 同一异常处理器。 面对一般的错误&…

二维码地址门牌系统技术服务:让您的生活更便捷,一码通行,安全无忧

文章目录 前言一、融合二维码技术与门牌的便捷服务二、手机开门便捷功能三、智能化安全保障四、智能化、便捷化的新型技术 前言 在数字化时代&#xff0c;二维码门牌系统技术应运而生&#xff0c;为了满足人们对安全、便捷生活的需求。这项技术将二维码与门牌结合&#xff0c;…