Nginx配置负载均衡到网关

news2024/11/18 9:31:48

Nginx配置负载均衡到网关

1.需求图示

image-20230108125053452

前置准备工作 https://blog.csdn.net/qq_44981526/article/details/128599898

2.配置实现

1.在C:\Windows\System32\drivers\etc目录下修改hosts文件

#配置llpliving.com nginx虚拟机
192.168.56.100  www.llpliving.com

2.配置nginx负载均衡,这里网关服务只有一个因此只配置了一个,如果由多个可以添加多个,默认轮询方式

#修改配置文件,配置负载均衡
vi /mydata/nginx/conf/nginx.conf
#1.配置要进行负载均衡的服务器ip和端口 llpliving由可以根据实际情况命名
#2.注意upstream上游服务器配置在http全局块中
  upstream llpliving{
        server 192.168.79.1:5050;
        #...
   }

image-20230108125853204

3.配置反向代理

# 1.拷贝default.conf 到 llpliving.conf文件
cp default.conf llpliving.conf
# 2.修改 llpliving.conf配置文件
vi llpliving.conf
或者
vi /mydata/nginx/conf/conf.d/llpliving.conf
#重启 nginx
sudo docker restart nginx

在前面配置了本机hosts解析www.llpliving.com 对应的ip 192.168.56.100(虚拟机nginx的ip)

image-20230108133412869

当浏览器访问http://www.llpliving.com/时,请求到nginx,nginx通过反向代理转发给192.168.1.79:5050网关服务,网关服务在根据路由访问对应的服务。

这里为什么会失败?

1.浏览器携带hosts信息对nginx服务发起请求,nginx进行请求转发时会丢失hosts信息,需要配置nginx让其携带hosts信息

2.浏览器以域名的方式访问nginx,nginx进行转发给网关,网关需匹配域名方式访问,让其匹配到对应的服务

image-20230108133815826

4.配置网关

server:
  port: 5050

spring:
  application:
    name: llpliving-gateway
  cloud:
    nacos:
      discovery:
        server-addr: 127.0.0.1:8848
    gateway:
      routes:
        #比如请求地址为 http://localhost:5050/api/service/** 则对请求路径进行重写,去掉api  -->  http://localhost:7070/**
        #http://localhost:5050/api/service/oss/policy 去掉/api/service--> http://localhost:7070/oss/policy
        - id: llpliving-serviceutil_route
          uri: lb://llpliving-serviceutil
          predicates:
            - Path=/api/service/**
          filters:
            - RewritePath=/api/(?<segment>.*),/$\{segment}
        #比如请求地址为 http://localhost:5050/api/commodity/** 则对请求路径进行重写,去掉api  -->  http://localhost:5050/**
        #因为/api/commodity/**是一个更加精确的路径,必须将这组路由放到/api/**路由前面,否则会报错
        - id: llpliving-commodity_route
          uri: lb://llpliving-commodity
          predicates:
            - Path=/api/commodity/**
          filters:
            - RewritePath=/api/(?<segment>.*),/$\{segment}
        #配置人人fast路由, lb 是协议名如果renren-fast服务有多个支持负载均衡
        # 下面的配置表示前端请求gateway服务 localhost:5050/api开头则将请求转发到renren-fast服务对应的 /renren-fast/**
        - id: llpliving_renren-fast_route
          uri: lb://renren-fast
          predicates:
            - Path=/api/**
          # 路径重写, 将表示 api 拿到,才能找到真正的请求地址,segment表示路径后的参数名字可自定义,但需前后保持一致
          filters:
            - RewritePath=/api/(?<segment>.*),/renren-fast/$\{segment}
        # for nginx 增加一组路由
        - id: llpliving_host_route
          uri: lb://llpliving-commodity
          predicates:
            - Host=**.llpliving.com

5.重启网关, 再访问,会依然错误, 因为 nginx 在转发请求到网关会丢掉一些信息,比如host,因此需要重新配置

6.再次修改 vi /mydata/nginx/conf/conf.d/llpliving.conf

proxt_set_header Host $host让nginx进行请求转发时携带host信息

image-20230108135042653

7.重启nginx

sudo docker restart nginx

3.访问测试image-20230108135230130

4.注意事项和细节

1、!!网关配置不要把 Host 路由配置到前面, 否则按照域名+api 方式的路由就不会成功了, 因为会优
先匹配到 Host

2、将路由配置放在其它路由配置后面, 再测试就 OK 了

# for nginx 增加一组路由
        - id: llpliving_host_route
          uri: lb://llpliving-commodity
          predicates:
            - Host=**.llpliving.com

image-20230108135636951

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

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

相关文章

【C++】优先级队列priority_queue仿函数

这里先简单介绍一下优先级队列priority_queue&#xff1a;优先队列是一种容器适配器,默认的情况下&#xff0c;如果没有为特定的priority_queue类实例化指容器类&#xff0c;则使用vector (deque 也是可以的),需要支持随机访问迭代器&#xff0c;以便始终在内部保持堆结构 文章…

Springboot配置静态资源

目录 1. springboot默认的静态资源存放路径 2.Springboot添加静态资源映射addResourceHandlers addResourceLocations 3.坑 如果方法一和二同时配置 那么就会遵循方法二 方法一的静态文件将找不到 1. springboot默认的静态资源存放路径 静态资源的存放路径为classpath,也就是…

【卷积码系列4】卷积码的状态转移函数、距离谱和译码性能界分析及matlab仿真

一、卷积码的状态图和转移函数 以一个例子入手,对于如下编码器所示的码率1/3卷积码 根据输入和寄存器状态,可以得到其状态图如下所示 图中虚线表示输入比特为1时的转移,而实线表示输入比特为0时的转移 同样,图中虚线表示输入比特为1时的转移,而实线表示输入比特为0…

Diffusion Models从入门到放弃:必读的10篇经典论文

前言&#xff1a;diffusion models是现在人工智能领域最火的方向之一&#xff0c;并引爆了AIGC方向&#xff0c;一大批创业公司随之诞生。笔者2021年6月开始研究diffusion&#xff0c;见证了扩散模型从无人问津到炙手可热的过程&#xff0c;这些篇经典论文我的专栏里都详细介绍…

从0到1完成一个Vue后台管理项目(五、登录页(表单校验的使用和封装))

往期 从0到1完成一个Vue后台管理项目&#xff08;一、创建项目&#xff09; 从0到1完成一个Vue后台管理项目&#xff08;二、使用element-ui&#xff09; 从0到1完成一个Vue后台管理项目&#xff08;三、使用SCSS/LESS&#xff0c;安装图标库&#xff09; 从0到1完成一个Vu…

IDEA的使用

1.安装 官网: https://www.jetbrains.com/IDEA 工作界面介绍 2.使用技巧 √设置字体和颜色主题 菜单 file -> settings √字符编码设置 可以自己设置快捷键 常用快捷键&#xff1a;删除当前行, 默认是 ctrl Y 自己配置 ctrl d复制当前行, 自己配置 ctrl alt 向下光…

10、可观测性--系统告警

文章目录告警的作用告警数据来源黑盒白盒日志统计指标链路追踪故障分类告警的作用 在没有告警的时候&#xff0c;我们一般是人工定期地查看相关的指标或者链路数据&#xff0c;再去程序上确认。虽然人工也能监控&#xff0c;但有时还是难以判定是否真的出现了问题&#xff0c;…

【云原生进阶之容器】第二章Controller Manager原理2.6节--Informer controller

6 Informer 的 controller DeltaFIFO 是一个非常重要的组件,真正让他发挥价值的,便是 Informer 的 controller。 虽然 Kubernetes 源码中的确用的是 controller 这个词,但是此 controller 并不是 Deployment Controller 这种资源控制器。而是一个承上启下的事件控制器(从 A…

Java并发编程学习14-任务关闭(下)

任务关闭&#xff08;下&#xff09; 《任务关闭》由于篇幅较多&#xff0c;拆分了两篇来介绍各种任务和服务的关闭机制&#xff0c;以及如何编写任务和服务&#xff0c;使它们能够优雅地处理关闭。 1. 处理非正常的线程终止 我们知道&#xff0c;当单线程的控制台程序由于…

Urban NeRF

本文首发于馆主君晓的博客&#xff0c;文章链接 简要介绍 这是谷歌和多伦多大学合作的一篇发表在CVPR2022上的工作&#xff0c;延续NeRF重建的相关思路。考虑到之前的一些工作要么是在合成数据集上进行的NeRF重建&#xff0c;要么就是用到真实的场景&#xff0c;但是场景很小&a…

JDK1.8和JDK1.7的HashMap源码分析以及线程不安全问题

参考&#xff1a; 教你如何阅读HashMap源码~吊打面试官 - 腾讯云开发者社区-腾讯云 (tencent.com) 有一些面试题 Map - HashSet & HashMap 源码解析 | Java 全栈知识体系 (pdai.tech) HashMap源码&底层数据结构分析 | JavaGuide(Java面试学习指南) hashmap头插法和尾插…

LAB1 VRRP实验

■实验拓扑 ■实验需求 多厂商的网关冗余&#xff08;VRPP&#xff09; 考虑上行/上上行/下行链路的之间的track 生成树配置 VPC能访问R4的loopback口地址&#xff08;8.8.8.8&#xff09; ■实验步骤 ▶思科路由器CISCO-R4 Router(config)#hostname CISCO-R4 CISCO-…

【博客581】为什么MASQUERADE都在POSTROUTING做

为什么MASQUERADE都在POSTROUTING做 MASQUERADE都在POSTROUTING做&#xff0c;为什么不能在output做 1、iptables flow graph&#xff1a; 2、output之后的routing和rerouting&#xff1a; 对于本机 app 发出(outcoming)的流量&#xff0c;netfilter 有2次 routing 过程&…

算法刷题打卡第59天:相交链表

相交链表 难度&#xff1a;简单 给你两个单链表的头节点 headA 和 headB &#xff0c;请你找出并返回两个单链表相交的起始节点。如果两个链表不存在相交节点&#xff0c;返回 null 。 图示两个链表在节点 c1 开始相交&#xff1a; 题目数据 保证 整个链式结构中不存在环。 …

空洞卷积atrous/dilated convolution

1、定义 空洞卷积&#xff08;atrous/dilated convolution&#xff09;又称膨胀卷积是针对图像语义分割问题中下采样会降低图像分辨率、丢失信息而提出的一种卷积思路。空洞卷积向卷积层引入了一个称为“扩张率/膨胀率(dilation rate)”的新参数&#xff0c;该参数定义了卷积核…

Excel 个人财务:如何在 Excel 模板中创建预算

wpcmf “金钱是一种工具。使用得当&#xff0c;它会变得美丽——使用不当&#xff0c;它会变得一团糟&#xff01;” – 布拉德利文森 正确使用金钱需要纪律。在本教程中&#xff0c;我们将了解如何使用 Excel 进行个人财务以正确管理我们的预算和财务。我们将涵盖以下主题。 …

Java使用spire进行word文档的替换

前言 今天遇到一个需求&#xff0c;需要对word模板进行替换制定的变量 在网上找了很多方案&#xff0c;做了很多的demo&#xff0c;下面就把我觉得比较简单的一种分享给大家 本次的主角是&#xff1a;spire.doc spire.doc是专门实现对word的操作&#xff08;包括文字&#…

「数据密集型系统搭建」原理篇|OLAP、OLTP,竟是两个世界

本篇来聊聊OLAP与OLTP的区别以及它们各自的适用场景&#xff0c;以此话题为导引和大家聊聊技术视野与知识储备对于研发同学的重要性&#xff0c;最后站在事务处理与在线分析的角度分别论述下两个数据世界的底层构建逻辑。 OLAP、OLTP的概念与区别 概念 了解OLAP、OLTP的概念&…

【CANN训练营第三季】学习ascend-CANN遇到的经典疑难问题总结

1、/home/HwHiAiUser/samples_1/cplusplus/level2_simple_inference/1_classification/resnet50_imagenet_classification/src/…/inc/utils.h:13:10: fatal error: acl/acl.h: No such file or directory #include “acl/acl.h” 原因&#xff1a;放错了DDK——PATH export D…

【Unity3D】快速上手 EasyAR

目录 一&#xff0c;AR技术 1.AR简介 2.AR特点 3.AR工作原理 二&#xff0c;EasyAR 插件 1.获取Key 2.EasyAR 插件下载和导入 三&#xff0c;快速上手 EasyAR 废话不多说上运行效果 一&#xff0c;AR技术 1.AR简介 AR&#xff08;Augmented Reality&#xff0c;增强现…