当前位置: 首页 > article >正文

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

在这里插入图片描述

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.kler.cn/a/160626.html

相关文章:

  • 电信网关配置管理系统 upload_channels.php 文件上传致RCE漏洞复现
  • nvm 切换 Node.js 版本
  • Java与HTML:构建静态网页
  • 解锁函数的魔力:Python 中的多值传递、灵活参数与无名之美
  • top-k类问题
  • javascript实现sha512和sha384算法(支持微信小程序),可分多次计算
  • elasticsearch 是如何实现 master 选举的?
  • UniApp H5 跨域代理配置并使用(配置manifest.json、vue.config.js)
  • Android studio 工程的 module 依赖关系图绘制 、 Android Module 依赖关系的可视化实现
  • Nginx的反向代理与负载均衡
  • 人工智能学习8(集成学习之xgboost)
  • 配置和管理VLAN
  • 探究Spring Boot 中实现跨域的几种方式
  • 基因名潘多拉
  • 编程应用实例,养生馆会员管理系统软件统计查询教程
  • 制作飞腾(arm)芯片架构的nexus镜像
  • 朝花夕拾华山平台流水账
  • 智慧景区(园区)数字孪生可视化GIS解决方案
  • Linux自启服务提示:systemd[1]: *.service: main process exited, code=exited, status=1问题
  • 创建Vue2项目,引入chart.js,并生成柱形图
  • gradle 启动报错,CreateProcess error=206, 文件名或扩展名太长
  • html css样式选择器介绍
  • uniapp使用v-html调用接口,富文本图片 视频自适应大小
  • 微信小程序:chooseimage从本地相册选择图片或使用相机拍照
  • DAPP开发【06】nodejs安装与npm路径更换
  • NDK交叉编译工具链使用教程