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

nginx服务器

nginx反向代理

在这里插入图片描述

nginx 反向代理的好处:

  • 提高访问速度

    因为nginx本身可以进行缓存,如果访问的同一接口,并且做了数据缓存, nginx就直接可把数据返回,不需要真正地访问服务端,从而提高访问速度。

  • 进行负载均衡

    所谓负载均衡,就是把大量的请求按照我们指定的方式均衡的分配给集群中的每台服务器。

  • 保证后端服务安全

    因为一般后台服务地址不会暴露,所以使用浏览器不能直接访问,可以把nginx作为请求访问的入口,请求到达nginx后转发到具体的服务中,从而保证后端服务的安全。

nginx 反向代理的配置:

server{listen 80;server_name localhost;location /api/{proxy_pass http://localhost:8080/admin/; #反向代理}
}

**proxy_pass:**该指令是用来设置代理服务器的地址,可以是主机名称,IP地址加端口号等形式。

如上代码的含义是:监听80端口号, 然后当我们访问 http://localhost:80/api/…/…这样的接口的时候,它会通过 location /api/ {} 这样的反向代理到 http://localhost:8080/admin/上来。

nginx 负载均衡

当如果服务以集群的方式进行部署时,那nginx在转发请求到服务器时就需要做相应的负载均衡。其实,负载均衡从本质上来说也是基于反向代理来实现的,最终都是转发请求。

**nginx 负载均衡的配置方式:**```nginx
upstream webservers{server 192.168.100.128:8080;server 192.168.100.129:8080;
}
server{listen 80;server_name localhost;location /api/{proxy_pass http://webservers/admin;#负载均衡}
}

*upstream:如果代理服务器是一组服务器的话,我们可以使用upstream指令配置后端服务器组。

如上代码的含义是:监听80端口号, 然后当我们访问 http://localhost:80/api/…/…这样的接口的时候,它会通过 location /api/ {} 这样的反向代理到 http://webservers/admin,根据webservers名称找到一组服务器,根据设置的负载均衡策略(默认是轮询)转发到具体的服务器
注:**upstream后面的名称可自定义,但要上下保持一致。

nginx 负载均衡策略:

| 轮询 | 默认方式
| weight | 权重方式,默认为1,权重越高,被分配的客户端请求就越多 |
| ip_hash | 依据ip分配方式,这样每个访客可以固定访问一个后端服务 |
| least_conn | 依据最少连接方式,把请求优先分配给连接数少的后端服务 |
| url_hash | 依据url分配方式,这样相同的url会被分配到同一个后端服务 |
| fair | 依据响应时间方式,响应时间短的服务将会被优先分配 |

**weight:**```nginx
upstream webservers{server 192.168.100.128:8080 weight=90;server 192.168.100.129:8080 weight=10;
}
**ip_hash:**```nginx
upstream webservers{ip_hash;server 192.168.100.128:8080;server 192.168.100.129:8080;
}

least_conn:

upstream webservers{least_conn;server 192.168.100.128:8080;server 192.168.100.129:8080;
}

url_hash:

upstream webservers{hash &request_uri;server 192.168.100.128:8080;server 192.168.100.129:8080;
}

fair:

upstream webservers{server 192.168.100.128:8080;server 192.168.100.129:8080;fair;
}

相关文章:

  • golang学习笔记——基础02
  • 滚雪球学Java(09-3):Java中的逻辑运算符,你真的掌握了吗?
  • 20个Golang最佳实践
  • 模拟滴答声
  • 零代码编程:用ChatGPT自动合并多个Word文件
  • Tensorflow2.0:CNN、ResNet实现MNIST分类识别
  • 宝塔https403默认串站问题解决
  • 【数据结构】树与二叉树(十八):树的存储结构——Father链接结构、儿子链表链接结构
  • C++ 编写动态二维double型数据类Matrix
  • IDEA导入jar包
  • ​软考-高级-系统架构设计师教程(清华第2版)【第9章 软件可靠性基础知识(P320~344)-思维导图】​
  • modbusRTU通信简单实现(使用NModbus4通信库)
  • 【喵叔闲扯】--迪米特法则
  • 23111708[含文档+PPT+源码等]计算机毕业设计基于javaweb的旅游网站前台与后台旅景点
  • 元宇宙3D云展厅应用到汽车销售的方案及特点
  • Computed property XXX was assigned to but it has no setter
  • Gradle 5.0 正式版发布
  • LeetCode18.四数之和 JavaScript
  • node学习系列之简单文件上传
  • quasar-framework cnodejs社区
  • weex踩坑之旅第一弹 ~ 搭建具有入口文件的weex脚手架
  • 从零搭建Koa2 Server
  • 基于Vue2全家桶的移动端AppDEMO实现
  • 面试总结JavaScript篇
  • 数组的操作
  • 提升用户体验的利器——使用Vue-Occupy实现占位效果
  • 再次简单明了总结flex布局,一看就懂...
  • 转载:[译] 内容加速黑科技趣谈
  • linux 淘宝开源监控工具tsar
  • 机器人开始自主学习,是人类福祉,还是定时炸弹? ...
  • ​插件化DPI在商用WIFI中的价值
  • # 再次尝试 连接失败_无线WiFi无法连接到网络怎么办【解决方法】
  • #NOIP 2014#Day.2 T3 解方程
  • #pragma multi_compile #pragma shader_feature
  • $.each()与$(selector).each()
  • (11)工业界推荐系统-小红书推荐场景及内部实践【粗排三塔模型】
  • (cos^2 X)的定积分,求积分 ∫sin^2(x) dx
  • (C语言)共用体union的用法举例
  • (C语言版)链表(三)——实现双向链表创建、删除、插入、释放内存等简单操作...
  • (pojstep1.3.1)1017(构造法模拟)
  • (附源码)基于SpringBoot和Vue的厨到家服务平台的设计与实现 毕业设计 063133
  • (企业 / 公司项目)前端使用pingyin-pro将汉字转成拼音
  • (三)Hyperledger Fabric 1.1安装部署-chaincode测试
  • (十)DDRC架构组成、效率Efficiency及功能实现
  • (数位dp) 算法竞赛入门到进阶 书本题集
  • (转)Google的Objective-C编码规范
  • (转)甲方乙方——赵民谈找工作
  • (转)四层和七层负载均衡的区别
  • *上位机的定义
  • ..回顾17,展望18
  • .【机器学习】隐马尔可夫模型(Hidden Markov Model,HMM)
  • .bat批处理(十一):替换字符串中包含百分号%的子串
  • .bat批处理(五):遍历指定目录下资源文件并更新
  • .NET CORE Aws S3 使用
  • .Net Core webapi RestFul 统一接口数据返回格式