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: 9999servlet: # 项目访问地址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默认值为1server 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.mzph.cn/news/582825.shtml

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

相关文章

通过C++程序实现光驱的自动化刻录和读取

文章目录 ISO文件格式光盘的基本概念光盘种类特点DVDR光盘使用windows调用Linux调用Linux平台下用到的C库:读取设备驱动列表向光驱中写文件 数字存储媒体快速发展的今天,光驱的使用已经不像以前那样普及了。但是在数据备份、安装软件和操作系统、旧设备兼容等领域还…

PiflowX大数据流水线系统

PiflowX大数据流水线系统。支持分布式计算引擎flink和spark。以所见即所得的方式,实现大数据采集、处理、存储与分析流程化配置、运行与智能监控。 PiflowX基于Piflow(PiFlow: 混合型科学大数据流水线系统,包含丰富的处理器组件,…

算法导论复习(七) 动态规划

动态规划一般用来求解最优化问题 设计一个动态规划算法一般有以下四步: 描述一个最优解的结构特征。递归地定义最优解的值。计算最优解的值,通常采用自底向上的方法。利用计算出的信息构造出一个最优解。 钢条切割问题 体现了动态规划的一个重要性质&a…

k8s 网络

还没有部署网络。 k8s的网络类型: k8s中的通信模式: 1,pod内部之间容器和容器之间的通信。 在同一个pod中的容器共享资源和网络,使用同一个网络命名空间。可以直接通信的。 2,同一个node节点之内不同pod之间的通信。…

大创项目推荐 深度学习YOLO抽烟行为检测 - python opencv

文章目录 1 前言1 课题背景2 实现效果3 Yolov5算法3.1 简介3.2 相关技术 4 数据集处理及实验5 部分核心代码6 最后 1 前言 🔥 优质竞赛项目系列,今天要分享的是 🚩 基于深度学习YOLO抽烟行为检测 该项目较为新颖,适合作为竞赛课…

BAQ压缩MATLAB仿真

本专栏目录: ​​​​​​​全球SAR卫星大盘点与回波数据处理专栏目录-CSDN博客 我们按照上一期文章的BAQ原理编写MATLAB代码,进行baq压缩与解压缩的全流程验证,并分析BAQ压缩对信号指标造成的影响。 生成3个点目标回波数据,加入高斯噪声,对回波进行BAQ压缩和解BAQ压缩,…

具有出色的数据速率、SI8642BA-AUR、SI8642BB-AS1R、SI8641BB-B-IUR、SI8635BD-B-ISR低功耗数字隔离器

一、简介 Si86xx 超低功耗数字隔离器系列是CMOS器件,与传统隔离技术相比,具有出色的数据速率、传播延迟、功耗、尺寸、可靠性和外部BOM优势。这些产品的工作参数在宽温度范围内和整个设备使用寿命内保持稳定,便于设计和高度统一的性能。所有…

java毕业设计—基于SpringBoot的小米商城的设计与实现

1,绪论 1.1 背景调研 电子商城的建设,不仅仅是初级网上购物的实现,它能够有效地在Internet上构架安全的和易于扩展的业务框架体系,实现BToB(企业对企业)、BToC(企业对用户)以及CTo…

首次使用TypeScript,报错:无法重新声明块级范围变量(声明变量报错)

前几天在书写TypeScript代码时,出现了声明变量报错的情况,具体情况如下: let arr: number; arr 10; console.log(arr);报错如下: 解决方案: 在配置文件tsconfig.json中,配置如下代码: { &q…

【计算机毕业设计】SSM医疗药品采购系统

项目介绍 ssm医疗药品采购系统。主要功能有: 用户管理:管理员列表; 采购管理:采购列表; 药品出库:药品出库; 库存管理:库存统计; 数据维护:药品列表、仓库…

软件测试常见的面试题,这些题面试前看提高百分之60的通过率

01、您所熟悉的测试用例设计方法都有哪些?请分别以具体的例子来说明这些方法在测试用例设计工作中的应用。 答:有黑盒和白盒两种测试种类,黑盒有等价类划分法,边界分析法,因果图法和错误猜测法。白盒有逻辑覆盖法&…

3D手势光流计算

GitHub - NVIDIA/flownet2-pytorch: Pytorch implementation of FlowNet 2.0: Evolution of Optical Flow Estimation with Deep Networks 计算光流 conda create -n 3dgesture python3.8 conda activate 3dgesture ​pip install torch 1. import torch时报错ModuleNotFoun…

从 Linux Crontab 到 K8s CronJob,定时任务正在经历怎样的变革

作者:黄晓萌(学仁) 背景 Job 表示短周期的作业,定时 Job 表示按照预定的时间运行Job,或者按照某一频率周期性的运行 Job。比如: 许多传统企业使用 Linux 自带的 crontab 来做定时任务的方案,该方案非常简单&#xff…

腾讯云服务器购买流程:一步步全流程购买指南

腾讯云服务器购买流程直接在官方秒杀活动上购买比较划算,在云服务器CVM或轻量应用服务器页面自定义购买价格比较贵,但是自定义购买云服务器CPU内存带宽配置选择范围广,活动上购买只能选择固定的活动机,选择范围窄,但是…

Vue 问题解决

一、问题:TypeError: (0 , _message.default) is not a function 当没有default时,在其他页面import引入的时,必须加{}。 二、问题:Vue前端页面的表格数据总是一行一行的显示 使用Async/Await来解决前端数据一行一行显示的问题。可以将获取部…

鸿蒙原生应用再添新丁!搜狐集团、航旅纵横入局鸿蒙

鸿蒙原生应用再添新丁!搜狐集团、航旅纵横入局鸿蒙 来自 HarmonyOS 微博12月28日消息,搜狐集团宣布与华为达成全面合作!搜狐新闻近期将完成#鸿蒙原生应用#核心功能版本,搜狐视频也启动了#鸿蒙原生应用#开发!这不仅是一…

数据结构学习 Leetcode494 目标和

关键词:动态规划 01背包 dfs回溯 一个套路: 01背包:空间优化之后dp【target1】,遍历的时候要逆序遍历完全背包:空间优化之后dp【target1】,遍历的时候要正序遍历 题目: 解法一: …

k8s搭建(三、k8s从节点创建)

天行健,君子以自强不息;地势坤,君子以厚德载物。 每个人都有惰性,但不断学习是好好生活的根本,共勉! 文章均为学习整理笔记,分享记录为主,如有错误请指正,共同学习进步。…

Frappe Charts:数据可视化的强大工具

一、产品简介: 一个简单、零依赖、响应式的 开源SVG 图表库。这个图表库无论是数据更新还是屏幕大小变化,都能快速响应并更新图表。数据生成和悬停查看都有舒服的交互动效,体验感很好。不仅支持配置颜色,外观定制也很方便。还支持…

操作教程|MeterSphere UI测试+VNC:简单、快捷地查看UI测试实时执行详情

编者注:本文为CSDN博主hxe116的原创文章。 原文链接为:https://blog.csdn.net/hxe116/article/details/134714960?spm1001.2014.3001.5502 作为一款一站式的开源持续测试平台,MeterSphere涵盖了测试跟踪、接口测试、UI测试和性能测试等功能…