Nginx教程(2)

news2024/9/29 11:41:30

文章目录

    • 2.1 Nginx解决跨域问题
    • 2.2 Nginx解决静态资源防盗链问题
    • 2.3 Nginx的模块化体系
    • 2.4 Nginx集群负载均衡
    • 2.5 四层负载均衡和七层负载均衡
    • 2.6 使用Nginx构建Tomcat集群

2.1 Nginx解决跨域问题

所谓的跨域问题是指,比如我们现在我们访问域名www.imooc.com,在主页我们可能要同于异步访问淘宝和其它域名,这些域名与imooc不属于同一个域,而这些跨域访问通常是被拒绝的,这个问题就是所谓的跨域问题,解决跨域问题我们是通过Cors跨域资源共享来解决的,其允许浏览器向跨Origin的服务器发起js请求获取响应,实现跨域的形式通常有三种,分别是Jsonp、springBoot Cors 和Nginx。下面展示如何在nginx中配置(现在访问80端口,就支持跨域了):

  1. 首先在本地准备一个html文件
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <!-- 开发环境版本,包含了有帮助的命令行警告 -->
    <script src="https://cdn.jsdelivr.net/npm/vue@2/dist/vue.js"></script>
    <script src="https://cdn.jsdelivr.net/npm/axios/dist/axios.min.js"></script>


</head>
<body>
    <h1>test</h1>
    <div id="nginxCors"></div>
    <script type="text/javascript">
        var index=new Vue({
            el:"#nginxCors",
            data:{
            },
            created() {
                this.testCors();
            },
            methods: {
                testCors(){
                    var serverUrl="http://www.imooc.com:90/images/logo.jpg";
//这里我在host文件中对域名进行了绑定,为原来的ip地址指定了域名(这里可以童工修改host文件或通过软件SwitchHost)
                    axios.get(serverUrl,{}).then(res=>
                    {
                        console.log(res);
                    });
                }
            },
        })
    </script>
</body>
</html>
  1. 运行文件后出现跨域问题
    在这里插入图片描述
  2. 配置nginx重启nginx解决跨域问题
#允许跨域请求的域,*代表所有
add_header 'Access-Control-Allow-Origin' *;
#允许带上cookie请求
add header 'Access-Control-Allow-Credentials' 'true';
#允许请求的方法,比如Get/Post/Put/Delete
add_header 'Access-Control-Allow-Methods' *;
#允许请求的header
add_header 'Access-Control-Allow-Headers' *;

在这里插入图片描述

  1. 再次运行跨域问题得到结果,正确获取到数据

在这里插入图片描述

2.2 Nginx解决静态资源防盗链问题

为了防止其它站点访问本站点的图片(或其它静态资源),我们可以对图片资源设置静态防盗链

  1. 修改html文件并运行在这里插入图片描述

可以发现成功访问到了图片

在这里插入图片描述

  1. 配置nginx防盗链
      #对源站点进行验证
          valid_referers *.imooc.com; 
         #非法引用进行下面判断
          if($invalid_referer){
                return 404;
        }

在这里插入图片描述
现在图片文件就请求不了了,并返回了404
在这里插入图片描述

2.3 Nginx的模块化体系

对于nginx,首先它有一个nginx core,是nginx最核心的内容,里面实现了底层的一些通信协议,并为其它nginx的其他模块和进程提供了运行的环境;nginx core主要分为两个主要模块,其中一个是http模块,另一个是mail模块。主要组成如下:

在这里插入图片描述
event module:事件模块
phase handler:用于处理客户端的请求,处理后负责内容的一个响应
output filter:在phase handler处理完后,会经过一个这个过滤器,它会过滤掉一部分内容然后返回给浏览器
upstream:反向代理模块,它会把用户请求转发到真实的服务器地址,进行响应
load balancer:负载均衡器,用于实现集群
extend module:继承模块,用于实现第三方

2.4 Nginx集群负载均衡

负载均衡(Load Balance)其意思就是分摊到多个操作单元上进行执行,例如Web服务器、FTP服务器、企业关键应用服务器和其它关键任务服务器等,从而共同完成工作任务。

在这里插入图片描述

用户的请求痛殴Nginx处理,分发到不同的服务器进行处理,这些服务器我们叫做upstream

2.5 四层负载均衡和七层负载均衡

四层负载均衡指的是通过ip+端口进行转发;七层负载均衡指的是通过URL、浏览器类别、语言等应用层信息进行转发。七层负载均衡举个例子,如果你的Web服务器分成两组,一组是中文语言的,一组是英文语言的,那么七层负载均衡就可以当用户来访问你的域名时,自动辨别用户语言,然后选择对应的语言服务器组进行负载均衡处理。(负载均衡原理可以看我这个ppt)这里不作详细讲解。

2.6 使用Nginx构建Tomcat集群

创建四台虚拟机,一台作为Nginx代理服务器,另外三台作为Tomcat服务器,其IP地址如下

服务器名称IP地址
Nginx代理服务器172.16.23.145
tomcat1172.16.23.146
tomcat2172.16.23.147
tomcat3172.16.23.148

在这里插入图片描述

全部使用FinalShell进行了连接,集群服务器都已经安装了Tomcat服务
在这里插入图片描述

每个集群服务器的Tomcat都已经启动(注意关闭防火墙),下面在Nginx服务器的conf文件中进行上游配置

#配置上游服务器
    upstream tomcats{
        server 172.16.23.146:8080;
        server 172.16.23.147:8080;
        server 172.16.23.148:8080;
     }
     server {
        listen 80;
        server_name www.tomcats.com;

        location /{
           proxy_pass http://tomcats;

    }
}

在switchHost中配置域名映射(也可以直接在本机的host文件中配置)

在这里插入图片描述
以上Tomcat的一个简单集群就搭建完了

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

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

相关文章

Linux从入门到进阶学习(Ⅳ):Linux实用操作

目录 1 实用技巧 2 软件安装 2.1 CentOs系统 2.2 Ubuntu系统 3 systemctl控制软件 4 软链接 5 日期和时区 5.1 查看日期 5.2 修改时区 5.3 时间校准 6 IP地址和主机名 6.1 IP地址与主机名 6.2 域名解析 7 固定IP地址 8 网络请求和下载 8.1 ping 8.2 wget 8.3…

2022 软件测试填空判断题【太原理工大学】

期末复习汇总&#xff0c;点这里&#xff01;https://blog.csdn.net/m0_52861684/category_12095266.html?spm1001.2014.3001.5482 目录 二、填空题 三、判断题 二、填空题 全是课本原话&#xff0c;不一定只填红色部分&#xff0c;可能下次就换了这句话的其它地方&#xff…

高比例风电电力系统储能运行及配置研究(pythonMatlab实现)

目录 1 概述 2 案例 3 Matlab实现 3.1 题目及分析 3.2 Matlab代码 4 七个题全部代码&#xff08;值得学习&#xff09; 1 概述 “碳中和”目标驱动下未来电力系统必将是高比例可再生能源电力系统&#xff0c;可再生能源输出功率强随机波动性导致系统运行中功率实时平…

比较器和浅谈深浅拷贝

比较器和浅谈深浅拷贝 文章目录比较器和浅谈深浅拷贝前言一.比较器方法一方法二二.深浅拷贝2.1 浅拷贝2.2 深拷贝2.3 总结前言 我们学习完接口以后&#xff0c;我在这里会介绍一个比较器的接口&#xff0c;至于他是来干嘛的&#xff0c;比较器顾名思义就是来比较的&#xff0c…

【安卓学习之常见问题】百度地图卫星地图精度不够

█ 【安卓学习之常见问题】百度地图卫星地图精度不够 █ 系列文章目录 提示&#xff1a;这里是收集了和文件分享有关的文章 【安卓学习之常见问题】android路径及文件问题 【安卓学习之常见问题】文件分享–文件不存在 【安卓学习之常见问题】自定义组件-刷新后跳到第一行 【…

修复 IDEA 使用 Gradle 构建出错时的乱码问题(maven项目转Gradle后乱码,并报“错误,找不到符号”)

在迁移一个基于 Maven 构建项目到基于 Gradle 进行构建, 迁移的过程中发现编译失败了, IDEA 的 Gradle build output 面板出现了许多方块型的乱码. 这样子&#xff1a; 解决步骤1&#xff1a; Step 1: 点击 IDEA 顶部菜单栏中的 HelpStep 2: 点击 Edit Custom VM OptionsStep…

天权信安catf1ag网络安全联合公开赛-AGCTFS战队 wp

文章目录webPOPEzloginFileuploadHistoryMISC简单隐写十位马CryptoEasyrsa疑惑ReverseCheckinPwnCheckinAngrweb POP 脚本 <?php class catf1ag1{ public $hzy; public $arr; public function __construct(){$this->hzy new catf1ag2;$this->arr [&apos;pp…

数据库实验二:安全性语言实验

实验二 安全性语言实验 实验 2.1 自主存取控制实验 1.实验目的 掌握自主存取控制权限的定义和维护方法。 2.实验内容和要求 定义用户、角色&#xff0c;分配权限给用户、角色&#xff0c;回收权限&#xff0c;以相应的用户名登录数据库验证权限分配是否正确。选择一个应用…

【GRU回归预测】基于matlab鲸鱼算法优化门控循环单元WOA-GRU神经网络回归预测(多输入单输出)【含Matlab源码 2285期】

⛄一、CNN-GRU数据预测 1 理论基础 1.1 CNN算法 负荷序列数据为一维数据&#xff0c;用一维卷积核对数据进行卷积处理&#xff0c;以获取数据的特征。 现设定卷积核的维度为3&#xff0c;移动步长为1&#xff0c;对输入数据进行卷积&#xff0c;以获得特征图图谱&#xff0c;即…

postgresql_internals-14 学习笔记(四)TOAST 超尺寸字段存储技术

TOAST之前一直没太弄懂&#xff0c;这一节单独拆出来学习。 一、 引入原因 pg中的每个行只能存在一个page里&#xff0c;不能跨page存储。因此对于一些非常长的行&#xff0c;就需要使用到 TOAST&#xff08;The OverSized Attribute Storage Technique&#xff0c;超尺寸字段存…

import sklearn出现报错,如何正确安装sklearn

目录 一&#xff1a;前言 二&#xff1a;解决方法 三&#xff1a;测试是否成功安装 一&#xff1a;前言 博主最早只使用下面安装命令&#xff0c;安装sklearn pip3 install sklearn -i https://pypi.mirrors.ustc.edu.cn/simple/ 但在pycharm编辑器&#xff0c;导入sklearn模…

更合理的 BBR

BBR 倾向于排空队列&#xff0c;甚至用特殊的 ProbeRTT 状态来排空自己产生的队列以测量 RTT&#xff0c;但这并不现实。一言以蔽之&#xff0c;BBR 无法实时跟踪现状&#xff0c;只靠拢理想。 若因背景流量造成 buffer 抖动&#xff0c;BBR 完全无法应对&#xff0c;其运行状…

手撕B树 | 二三查找树,B+树B*树你都会了吗? | 超详细的数据结构保姆级别实现

说在前面 今天给大家带来B树系列数据结构的讲解&#xff01; 博主为了这篇博客&#xff0c;做了很多准备&#xff0c;试了很多画图软件&#xff0c;就是为了让大家看得明白&#xff01;希望大家不要吝啬一键三连啊&#xff01;&#xff01; 前言 那么这里博主先安利一下一些…

C语言百日刷题第十六天

前言 今天是刷题第16天&#xff0c;放弃不难&#xff0c;但坚持一定很酷~ 五套C语言验报告题 C语言百日刷题第十六天前言试验报告&#xff08;一&#xff09;试验报告&#xff08;二&#xff09;分析功能编写程序试验报告&#xff08;三&#xff09;分析功能编写程序试验报…

自定义图表--随意拖拽拉伸功能的实现

随意拖拽、拉伸元素的功能是现在大热的自定义图表的重要组成功能,本文以最简单的视角搞懂随意拖拽、拉伸元素功能,完成这个功能需要先了解原生 drag && vue-ruler-tool && @smallwei/avue demo在线体验地址:zhao-wenchao110.gitee.io/customdrag 一、了解H…

高并发内存池

"花,就在火海里摇曳开着。" 一、技术介绍 (1)什么是池化技术&#xff1f; 池 是在计算机技术中经常使用的一种设计模式&#xff0c;其内涵在于&#xff1a;将程序中需要经常使用的核心资源先申请出来&#xff0c;放到一个池内,由程序自己管理。这样可以提高资源的使…

【单调栈】接雨水

文章目录双指针动态规划单调栈双指针 每一列雨水的高度&#xff0c;取决于该列 min(左侧最高的柱子高度&#xff0c;右侧最高的柱子高度) - 当前柱子高度 class Solution { public:int trap(vector<int>& height) {int n height.size();int ans 0;for(int i 1; …

ZY_BMP280大气压模块的使用和程序

在搞设计时&#xff0c;用到了大气压模块BMP280&#xff0c;这玩意也不难&#xff0c;主要是淘宝店老板特别der一问三不知&#xff0c;真服了&#xff0c;而且资料里面没有给例程&#xff0c;只有51的例程&#xff0c;利用IIC通信&#xff0c;而且给的例程里面&#xff0c;乱七…

数据库实验五:数据库设计实验

实验五 数据库设计实验 1.实验目的 ​ 掌握数据库设计基本方法及数据库设计工具。 2.实验内容和要求 ​ 掌握数据库设计基本步骤&#xff0c;包括数据库概念结构设计、逻辑结构设计&#xff0c;物理结构设计&#xff0c;数据库模式SQL语句生成。能够使用数据库设计工具进行…

ctf笔记:编码

常见编码 博客链接&#xff1a;https://www.blog.23day.site/articles/76 计算机中的数据都是按字节存储。一个字节(Byte)由8个二进制位组成(bit)。&#xff08;组成范围是0~255(28))一个字节一共可以用来表示256种不同的状态&#xff0c;每一个状态对应一个符号&#xff0c;就…