Nginx (40分钟学会,快速入门)

目录​​​​​​​

一、什么是Nginx ? 可以做什么 ?

二、正向代理和反向代理 

三、负载均衡

四、动静分离

五、Nginx 常用命令

六、Nginx实战及总结


一、什么是Nginx ? 可以做什么 ?

  • Nginx 是高性能的 HTTP 和反向代理的 web 服务器,处理高并发能力是十分强大的,能经受高负载的考验,有报告表明能支持高达50000个并发的连接数.
  • Nginx特点就是内存少,并发能力强。事实上Nginx的并发能力确实在同类型的网页服务器中表现比较出色,中国大陆使用Nginx网站用户有:百度、京东 、新浪 、 网易、腾讯 、淘宝等。

为什么要使用Nginx ?

之前我们传统服务,访问量小的情况下都是直接访问到 服务IP 地址。

等用户量变成 10w ,20w的时候,一台服务就会处理不了这么多请求,可能会出现内存溢出 oom。服务就会宕机。

这时候我们Nginx 就发挥了重大作用:

客户端只需要访问同一个IP地址。通过Nginx 的负载均衡 + 反向代理,把10w,20w的用户量打到不同的服务器上进行处理,还可以根据服务的性能,设置服务权重大小的,权重大的服务就会接受请求多一点,权重小的服务就会接受请求少一点。

二、正向代理和反向代理 
  • 正向代理:代理客户端的,指的是客户端通过代理服务器去重定向请求访问到目标服务器的一种代理服务。

  • 反向代理:代理服务器端的,指的是客户端无感知地只会访问同一个服务器ip(域名)。其实服务访问的请求请求到了不同的服务器上。
三、负载均衡

负载均衡策略:轮询、加权轮询、ipHash

轮询:很公平,比如有三台服务器,那么对每个服务器分发一条请求。

加权轮询:对权重大的服务器发大量的请求,对权重小的服务器发少量的请求。

ipHash:好处:解决session共享问题,可保证同一个用户固定访问同一台服务器。

坏处:如果指定访问的这一台服务器挂了,数据会丢失。建议使用 Redis 来存储session 信息

四、动静分离

概念:在我们的软件开发当中,有些请求是需要后台处理的,有些请求是不需要后台处理的(比如:html,css,js等文件),这些不需要后台处理的文件被称为

“静态文件”。我们可以把动态网页根据一定的规则拆分为动态资源和静态资源,我们可以将这些静态资源作为缓存,以此来提高相应的速度。

五、Nginx 常用命令
1.cd /usr/local/nginx/sbin    进入nginx路径
2../nginx -s stop      停止
3../nginx                  启动
4../nginx -s quit       安全退出
5.ps aux|grep nginx   查看nginx进程
6../nginx -s reload  重新加载配置文件
六、Nginx实战及总结

使用Nginx 结合Springboot项目实现 反向代理 + 负载均衡

当我们客户端去请求服务的时候,只会去请求同一个IP地址和端口。通过我们的Nginx 反向代理 + 负载均衡,把接受到的请求按照服务器的权重设置,分发给每一台服务器进行处理。客户端的用户是无感知的,后续添加新的服务器,用户也只是访问的同一个地址

如图所示:

 

那接下来我们实战演示:

1、首先我们创建个Springboot项目,写个测试代码如下:

@RestController
public class controller {

    @RequestMapping("/index")
    public String toString(String name) {
        String str = "hello nginx," + name;
        System.out.println(str);
        return str;
    }
}

然后分别用8082,8083端口启动起来服务:

2、配置Nginx

proxy_pass:配置反向代理地址

upstream:配置服务的负载均衡,还可以设置服务的权重。 

    #上面省略
    
    upstream ks{
      # 负载均衡,weight 可设置服务的权重
      server 127.0.0.1:8082 weight=1;
      server 127.0.0.1:8083 weight=1;
      
      # 后续有新的服务可在此处继续添加IP地址
    }

    server {
        # 只要是访问 8071 的端口,就会走下面的代理地址
        listen       8071;
        server_name  localhost;
        location / {
            root   html;
            index  index.html index.htm;
            # 反向代理
            proxy_pass http://ks;
        }

3、测试

请求地址为Nginx配置的访问地址:http://localhost:8071,因为我们服务权重都配置的是1,那么每个服务基本上是轮询状态,平均每个服务都会收到一次请求。

第1次请求访问,请求到了82的端口服务。

第2次请求访问,请求到了83的端口服务。

 到此Nginx根据每个服务的权重设置,把请求分别转发到了每个服务!

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

单片机从入门到放弃教程001

1. 单片机介绍 单片微型计算机(Single Chip Microcomputer)简称单片机,是典型的嵌入式微处理器(Micro Controller Unit简称MCU),是一种将中央处理器(CPU)、内存、输入输出接口以及其他功能模块集成在单一芯片上的微型计算机。 1…

[极客大挑战 2019]HardSQL 1

看了大佬的wp,没用字典爆破,手动试出来的,屏蔽了常用的关键字,例如:order select union and 最搞的是,空格也有,这个空格后面让我看了好久,该在哪里加括号。 先传入1’ 1试试&#…

深入Android架构(从线程到AIDL)_12 Android UI 单线程程序

目录 6、 Android UI 单线程程序 單線程程序概念 单线程可避免线程安全问题 SurfaceView与非UI线程 6、 Android UI 单线程程序 單線程程序概念 单线程程序意谓着两个(或多个)线程不能共享对象或变量值。Android的UI是单线程程序的环境。UI控件(如Button等)都是由UI线程所…

庐山派K230学习日记3 外设模块GPIO

GPIO和FPIOA 1 本节介绍​ 本节您将学习如何通过控制开发板的GPIO引脚,实现对RGB灯和按键的控制。 🏆学习目标 1️⃣如何将GPIO引脚配置为输出模式,通过引脚电平来控制RGB灯的颜色变化。 2️⃣如何将GPIO引脚配置为输入模式,来检…

【网络安全 | 漏洞挖掘】通过模拟功能实现提权(Bugcrowd)

未经许可,不得转载。 我将与大家分享我在 Bugcrowd 的某个项目中发现的一个漏洞,该项目中有一个“用户模拟”功能。 什么是用户模拟? 用户模拟允许管理员在不知晓用户凭据的情况下“以用户身份登录”。这种功能常见于管理员需要调试问题、审查用户权限或解决投诉的平台中。…

TCP Analysis Flags 之 TCP Retransmission

前言 默认情况下,Wireshark 的 TCP 解析器会跟踪每个 TCP 会话的状态,并在检测到问题或潜在问题时提供额外的信息。在第一次打开捕获文件时,会对每个 TCP 数据包进行一次分析,数据包按照它们在数据包列表中出现的顺序进行处理。可…

doris:基于 Arrow Flight SQL 的高速数据传输链路

Doris 基于 Arrow Flight SQL 协议实现了高速数据链路,支持多种语言使用 SQL 从 Doris 高速读取大批量数据。 用途​ 从 Doris 加载大批量数据到其他组件,如 Python/Java/Spark/Flink,可以使用基于 Arrow Flight SQL 的 ADBC/JDBC 替代过去…

HTML5实现好看的二十四节气网页源码

HTML5实现好看的新年春节元旦网站源码 前言一、设计来源1.1 主界面1.2 关于我们界面1.3 春季节气界面1.4 夏季节气界面1.5 秋季节气界面1.6 冬季节气界面 二、效果和源码2.1 动态效果2.2 源代码 源码下载结束语 HTML5实现好看的二十四节气网页源码,春季节气&#xf…

Elasticsearch:利用 AutoOps 检测长时间运行的搜索查询

作者:来自 Elastic Valentin Crettaz 了解 AutoOps 如何帮助你调查困扰集群的长期搜索查询以提高搜索性能。 AutoOps 于 11 月初在 Elastic Cloud Hosted 上发布,它通过性能建议、资源利用率和成本洞察、实时问题检测和解决路径显著简化了集群管理。 Au…

mysql报错2059

客户端连接mysql服务时提示2059错误,通常与身份验证插件有关,具体表现为客户端无法加载指定的身份验证插件。这个错误在MySQL 8.0及更高版本中较为常见,因为从MySQL 8.0开始,默认的加密规则从mysql_native_password变为了caching_…

应用架构模式

设计模式 设计模式是指根据通用需求来设计解决方案的模板或蓝图,使用设计模式能够更加有效地解决设计过程中的常见问题。设计模式针对不同的问题域有不同的内涵,主要涉及业务、架构、程序设计等问题域,本文主要讨论架构设计模式。 业务设计模…

基于MPPT算法的光伏并网发电系统simulink建模与仿真

目录 1.课题概述 2.系统仿真结果 3.核心程序与模型 4.系统原理简介 5.完整工程文件 1.课题概述 基于MPPT算法的光伏并网发电系统simulink建模与仿真,包括PV光伏发电模块,并网电路,MPPT,PWM等模块。 2.系统仿真结果 3.核心程…

DeepSeek v3为何爆火?如何用其集成Milvus搭建RAG?

最近,DeepSeek v3(一个MoE模型,拥有671B参数,其中37B参数被激活)模型全球爆火。 作为一款能与Claude 3.5 Sonnet,GPT-4o等模型匹敌的开源模型DeepSeek v3不仅将其算法开源,还放出一份扎实的技术…

GPU算力平台的应用之任意门:任意穿搭匹配模型的应用教程

大家好,今天给大家介绍一下:GPU算力平台的应用之任意门:任意穿搭匹配模型的应用教程。 文章目录 一、GPU算力平台概述人工智能智能发展为什么需要GPU算力平台 二、注册与登录账号注册流程 三、平台的应用之Anydoor应用启动器选择Anydoor的应用场景Anydoo…

微信小程序中 “页面” 和 “非页面” 的区别

微信小程序中 “页面” 和 “非页面” 的区别,并用表格进行对比。 核心概念: 页面 (Page): 页面是微信小程序中用户可以直接交互的视图层,也是小程序的基本组成部分。每个页面都有自己的 WXML 结构、WXSS 样式和 JavaScript 逻辑…

exam0-试卷整理

exam0-试卷整理 2010,2013是梦开始的地方,大概率会出原题的 2010 2013 2015 大题 manchester RIP更新 说出ISO与TCP/IP模型的相同点和不同点(8分) 相似: 两者都有层次,网络专业人员都需要知道二者&a…

QT-------------对话框和多窗口程序设计

一、标准对话框 1. QFileDialog 对话框 功能&#xff1a;提供文件选择对话框&#xff0c;方便用户选择文件或目录。 #include <QApplication> #include <QFileDialog> #include <QMessageBox>int main(int argc, char *argv[]) {QApplication app(argc, a…

论文解读 | NeurIPS'24 IRCAN:通过识别和重新加权上下文感知神经元来减轻大语言模型生成中的知识冲突...

点击蓝字 关注我们 AI TIME欢迎每一位AI爱好者的加入&#xff01; 点击 阅读原文 观看作者讲解回放&#xff01; 作者简介 史丹&#xff0c;天津大学博士生 内容简介 大语言模型&#xff08;LLM&#xff09;经过海量数据训练后编码了丰富的世界知识。最近的研究表明&#xff0c…

在DJI无人机上运行VINS-FUISON(PSDK 转 ROS)

安装ceres出现以下报错&#xff0c;将2版本的ceres换成1版本的ceres CMake did not find one.Could not find a package configuration file provided by "absl" with any ofthe following names:abslConfig.cmakeabsl-config.cmakeAdd the installation prefix of …

A*算法与人工势场法结合的路径规划(附MATLAB源码)

A*算法与人工势场法&#xff08;APF&#xff09;结合实现路径规划 路径规划是机器人、无人机及自动驾驶等领域中的一个重要问题。本文结合了经典的 A* 算法与 人工势场法&#xff08;Artificial Potential Field, APF&#xff09;&#xff0c;实现了一种改进的路径规划方法。下…