Java技术栈 —— Nginx的使用

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实现负载均衡配置》

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

vue实现滑动切换:切换选项时滑块有滑动过渡的效果

效果图 思路: 1. 高亮的色块是独立的一个盒子,需要插入当前激活的内容用来撑开色块盒子的宽度,这样色块的宽度就会和当前激活的内容宽度一致,色块的字体颜色设置透明即可 2. 色块滑动的距离是读当前激活元素的offsetLeft&#x…

UG装配-接触对齐

UG装配约束命令在如下位置 首选接触:含接触和对齐,自动判断两种类型 接触:约束对象使其曲面法向在相反方向,并共面或共线 对齐:约束对象使其曲面法向在同一方向,并共面或共线 自动判断中心/轴&#xff1…

RK3568笔记七:yolov5-seg实例分割测试验证

若该文为原创文章,转载请注明原文出处。 记录的目的是想在RK3568上实现实例分割,在github的rknn_mode_zoo仓库里看到了例子,带着疑问测试了一下,结果跑通了,这里记录下全过程。 一、环境 1、硬件:正点原…

kafka 的零拷贝原理

文章目录 kafka 的零拷贝原理 今天来跟大家聊聊kafka的零拷贝原理是什么? kafka 的零拷贝原理 零拷贝是一种减少数据拷贝的机制,能够有效提升数据的效率;   在实际应用中,如果我们需要把磁盘中的某个文件内容发送到远程服务器上…

深度学习 | 注意力机制、自注意力机制

卷积神经网络的思想主要是通过卷积层对图像进行特征提取,从而达到降低计算复杂度的目的,利用的是空间特征信息;循环神级网络主要是对序列数据进行建模,利用的是时间维度的信息。 而第三种 注意力机制 网络,关注的是数据…

2023-12-20 LeetCode每日一题(判别首字母缩略词)

2023-12-20每日一题 一、题目编号 2828. 判别首字母缩略词二、题目链接 点击跳转到题目位置 三、题目描述 给你一个字符串数组 words 和一个字符串 s ,请你判断 s 是不是 words 的 首字母缩略词 。 如果可以按顺序串联 words 中每个字符串的第一个字符形成字符…

使用频率分析求周期性

通常很难通过观察时间测量值来表征数据中的振荡行为。频谱分析有助于确定信号是否为周期性信号并测量不同周期。 办公楼内的温度计每半小时测量一次室内温度,持续四个月。加载数据并对其绘图。将温度转换为摄氏度。测量时间以周为单位。因此,采样率为 2 …

洛谷:集合与差分

1.学籍管理(map&#xff09; #include<iostream> #include<map> #include<string> using namespace std; map<string,int>a; int n; string name; int op,score; int main() {cin>>n;for(int i1;i<n;i){cin>>op;if(op!4)cin>>na…

异常检测 | Matlab基于GNN图神经网络的数据异常数据检测

异常检测 | Matlab基于GNN图神经网络的数据异常数据检测 目录 异常检测 | Matlab基于GNN图神经网络的数据异常数据检测效果一览基本介绍模型描述程序设计参考资料 效果一览 基本介绍 Matlab基于GNN图神经网络的数据异常数据检测。其核心思想是学习一个函数映射。本次使用人类活…

Powermill各版本安装指南

下载链接 https://pan.baidu.com/s/1CsrYEUQNmDa820RxDV2G6Q?pwd0531 1.鼠标右击【PowerMill2024(64bit)】压缩包&#xff08;win11及以上系统需先点击“显示更多选项”&#xff09;【解压到 PowerMill2024(64bit)】。 2.打开解压后的文件夹&#xff0c;双击打开【Setup】文…

70内网安全-域横向内网漫游Socks代理隧道技术(下)

这节课解决代理的问题&#xff0c; 他是内网里面的穿透技术&#xff0c;隧道主要安全设备和流量监控的拦截问题&#xff0c;我们在做渗透的时候需要回显数据或者一些重要的信息&#xff0c;走的协议不一样&#xff0c;tcp/ip有七层&#xff0c; 在不同层里面有不同的协议&…

flowable工作流看这一篇就够了(进阶篇 下)

目录 三、多人会签 3.1、多实例介绍 3.2、基本应用 案例一&#xff08;静态指定数量&#xff09; 案例二&#xff08;动态数量和指派审批人&#xff09; 案例三&#xff08;表达式方式&#xff09; 案例四&#xff08;Java方法控制完成条件&#xff09; 3.3、服务任务 …

加入近屿智能OJAC的AIGC星辰大海深度训练营:开启您的AI大模型之旅!

成为AI领域的专家吗&#xff1f;想要实现升职加薪吗&#xff1f;加入第六期近屿智能OJAC第六期AIGC星辰大海&#xff1a;大模型工程师与产品专家深度训练营&#xff0c;正是你学习AIGC技术&#xff0c;实现转型的绝佳机会。在这里&#xff0c;不仅是学习&#xff0c;更是您职业…

亲爱的程序猿们,元旦快乐!

新年祝福 在这个充满欢笑和祝福的日子里&#xff0c;我想对你们说&#xff1a; 新的一年&#xff0c;愿你们像代码一样充满逻辑&#xff0c;像算法一样追求高效&#xff0c;像编程语言一样多样化&#xff01; 2024年即将到来&#xff0c;预测几个行业趋势&#xff1a; 人工…

【数据结构】排序之交换排序(冒泡 | 快排)

交换目录 1. 前言2. 交换排序3. 冒泡排序3.1 分析3.2 代码实现 4. 快速排序4.1 hoare版本4.1.1 分析4.1.2 hoare版本代码 4.2 挖坑法4.2.1 分析4.2.2 挖坑法代码实现 4.3 前后指针版本4.3.1 分析4.3.2 前后指针版本代码实现 1. 前言 在之前的博客中介绍了插入排序&#xff0c;…

Windows搭建RTSP视频流服务(EasyDarWin服务器版)

文章目录 引言1、安装FFmpeg2、安装EasyDarWin3、实现本地\虚拟摄像头推流服务4、使用VLC或PotPlayer可视化播放器播放视频5、RTSP / RTMP系列文章 引言 RTSP和RTMP视频流的区别 RTSP &#xff08;Real-Time Streaming Protocol&#xff09;实时流媒体协议。 RTSP定义流格式&am…

Spring高手之路-Spring AOP

目录 什么是AOP Spring AOP有如下概念 补充&#xff1a; AOP是如何实现的 Spring AOP 是通过代理模式实现的。 Spring AOP默认使用标准的JDK动态代理进行AOP代理。 什么是AOP AOP(Aspect-Oriented Programming)&#xff0c;即面向切面编程&#xff0c;用人话说就是把公共的…

【小沐学Python】Python实现免费天气预报获取(OpenWeatherMap)

文章目录 1、简介1.1 工具简介1.2 费用1.3 注册1.4 申请key 2、接口说明2.1 One Call 3.02.2 Current Weather and Forecasts collection2.2.1 API 调用2.2.2 API 参数 2.3 Historical Weather collection2.4 Weather Maps collection2.5 Other weather APIs 3、接口测试3.1 例…

菜鸟网络Java实习一面面经

自我介绍&#xff0c;做过的项目 巴拉巴拉 你项目中用到redis&#xff0c;可以介绍一下为什么使用它吗&#xff1f; 基于内存操作&#xff0c;内存读写速度快。 支持多种数据类型&#xff0c;包括String、Hash、List、Set、ZSet等。 支持持久化。Redis支持RDB和AOF两种持久…

【Latex错误:】Package fontspec: The font “SIMLI“ cannot be found. LaTex [行 37,列1]

【Latex错误&#xff1a;】Package fontspec: The font "SIMLI" cannot be found. LaTex [行 37&#xff0c;列1] 解决方案 错误详情如下图所示&#xff1a; 最近使用latex写毕业论文&#xff0c;效率是快&#xff0c;但是出些一些错误就难得搞了&#xff0c;上面的…