谁说后端不需要懂的-Nginx知识点

本文涉及的产品
网络型负载均衡 NLB,每月750个小时 15LCU
传统型负载均衡 CLB,每月750个小时 15LCU
应用型负载均衡 ALB,每月750个小时 15LCU
简介: 先赞后看,南哥助你Java进阶一大半他叫,一个俄罗斯程序员。就是他,着手开发了大名鼎鼎处理高并发、高负载网络请求的Nginx,同时他在2004年把Nginx作为开源软件发布。大家好,我是南哥。一个Java学习与进阶的领路人,相信对你通关面试、拿下Offer进入心心念念的公司有所帮助。

先赞后看,南哥助你Java进阶一大半

他叫Igor Sysoev,一个俄罗斯程序员。就是他,着手开发了大名鼎鼎处理高并发、高负载网络请求的Nginx,同时他在2004年把Nginx作为开源软件发布。

在这里插入图片描述

大家好,我是南哥。

一个Java学习与进阶的领路人,相信对你通关面试、拿下Offer进入心心念念的公司有所帮助。

⭐⭐⭐本文收录在《Java学习/进阶/面试指南》:https://github..JavaSouth

1. Nginx必知必会

1.1 Nginx概要

面试官:说说你对Nginx的理解?

一款Web服务器,它叫Nginx,碾压了Apache、Microsoft IIS、Tomact、Lighttpd等一众Web服务器。我们国内没有部署Nginx的科技业务公司,相信也没有多少。

为什么呢?南哥认为和Nginx的出身有关!Nginx在2002年立项开发就是为了服务俄罗斯访问量位居首位的Rambler.ru站点。另外最重要一点,免费开源!让Nginx集结了全球的智慧,帮助它升级迭代、不断攀登宝座。

在Java后端的每一个SpringBoot项目都集成了一个Tomcat服务器,那和Nginx有何区别?其实两者实际上都是提供互联网交互能力的一个节点,同样是Web服务器,不过主要的功能不同。

Tomcat服务器设计小巧轻量,没有集成处理复杂业务场景的功能,更适合作为一个API Web服务器。Nginx提供的功能就很多了,像反向代理、负载均衡、Web缓存,我们企业面向用户的第一关卡便是Nginx,后面的链条才轮到微服务节点。下面我一一道来。

1.2 Nginx反向代理、负载均衡

面试官:Nginx常用功能知道吧?

(1)反向代理

认识Nginx就从它的反向代理功能开始,Nginx可以配置这样的映射关系。

server {
    listen       9001;
    server_name  localhost;

    location ~ /server01/ {
            proxy_pass   http://localhost:8001;
    }
    location ~ /server02/ {
            proxy_pass   http://localhost:8002;
    }
}

以上配置代表了所有包含/server01/的路径,实际指向的是后台端口为:http://localhost:8001

举个栗子,用户访问浏览器,这代表了用户肉眼可见的url链接实际映射到企业内部服务器是哪个地址、哪些微服务节点处理这个url链条的请求等。

当然Nginx的反向代理功能不止上面说的基础功能,Nginx转发策略也是它的本事。我们可以设置代理的正则表达式,把一定规则的域名都转发到某一个端口。

server {
    listen 80;

    server_name example.com;

    location ~ ^/api/ {
        proxy_pass http://api.example.com;
    }
}

例如以上Nginx配置,南哥使用了正则表达式 ^/api/ ,严格匹配所有以 /api/ 开头的URL路径,我们把这些请求转发到 http://api.example.com

(2)负载均衡

后台一众的微服务节点,前面我们知道了Nginx负责代理转发的功能,那Nginx就少不了支持负载均衡。

例如6个微服务节点,1秒内1万个用户请求过来,Nginx这台Web服务器要如何负载均衡把哪些请求转发到哪些个微服务节点。

Nginx服务器提供的负载均衡策略包含了内置策略、扩展策略两个类别,这期我们先说说内置策略,而扩展策略顾名思义其实是第三方提供的,类似于插件。

内置策略包含了以下 3 种。

1、轮询策略

将每个用户请求(也是客户端请求)按一定顺序逐个地代理转发到不同的微服务节点上。

2、加权策略

权是权重的意思,我们可以调整某些个后端节点的权重,性能足够的话权重可以加些,给其他节点兄弟分担分担压力。

3、IP Hash策略

这个策略对请求IP进行了Hash操作,也就是相同的Hash结果都会代理转发到同一个微服务节点上。

1.3 正向代理和反向代理

面试官:那正向代理和反向代理有什么区别?

这两个概念很多网上的解释十分绕口,解释不清。我们先说反向代理。

(1)反向代理

通过上文Nginx反向代理的说明,我们可以知道反向代理配置了暴露给用户的链接与实际服务器地址的映射关系。通过反向代理,可以保护企业内部服务器不被直接暴露、负载均衡处理用户请求等。

(2)正向代理

理解反向代理我们是从企业内部服务器的角度,而理解正向代理,我们要从用户的角度来看。

用户通过浏览器访问某个链接,这个链接的请求先到达正向代理服务器,再由正向代理服务器代理用户做这一次请求动作,最后把请求结果返回给用户。

正向代理服务器在其中实际上充当了一部分防火墙的功能,可以保护局域网内用户的安全。

戳这,《JavaSouth》作为一份涵盖Java程序员所需掌握核心知识、面试重点的《Java学习进阶指南》。

在这里插入图片描述

我是南哥,南就南在Get到你的有趣评论➕点赞➕关注。

创作不易,不妨点赞、收藏、关注支持一下,各位的支持就是我创作的最大动力❤️

相关实践学习
SLB负载均衡实践
本场景通过使用阿里云负载均衡 SLB 以及对负载均衡 SLB 后端服务器 ECS 的权重进行修改,快速解决服务器响应速度慢的问题
负载均衡入门与产品使用指南
负载均衡(Server Load Balancer)是对多台云服务器进行流量分发的负载均衡服务,可以通过流量分发扩展应用系统对外的服务能力,通过消除单点故障提升应用系统的可用性。 本课程主要介绍负载均衡的相关技术以及阿里云负载均衡产品的使用方法。
相关文章
|
4月前
|
负载均衡 应用服务中间件 网络安全
Django后端架构开发:Nginx服务优化实践
Django后端架构开发:Nginx服务优化实践
67 2
|
4月前
|
缓存 负载均衡 前端开发
前端必会的nginx知识点
【8月更文挑战第22天】前端必会的nginx知识点
88 0
|
5月前
|
前端开发 应用服务中间件 nginx
网页设计,若依项目修改(It must be done)01----若依打包位置,nginx代理前端静态资源和后端接口,就是怎样设置转载,访问固定端口,让他访问其他资料的配置文件,访问/,给你那些
网页设计,若依项目修改(It must be done)01----若依打包位置,nginx代理前端静态资源和后端接口,就是怎样设置转载,访问固定端口,让他访问其他资料的配置文件,访问/,给你那些
|
7月前
|
算法 网络协议 NoSQL
百度后端笔试题知识点总结
百度后端笔试题知识点总结
89 0
|
7月前
|
SQL JSON 应用服务中间件
web后端-win-phpMySql-nginx-web发布
web后端-win-phpMySql-nginx-web发布
|
7月前
|
应用服务中间件 Linux nginx
web后端-linux-nginx-1.18操作命令和部署
web后端-linux-nginx-1.18操作命令和部署
|
7月前
|
运维 Java 开发工具
Java后端学习路线6大维度详细总结(编程基础+开发工具+应用框架+运维知识+成神之路+平稳降落)【可作为知识点梳理列表】【点击可查看高清原图】
Java后端学习路线6大维度详细总结(编程基础+开发工具+应用框架+运维知识+成神之路+平稳降落)【可作为知识点梳理列表】【点击可查看高清原图】
101 0
|
负载均衡 网络协议 应用服务中间件
后端必备 Nginx 配置
后端必备 Nginx 配置
75 0
|
存储 编译器 Linux
千万不要错过的后端【纯干货】面试知识点整理 I I
千万不要错过的后端【纯干货】面试知识点整理 I I
|
存储 设计模式 编译器
千万不要错过的后端【纯干货】面试知识点整理 I
千万不要错过的后端【纯干货】面试知识点整理 I