Nginx配置反向代理与负载均衡

news2024/11/29 4:00:10

在这里插入图片描述

Nginx配置反向代理与负载均衡

    • 一、代理服务
        • 1.正向代理
        • 2.反向代理
    • 二、实战场景-反向代理
        • 1.修改nginx配置 -> nginx.conf文件
        • 2.修改前端路径
    • 三、实战场景-负载均衡
        • 1.热备
        • 2.轮询
        • 3.加权轮询
        • 4.ip_hash

​ Nginx (“engine x”) 是一个高性能的HTTP和反向代理服务器,特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好,中国大陆使用nginx网站用户有:百度、京东、新浪、网易、腾讯、淘宝等。Nginx可以作为静态页面的web服务器,同时还支持CGI协议的动态语言,比如perl、php等。但是不支持java。Java程序只能通过与tomcat配合完成。Nginx专为性能优化而开发,性能是其最重要的考量,实现上非常注重效率 ,能经受高负载的考验,有报告表明能支持高达50,000个并发连接数。

本文主要介绍nginx反向代理的配置,以Windows版本nginx为例,Linux版配置一样,只是安装方式有所区别。

一、代理服务

1.正向代理

​ 正向代理是一个位于客户端和目标服务器之间的服务器,为了从目标服务器取得内容,客户端向代理发送一个请求并指定目标服务器,然后代理向目标服务器转交请求并将获得的内容返回给客户端。

比如:我们通过VPN(Virtual Private Network)访问谷歌,而直接无法访问谷歌,正向代理隐藏了用户,用户的请求被代理服务器接收代替,到了服务器,服务器并不知道用户是谁。

2.反向代理

反向代理(Reverse Proxy)方式是指以代理服务器来接受 Internet 上的连接请求,然后将请求转发给网络上的服务器,并将从服务器上得到的结果返回给 Internet 上请求连接的客户端,此时代理服务器对外就表现为一个反向代理服务器。

image-20231203104931278

二、实战场景-反向代理

我们的后端服务由多个微服务组成,比如sys服务在8081端口,acl服务在8082端口,前端请求后端服务时,只需访问nginx的监听地址,便可以根据不同路径代理到不同的端口上。

1.修改nginx配置 -> nginx.conf文件
http {
   ............
    server {
        listen       9001;
        server_name  localhost;

        location ~ /sys/ {           
            proxy_pass http://localhost:8081;
        }      

        location ~ /acl/ {           
            proxy_pass http://localhost:8082;
        }
    }
}
2.修改前端路径

修改.env.development 文件,修改为nginx路径

# just a flag
ENV = 'development'

# base api
# VUE_APP_BASE_API = '/dev-api'
# 修改为Nginx路径
VUE_APP_BASE_API = 'http://localhost:9001'

三、实战场景-负载均衡

Nginx 提供的负载均衡策略有2种,内置策略和扩展策略。内置策略:轮询、加权轮询与 Ip hash。扩展策略:fair、url_hash 等,首先给大家说下 upstream 这个配置,这个配置是写一组被代理的服务器地址,然后配置负载均衡的算法。

upstream mysvr { 
    server 127.0.0.1:8080;
    server 127.0.0.1:8081;
}
1.热备

如果有两台服务器,当一台服务器发生事故时,才启用第二台服务器给提供服务。服务器处理请求的顺序:AAAAAA-当突然A挂掉-BBBBBBBBBBBBBB…

upstream mysvr {
    server 127.0.0.1:8080; 
    server 127.0.0.1:8081 backup;  #热备     
}
2.轮询

nginx 默认就是轮询其权重都默认为1。服务器处理请求的顺序:ABABABABAB…

upstream mysvr {
    server 127.0.0.1:8080;
    server 127.0.0.1:8081;
}
3.加权轮询

根据配置的权重的大小而分发给不同服务器不同数量的请求。如果不设置,则默认为1。下面服务器的请求顺序为:ABBABBABBABBABB…

upstream mysvr {
    server 127.0.0.1:8080 weight=1;
    server 127.0.0.1:8081 weight=2;
}
4.ip_hash

客户端请求的 ip 进行 hash 操作,然后根据 hash 结果将同一个客户端 ip 的请求分发给同一台服务器进行处理,可以解决session 不共享的问题。

upstream mysvr {
    server 127.0.0.1:8080;
    server 127.0.0.1:8081;
    ip_hash;
}

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

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

相关文章

ubuntu22 安装 cuda12.0

本文是先安装显卡驱动后进行的操作 查看显卡驱动支持CUDA的最新版本12.0 nvidia-smi 检查gcc版本 gcc -v 查看系统支持的gcc版本 https://docs.nvidia.com/cuda/cuda-installation-guide-linux/index.html 选择对应的安装cuda命令 https://developer.nvidia.com/cuda-too…

居民最低生活保障人数数据,2020-2022年数据,shp矢量及表格数据均有!

居民最低生活保障,是国家对共同生活的家庭成员人均收入低于当地最低生活保障标准,且符合当地最低生活保障家庭财产状况规定的家庭,给予最低生活保障。 基本信息. 数据名称: 居民最低生活保障人数数据 数据格式: shpexcel 数据几何类型: 面…

C练习题13

单项选择题(本大题共20小题,每小题2分,共40分。在每小题给出的四个备选项中,选出一个正确的答案,并将所选项前的字母填写在答题纸的相应位置上。) 1.结构化程序由三种基本结构组成、三种基本结构组成的算法是() A.可以完成任何复杂的任务 B. 只能完成部分复杂的任务 C. 只能完…

Fabric:链码的部署及执行

Hyperledger Fabric:V2.5.4 写在最前 使用Fabric搭建自定义网络参考:https://blog.csdn.net/yeshang_lady/article/details/134113296 使用Fabric创建应用通道参考:https://blog.csdn.net/yeshang_lady/article/details/134668458 接下来将介绍如何在自…

配置BFD多跳检测示例

BFD简介 定义 双向转发检测BFD(Bidirectional Forwarding Detection)是一种全网统一的检测机制,用于快速检测、监控网络中链路或者IP路由的转发连通状况。 目的 为了减小设备故障对业务的影响,提高网络的可靠性,网…

CSS属性 display和visibility的区别

在CSS中&#xff0c;有两种让元素隐藏的方式&#xff0c;分别是display和visibility&#xff0c;他们有什么区别呢&#xff1f; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport"…

数据结构 | 查漏补缺之ASL、线索二叉树、哈夫曼树、大根堆、邻接表邻接矩阵

目录 ASL 情形之一&#xff1a;二分查找 线索二叉树 参考博文 哈夫曼树 参考博文 大根堆 参考博文 邻接表&邻接矩阵 参考博文1 参考博文2 ASL 参考博文 关于ASL(平均查找长度)的简单总结_平均查找长度asl-CSDN博客 情形之一&#xff1a;二分查找 线索二叉树 …

记录 | python向上取整和向下取整

python 向上取整和向下取整 向上取整 使用 ceil()&#xff1a; import mathx 0.55 x0 math.ceil(x)向下取整 使用 floor()&#xff1a; import mathx 0.55 x1 math.floor(x)如下&#xff1a;

文章解读与仿真程序复现思路——中国电机工程学报EI\CSCD\北大核心《计及管网选型与潮流约束的区域综合能源系统分期协同规划》

这个标题涉及到区域综合能源系统的规划&#xff0c;其中考虑了两个关键因素&#xff1a;管网选型和潮流约束。下面对标题中的关键术语进行解读&#xff1a; 区域综合能源系统&#xff1a; 这指的是一个综合考虑多种能源形式&#xff08;比如电力、热能、气体等&#xff09;的系…

Jenkins+Maven+Gitlab+Tomcat 自动化构建打包,部署

环境准备Jenkins工具、环境、插件配置全局变量配置安装插件Deploy to containerMaven Integration plugin配置国内mvn源 创建maven项目 环境准备 1、安装服务 Jenkins工具、环境、插件配置 全局变量配置 Manage Jenkins>tools>JDK 安装 安装插件 Deploy to contai…

网站导航栏下滑隐藏,上滑显示,效果杠杆,兼容性强

前言 导航栏是网站必不可少的一部分&#xff0c;那么&#xff0c;导航栏应该怎么样子实现&#xff0c;可以高效自定义兼容开发呢&#xff1f;当然&#xff0c;不仅要实现&#xff0c;而且还要实现导航栏顶部固定位置&#xff0c;下拉隐藏&#xff0c;稍微往上滑动就会出现&…

Android View的 getHeight 和 getMeasuredHeight 的区别

前言 先简单复习一下Android View 的 绘制顺序&#xff1a; 1、onMeasure&#xff08;测量&#xff09;&#xff0c;先根据构造器传进来的LayoutParams&#xff08;布局参数&#xff09;&#xff0c;测量view宽高。 2、onLayout&#xff08;布局&#xff09;&#xff0c;再根…

鸿蒙HarmonyOS4.0开发应用学习笔记

黑马程序员鸿蒙4.0视频学习笔记&#xff0c;供自己回顾使用。1.安装开发工具DevEco Studio 鸿蒙harmony开发文档指南 DevEco Studio下载地址 选择或者安装环境 选择和下载SDK 安装总览 编辑器界面 2.TypeScript语法 2.1变量声明 //string 、number、boolean、any、u…

【Vue第2章】Vue组件化编程

目录 2.1 模块与组件、模块化与组件化 2.1.1 模块 2.1.2 组件 2.1.3 模块化 2.1.4 组件化 2.2 非单文件组件 2.3.1 代码 2.3.1.1 基本使用 2.3.1.2 几个注意点 2.3.1.3 组件的嵌套 2.3.1.4 VueComponent 2.3.1.5 一个重要的内置关系 2.3 单文件组件 2.3.1 一个.v…

网络安全威胁——计算机病毒

计算机病毒 1. 定义2. 计算机病毒的特点3. 计算机病毒的常见类型和攻击方式4. 如何防御计算机病毒 1. 定义 计算机病毒是计算机程序编制者在计算机程序中插入的破坏计算机功能或者破坏数据&#xff0c;影响计算机使用并且能够自我复制的一组计算机指令或程序代码。因其特点与生…

蓝桥杯每日一题2023.12.4

题目描述 竞赛中心 - 蓝桥云课 (lanqiao.cn) 题目分析 本题使用树型DP&#xff0c;蓝桥杯官网出现了一个点的错误&#xff0c;但实际答案是正确的 状态表示&#xff1a;f[u]&#xff1a;在以u为根的子树中包含u的所有联通块的权值的最大值 假设s1&#xff0c;s2,…sk 是u的…

基于ssm的实验室耗材管理系统设计与实现论文

摘 要 互联网发展至今&#xff0c;无论是其理论还是技术都已经成熟&#xff0c;而且它广泛参与在社会中的方方面面。它让信息都可以通过网络传播&#xff0c;搭配信息管理工具可以很好地为人们提供服务。针对实验室耗材信息管理混乱&#xff0c;出错率高&#xff0c;信息安全性…

Java——面试:异常处理所用到的关键字有哪些?具体有什么作用?

1.异常处理所用到的关键字有哪些&#xff1f; Java异常处理所使用的到的关键字有&#xff1a;try、catch、finally、throw、throws五个 2.具体有什么作用&#xff1f; try&#xff1a;用于捕获异常&#xff0c;后面必须跟一个或多个catch块或者一个finally块&#xff1b;捕获到…

基于Java SSM框架实现弹幕视频网站系统项目【项目源码+论文说明】计算机毕业设计

基于java的SSM框架实现弹幕视频网站系统演示 摘要 随着科学技术的飞速发展&#xff0c;社会的方方面面、各行各业都在努力与现代的先进技术接轨&#xff0c;通过科技手段来提高自身的优势&#xff0c;弹幕视频网站当然也不能排除在外。弹幕视频网站是以实际运用为开发背景&…

Java 中 char 和 Unicode、UTF-8、UTF-16、ASCII、GBK 的关系

Unicode、UTF-8、UTF-16、UTF-32、ASCII、GBK、GB2312、ISO-8859-1 它们之间是什么关系? 关于这几种字符编码的关系,经过各种资料研究,总结如下图(请右键在新标签页打开查看或者下载后使用看图工具放大查看): 我们应该从历史的顺序看待这些字符编码的由来: ASCII(早期…