Nginx三大功能详解

news2024/12/28 4:23:28

文章目录

  • Nginx(动静分离)
    • 1.基本介绍
    • 2.需求分析
    • 3.思路分析
    • 4.先使用传统的方式
        • 1.配置win的tomcat
          • 1.webapps\search\cal.jsp
          • 2.webapps\search\image\cal.jpg
          • 3.启动tomcat,访问 http://192.168.200.1:8080/search/cal.jsp
        • 2.配置linux的tomcat
          • 1.将image和cal.jsp移动到linux的search目录下
          • 2.启动tomcat,访问 http://192.168.200.128:8080/search/cal.jsp
          • 3.访问 http://192.168.200.1:8080/search/cal.jsp
        • 3.配置nginx.conf(之前配过)
          • http全局块
          • server块
        • 4.启动nginx,访问 http://look.sunxiansheng.cn:7777/search/cal.jsp
    • 5.动静分离优化
        • 1.分析静态资源请求路径
          • 资源路径为/search/image/cal.jpg
        • 2.在nginx的安装目录下创建/search/image/来存放静态资源
        • 3.修改nginx.conf 配置动静分离
        • 4.重载使配置生效 `./sbin/nginx -s reload`
        • 5.浏览器访问 http://look.sunxiansheng.cn:7777/search/cal.jsp
        • 6.Nginx配置核心
  • Nginx(反向代理)
    • 1.反向代理快速入门
        • 1.需求分析
        • 2.思路分析
        • 3.配置前提
          • 1.安装JDK8
          • 2.安装Tomcat8
          • 3.测试是否安装成功
            • 测试java:输入java -version
            • 测试tomcat:进入安装的bin目录 `cd /opt/tomcat/apache-tomcat-8.5.59/bin` 执行 `./startup.sh`
          • 4.测试win下访问tomcat
            • 1.查看8080端口是否开放 `firewall-cmd --list-all`
            • 2.查看虚拟机ip,`ifconfig`
            • 3.win浏览器访问 http://192.168.200.128:8080/
            • 4.反向代理不需要开放8080端口,所以关闭 `firewall-cmd --permanent --remove-port=8080/tcp` 然后重载 `firewall-cmd --reload`
        • 4.配置域名解析到虚拟机的ip
        • 5.修改安装目录\nginx.conf
          • 1.检测配置文件是否正确,进入nginx安装目录 `cd /usr/local/nginx/` 输入 `./sbin/nginx -t`则会检测安装目录下的nginx.conf文件的语法
          • 2.上面显示46行有问题,发现少加了一个分号
          • 3.重载nginx 使配置文件生效 `./sbin/nginx -s reload`
        • 6.浏览器访问 http://tomcat.sunxiansheng.cn/ 反向代理成功
    • 2.反向代理配置-Location实例
        • 1.需求分析
        • 2.思路分析
        • 3.location语法规则
          • 1.语法
          • 2.优先级
          • 3.匹配的规则
        • 4.实际常用规则(重点)
          • 1.第一个必选规则-精确匹配网站根目录(匹配到即返回)
          • 2.第二个必选规则-处理静态文件请求(匹配到即返回)
            • 有两种配置模式,目录匹配或后缀匹配,任选其一或搭配使用
          • 3.第三个规则就是通用规则,用来转发动态请求到后端应用服务器(匹配符合要求的最长location)
          • 4.常用规则小结
        • 5.应用实例
          • 1.在linux的tomcat下编写 webapps\product\hi.html
            • 1.这样的资源完整路径就是http://192.168.200.128:8080/product/hi.html
            • 2.进入webapps目录 `cd /opt/tomcat/apache-tomcat-8.5.59/webapps`
            • 3.创建product文件夹 `mkdir product`
            • 4.编辑hi.html文件 `vim product/hi.html`
            • 5.本机测试访问 http://192.168.200.128:8080/product/hi.html
          • 2.在win的tomcat下编写 webapps\member\hello.html
            • 1.查看win的ip为 192.168.200.1
            • 2.这样资源的完整路径就是http://192.168.200.1:8080/member/hello.html
            • 3.webapps下创建member文件夹并编写hello.html文件
            • 4.启动win的tomcat
            • 5.本机测试访问 http://192.168.200.1:8080/member/hello.html
          • 3.保证两端网络连通
            • 1.虚拟机ping 192.168.200.1 不通
            • 2.关闭win防火墙,再次ping,确定网络互通
            • 3.虚拟机直接访问 http://192.168.200.1:8080/member/hello.html
          • 4.配置nginx.conf
            • 1.打开nginx.conf `cd /usr/local/nginx/` `vim nginx.conf`
            • 2.配置nginx.conf
            • 3.重载nginx 使配置文件生效 `./sbin/nginx -s reload`
            • 4.查看10000端口是否在监听 `netstat -anp | grep 10000`
          • 5.开启10000端口的防火墙
          • 6.windows测试访问
            • http://192.168.200.128:10000/member/hello.html
            • http://192.168.200.128:10000/product/hi.html
            • http://tomcat.sunxiansheng.cn:10000/product/hi.html
  • Nginx(负载均衡)
    • 1.需求分析
    • 2.思路分析
    • 3.负载均衡配置规则
        • 1.轮询(默认)
        • 2.weight
        • 3.ip_hash
        • 4.fair
    • 4.具体实现
        • 1.部署两个服务
          • 1.在linux的tomcat下的webapps中创建/search/look.html
          • 2.在win的tomcat下的webapps中创建/search/look.html
          • 3.重启两个tomcat,并测试nginx服务是否可以访问其他服务
            • 1.重启win的tomcat后测试本机访问 http://192.168.200.1:8080/search/look.html
            • 2.重启linux的tomcat后测试本机访问 http://192.168.200.128:8080/search/look.html
            • 3.测试linux访问 http://192.168.200.1:8080/search/look.html
        • 2.配置域名解析到linux服务器
        • 3.配置nginx.conf
          • 1.在http全局块配置
          • 2.在server块配置
          • 3.重载nginx 使配置文件生效 `./sbin/nginx -s reload`
        • 4.开启7777端口的防火墙
        • 5.测试
          • win访问 http://look.sunxiansheng.cn:7777/search/look.html
        • 6.示意图
        • 7.注意事项
          • 1.nginx.conf的upstream不能带下划线
          • 2.浏览器不能是无痕的
          • 3.tomcat没有监听端口问题
        • 8.负载均衡配置

Nginx(动静分离)

1.基本介绍

image-20240407092401376

image-20240407092415222

2.需求分析

image-20240407092432696

3.思路分析

image-20240407093143923

4.先使用传统的方式

1.配置win的tomcat
1.webapps\search\cal.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>

<html>
<head>
<title>hello, jsp</title>
</head>
<body>
<img src="image/cal.jpg"/>
<h1>JSP, 计算器</h1>

<%
int i = 20;

int j = 70;

int res = i + j;

out.println(i + " + " + j + " = " + res);

%>

</body>
</html>
2.webapps\search\image\cal.jpg

image-20240407094735483

3.启动tomcat,访问 http://192.168.200.1:8080/search/cal.jsp

image-20240407095507619

2.配置linux的tomcat
1.将image和cal.jsp移动到linux的search目录下

image-20240407095133005

2.启动tomcat,访问 http://192.168.200.128:8080/search/cal.jsp

image-20240407095611813

3.访问 http://192.168.200.1:8080/search/cal.jsp

image-20240407095902937

3.配置nginx.conf(之前配过)
http全局块

image-20240407100618521

server块

image-20240407100607951

4.启动nginx,访问 http://look.sunxiansheng.cn:7777/search/cal.jsp

image-20240407101529567

image-20240407101453080

5.动静分离优化

1.分析静态资源请求路径
资源路径为/search/image/cal.jpg

image-20240407103858559

2.在nginx的安装目录下创建/search/image/来存放静态资源

image-20240407104353746

3.修改nginx.conf 配置动静分离
  • 这样配置就表示当匹配到jpg结尾的文件时,假如是/search/image/cal.jpg,会将/usr/local/nginx/与/search/image/cal.jpg拼接,来寻找资源

image-20240407104536384

4.重载使配置生效 ./sbin/nginx -s reload
5.浏览器访问 http://look.sunxiansheng.cn:7777/search/cal.jsp
6.Nginx配置核心
  • 服务发现 + 匹配资源路径
  • 服务发现 + 拼接资源路径
  • 首先部署服务,然后写出使用浏览器怎么访问服务,最后配置Nginx

image-20240407114043512

Nginx(反向代理)

1.反向代理快速入门

1.需求分析

image-20240406111319371

2.思路分析

image-20240406112710731

3.配置前提
1.安装JDK8
2.安装Tomcat8
3.测试是否安装成功
测试java:输入java -version

image-20240406113253774

测试tomcat:进入安装的bin目录 cd /opt/tomcat/apache-tomcat-8.5.59/bin 执行 ./startup.sh

本机访问 http://localhost:8080/

image-20240406113956996

4.测试win下访问tomcat
1.查看8080端口是否开放 firewall-cmd --list-all

image-20240406114219270

2.查看虚拟机ip,ifconfig

image-20240406114258480

3.win浏览器访问 http://192.168.200.128:8080/

image-20240406114352577

4.反向代理不需要开放8080端口,所以关闭 firewall-cmd --permanent --remove-port=8080/tcp 然后重载 firewall-cmd --reload

image-20240406140006329

4.配置域名解析到虚拟机的ip

image-20240406134632187

5.修改安装目录\nginx.conf

image-20240406115959902

1.检测配置文件是否正确,进入nginx安装目录 cd /usr/local/nginx/ 输入 ./sbin/nginx -t则会检测安装目录下的nginx.conf文件的语法

image-20240406120620742

2.上面显示46行有问题,发现少加了一个分号

image-20240406120457538

3.重载nginx 使配置文件生效 ./sbin/nginx -s reload
6.浏览器访问 http://tomcat.sunxiansheng.cn/ 反向代理成功

image-20240406135032639

2.反向代理配置-Location实例

1.需求分析

image-20240406140246207

2.思路分析

image-20240406141323564

3.location语法规则
1.语法

image-20240406150606136

2.优先级
  • =:精确匹配
  • ^~:匹配以某个路径开头的
  • ~:正则匹配,区分大小写
  • ~*:正则匹配,不区分大小写
  • 普通匹配
3.匹配的规则
  1. 非普通匹配:只要按照优先级匹配到了,就直接返回
  2. 普通匹配:会匹配符合要求的最长路径
  3. 关于普通匹配 /api/ 就相当于/api/* 即只要资源路径的前缀是/api/即可
  4. 只要是服务就记住两句话
    1. 服务发现 = ip + 端口 + 上下文路径(可选)
    2. 查找资源 = 服务发现 + 资源路径
4.实际常用规则(重点)
1.第一个必选规则-精确匹配网站根目录(匹配到即返回)
  • 服务发现 + / 可以匹配到这个location
  • proxy_pass 表示,当匹配到这个的时候,将请求转发到 http://tomcat:8080/index + /
    location = / {
       proxy_pass http://tomcat:8080/index
    }
2.第二个必选规则-处理静态文件请求(匹配到即返回)
有两种配置模式,目录匹配或后缀匹配,任选其一或搭配使用
  • 服务发现 + /static/* 可以匹配到这个location
  • root表示,匹配到之后在本服务下找 /webroot/res/ + **/static/***中间的/会自动去掉
    location ^~ /static/ {
       # 请求/static/a.txt 将被映射到实际目录文件:/webroot/res/static/a.txt
       root /webroot/res/;
    }
  • *服务发现 + .(gif|jpg|jpeg|png|css|js|html|ico) 可以匹配到这个location
  • root表示,匹配到之后在本服务下找**/webroot/res/ + .(gif|jpg|jpeg|png|css|js|html|ico)* 中间的/会自动去掉
    location ~* \.(gif|jpg|jpeg|png|css|js|html|ico)$ {
       root /webroot/res/;
    }
3.第三个规则就是通用规则,用来转发动态请求到后端应用服务器(匹配符合要求的最长location)
  • 服务发现 + /* 可以匹配到这个location
  • 如果匹配到则会将请求转发到 http://tomcat:8080/ + /*
    location / {
       proxy_pass http://tomcat:8080/
    }
4.常用规则小结
  • 实际上使用的也就是一个精确匹配一个处理静态文件的匹配,还有一堆通用匹配
  • 前两个匹配是正则匹配,只要匹配到了就返回
  • 最后的一堆都是通用匹配,匹配到了不一定马上返回,直到匹配到符合要求的最长location才会返回
5.应用实例
1.在linux的tomcat下编写 webapps\product\hi.html
1.这样的资源完整路径就是http://192.168.200.128:8080/product/hi.html
2.进入webapps目录 cd /opt/tomcat/apache-tomcat-8.5.59/webapps
3.创建product文件夹 mkdir product
4.编辑hi.html文件 vim product/hi.html

image-20240406155439901

5.本机测试访问 http://192.168.200.128:8080/product/hi.html

image-20240406155739081

2.在win的tomcat下编写 webapps\member\hello.html
1.查看win的ip为 192.168.200.1

image-20240406160208523

2.这样资源的完整路径就是http://192.168.200.1:8080/member/hello.html
3.webapps下创建member文件夹并编写hello.html文件

image-20240406160353314

4.启动win的tomcat

image-20240406160824240

5.本机测试访问 http://192.168.200.1:8080/member/hello.html

image-20240406160850465

3.保证两端网络连通
1.虚拟机ping 192.168.200.1 不通

image-20240406161018559

2.关闭win防火墙,再次ping,确定网络互通

image-20240406161201804

3.虚拟机直接访问 http://192.168.200.1:8080/member/hello.html

image-20240406161406070

4.配置nginx.conf
1.打开nginx.conf cd /usr/local/nginx/ vim nginx.conf

image-20240406161648403

2.配置nginx.conf

image-20240406162738065

3.重载nginx 使配置文件生效 ./sbin/nginx -s reload
4.查看10000端口是否在监听 netstat -anp | grep 10000

image-20240406162822365

5.开启10000端口的防火墙
firewall-cmd --permanent --add-port=10000/tcp
firewall-cmd --reload
firewall-cmd --query-port=10000/tcp

image-20240406163805381

6.windows测试访问
http://192.168.200.128:10000/member/hello.html

image-20240406163859095

http://192.168.200.128:10000/product/hi.html

image-20240406163919808

http://tomcat.sunxiansheng.cn:10000/product/hi.html

image-20240406164331366

Nginx(负载均衡)

1.需求分析

image-20240406170924517

2.思路分析

image-20240406171820259

3.负载均衡配置规则

1.轮询(默认)

image-20240406173005071

2.weight

image-20240406173018543

3.ip_hash

image-20240406173042177

4.fair

image-20240406173114532

4.具体实现

1.部署两个服务
1.在linux的tomcat下的webapps中创建/search/look.html

image-20240406191601067

image-20240406191738458

2.在win的tomcat下的webapps中创建/search/look.html

image-20240406192015755

image-20240406192002691

3.重启两个tomcat,并测试nginx服务是否可以访问其他服务
1.重启win的tomcat后测试本机访问 http://192.168.200.1:8080/search/look.html

image-20240406192326709

2.重启linux的tomcat后测试本机访问 http://192.168.200.128:8080/search/look.html

image-20240406192650933

3.测试linux访问 http://192.168.200.1:8080/search/look.html

image-20240406192852751

2.配置域名解析到linux服务器

image-20240406193902156

3.配置nginx.conf
1.在http全局块配置

image-20240406204525909

2.在server块配置

image-20240406204534891

3.重载nginx 使配置文件生效 ./sbin/nginx -s reload
4.开启7777端口的防火墙
firewall-cmd --permanent --add-port=7777/tcp && firewall-cmd --reload && firewall-cmd --query-port=7777/tcp

image-20240406200711812

5.测试
win访问 http://look.sunxiansheng.cn:7777/search/look.html

image-20240406204702712

image-20240406204710258

6.示意图
  • 首先将所有需要Nginx管理的服务都列出来
  • 1.Nginx服务发现(server) + 2.匹配服务的资源路径(location)
  • 3.服务发现(proxy_pass)
  • 发送请求时,Nginx服务发现 + 服务的资源路径

image-20240406212630158

7.注意事项
1.nginx.conf的upstream不能带下划线

image-20240406211545171

2.浏览器不能是无痕的

image-20240406211716679

3.tomcat没有监听端口问题

image-20240406211731412

8.负载均衡配置

https://zhuanlan.zhihu.com/p/409693332

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

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

相关文章

计算机毕业设计PHP+vue体检预约管理系统d1yu38

防止在使用不同数据库时&#xff0c;由于底层数据库技术不同造成接口程序紊乱的问题。通过本次系统设计可以提高自己的编程能力&#xff0c;强化对所学知识的理解和运用 本系统是一个服务于医院先关内容的网站&#xff0c;在用户打开网站的第一眼就要明白网站开发的目的&#x…

通义灵码:智能编码的革命性助手

通义灵码是由阿里云推出的一款基于通义大模型的智能编码辅助工具&#xff0c;它通过先进的人工智能技术&#xff0c;为开发者提供了一系列的智能编码功能&#xff0c;极大地提升了编码效率和质量。以下是通义灵码的一些核心功能和应用案例。 核心功能 代码智能生成 通义灵码…

轻量级分布式任务调度平台:XXL-JOB

目录 1 介绍1.1 特性1.2 整体架构 2 快速导入2.1 测试工程导入2.1 初始化数据库2.3 Docker安装任务管理中心 3 XXL-JOB任务注册测试3.1 引入xxl-job依赖3.2 配置xxljob相关信息3.3 定义定时任务执行方法3.3 配置任务执行器 4 CRON表达式4.1 cron表达式语法介绍4.2 cron练习 1 介…

Redis 源码学习记录:字符串

redisObject Redis 中的数据对象 server/redisObject.h 是 Redis 对内部存储的数据定义的抽象类型其定义如下&#xff1a; typedef struct redisObject {unsigned type:4; // 数据类型&#xff0c;字符串&#xff0c;哈希表&#xff0c;列表等等unsigned encoding:4; …

分布式与一致性协议之Raft算法(四)

Raft算法 Raft是如何解决成员变更问题的 在日常工作中&#xff0c;你可能会遇到服务器故障的情况&#xff0c;这时你需要替换集群中的服务器。如果遇到需要改变数据副本数的情况&#xff0c;则需要增加或移除集群中的服务器。总的来说&#xff0c;在日常工作中&#xff0c;集…

【HAL库 STM32】输入捕获并实现超声波测距

文章目录 HC-SR04 超声波模块简介HC-SR04 工作原理如何使用HC-SR04模块程序效果 一、工程配置代码如果您发现文章有错误请与我留言&#xff0c;感谢 HC-SR04 超声波模块简介 HC-SR04 工作原理 模块有2个超声波换能器&#xff08;如图所示&#xff09;&#xff0c;一个发出声波…

Echarts关系图的配置项,一文全解,一目了然。

一、什么是关系图 ECharts 是一个由百度开发的开源可视化库&#xff0c;用于创建丰富的交互式数据可视化图表。关系图&#xff08;Relationship Graph&#xff09;是 ECharts 中的一种图表类型&#xff0c;用于展示节点之间的关系和连接。 关系图通常用于展示复杂的网络结构&a…

408数据结构-树的基本概念与性质 自学知识点整理

树的定义 树是 n n n&#xff08; n ≥ 0 n≥0 n≥0&#xff09;个结点的有限集。当 n 0 n0 n0时&#xff0c;称为空树。 任意一棵非空树应具有以下特性&#xff1a; 有且仅有一个特定的被称为根的结点&#xff08;根结点&#xff09;。当 n &#xff1e; 1 n&#xff1e;1 …

管理能力学习笔记八:Will-Skill矩阵“盘“团队

如何把握带教中的“度”&#xff0c;才能在把事情做好的基础上&#xff0c;又能使员工获得成长呢&#xff1f; 需要做到 合理授权 & 适当辅导 如何做到&#xff1f; 通过使用 意愿-技能矩阵(Will-Skill Matrix) 辨别不同带教方法的适用情形&#xff0c;"盘"…

设计模式之业务代表模式

在编程江湖的风雨中漂泊多年&#xff0c;每当我遇到那些错综复杂的业务逻辑和系统交互&#xff0c;总有一个模式像一位忠诚的骑士&#xff0c;默默守护着我的代码城堡&#xff0c;那就是——业务代表模式&#xff08;Business Delegate Pattern&#xff09;。它不是最耀眼的明星…

Springboot+MybatisPlus入门案例(postman测试)

一、项目框架 pom.xml依赖 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://maven.apac…

基于SkyEye运行Android——应用最为广泛的移动设备操作系统

01.Android简介 Android&#xff08;安卓&#xff09;是一种基于Linux内核&#xff08;不包含GNU组件&#xff09;的开源操作系统&#xff0c;最初由安迪鲁宾开发&#xff0c;主要支持手机。2005年8月由Google收购注资&#xff1b;2007年11月&#xff0c;Google与84家硬件制造…

【区块链】共识算法简介

共识算法简介 区块链三要素&#xff1a; 去中心化共识算法智能合约 共识算法作为区块链三大核心技术之一&#xff0c;其重要性不言而喻。今天就来简单介绍共识算法的基本知识。 最简单的解释&#xff0c;共识算法就是要让所有节点达成共识&#xff0c;保证少数服从多数&#x…

链表(基于C语言单向链表)

链表的实现的思想 链表表示一种是基于链接结构的线性表&#xff0c;链表实现的思想如下&#xff1a; 1、将表中的元素分别储存在一批独立的储存块里面。 2、表结构中的结点都能找到与之相关的下一个结点。 3、在前一个结点里用链表的方式显示的记录与下个结点之间的关联。 链…

原创字幕雨技术,二次剪辑混剪搬运短视频必备,轻松过原创

原创字幕雨素材教程&#xff0c;教你如何制作自己专属的字幕雨&#xff0c; 把素材运营到自己的二次剪辑&#xff0c;提升二创短视频的原创度&#xff0c; 帮助你做搬运或者短视频运营&#xff0c;轻松过原创。 课程目录&#xff1a; 1&#xff1a;什么是字幕雨 2&#xf…

Vue Vant 移动端如何禁止手机调起自带的输入键盘

前言 前不久在公司用Vue2开发了一个手机充值项目&#xff0c;键盘组件用的vant2的NumberKeyboard 数字键盘组件&#xff1b;上线后在IOS端只有一个vant数字键盘组件&#xff0c;但到了Android端&#xff0c;输入框一获取焦点不仅vant数字键盘弹出&#xff0c;连手机自带的键盘…

低空经济+飞行汽车:eVTOL技术详解

低空经济是以各种有人驾驶和无人驾驶航空器的各类低空飞行活动为牵引&#xff0c;辐射带动相关领域融合发展的综合性经济形态。它广泛体现于第一、第二、第三产业之中&#xff0c;在促进经济发展、加强社会保障、服务国防事业等方面发挥着日益重要的作用。 飞行汽车&#xff0c…

2024年第六届先进材料、机械和制造国际会议(AMMM 2024)即将召开!

2024年第六届先进材料、机械和制造国际会议&#xff08;AMMM 2024&#xff09;将于2024年9月6-8日在日本东京举行。AMMM 2024将以国际材料&#xff0c;机械和制造为主题&#xff0c;吸引到来自多个领域的研究人员和学者相聚在一起分享知识&#xff0c;讨论想法&#xff0c;并了…

如何免费体验 gpt2-chatbot

如何免费体验 gpt2-chatbot 就在五一假期期间&#xff0c;一个神秘模型在没有任何官方文件的情况下突然发布。发布后不到 12 小时就立即引起人工智能爱好者和专家们的关注。这个名为“gpt2-chatbot”的神秘新模型凭借其令人印象深刻的能力轰动全球。有人猜测它可能是 OpenAI 的…

手搓堆(C语言)

Heap.h #pragma once#include <stdio.h> #include <stdlib.h> #include <assert.h> #include <stdbool.h> #include <string.h> typedef int HPDataType; typedef struct Heap {HPDataType* a;int size;int capacity; }Heap;//初始化 void Heap…