Nginx 高级

文章目录

  • Nginx
    • 反向代理
      • 概念
      • 配置
    • 负载均衡
      • 概念
      • 配置
    • 动静分离
      • 概念
      • 配置
    • 网关
    • 防盗链
    • keepalived
    • nginx跨域

Nginx

反向代理

概念

反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个服务器。通过在网络各处放置反向代理节点服务器所构成的在现有的互联网基础之上的一层智能虚拟网络,CDN系统能够实时地根据网络流量和各节点的连接、负载状况以及到用户的距离和响应时间等综合信息将用户的请求重新导向离用户最近的服务节点上。
在这里插入图片描述

正向代理
加速器: 属于正向代理 雷神加速,在我自己的电脑上安装的,启动雷神软件, 雷神给我们访问蓝洞,从蓝洞拿到资源,再给我们。我们是知道蓝洞服务器的地址的。

反向代理
我们开发了一个网站,但是总是收到别人的攻击, www.laohan.com 。 但是为了不让别人直接攻击我的服务器,我就做了一个代理服务器,nginx 。别人通过访问nginx就能代理到我的网址,其实他们是不知道我真正的服务器地址的,他们访问的只是我的nginx的地址。

一般会拿正向代理和方向代理来做对比,本质上来讲,就是看对谁负责

  • 反向代理:代理服务器是对服务器负责,站在服务器的一边的。
  • 正向代理:代理服务器是对客户端负责,站在客户端的一边的。
    在这里插入图片描述
    在这里插入图片描述

配置

这里所有的域名换成自己的域名

域名:xxx.cloud
修改配置文件下的server

 server {
        listen       80;
        server_name  www.xxx.work;

        location / {
            root   /home/www/www;
            index  index.html index.htm;
        }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }

在location 下添加 代理地址:proxy_pass http://xxx.cloud:8088;

并且注释root 和 index。因为启动了代理之后,那么静态文件就会失效了。

重新启动nginx,访问www.xxx.work 其实就相当于访问http://xxx.cloud:8088

负载均衡

ES/服务器: 容量有限/访问数量有限。 20 服务器,请求进来以后需要将请求平均分配到每个服务器上,将压力平摊。

概念

负载均衡:通过某种特点的算法,将用户的请求合理的分配到集群服务的某个服务器上。高并发的一种方案。

在这里插入图片描述

配置

upstream 和server配合使用

  • 在upstream中起别名 ,并配置多个服务器地址和端口
  • 在server的代理中使用起好的别名 proxy_pass http://别名
http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;
    
    #负载
    upstream serverip{
    	server 192.168.56.131:8088;
    	server 192.168.56.132:8088;
    }
    
    server {
        listen       80;
        server_name  www.xxx.work;

        location / {
            proxy_pass http://serverip;
        }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
    
}

在192.168.56.131和192.168.56.132服务器分别部署两个项目,并且启动
在这里插入图片描述

访问域名:www.xxx.work

  • 默认负载方式 轮询。
  • 负载权重
    weight=数字
    server 192.168.56.131:8088 weight=8;
    server 192.168.56.132:8088 weight=2;
  • down
    表示离线,不参加服务
    server 192.168.56.131:8088 weight=8 down;
  • 备用 backup
    正常情况不会使用这个机器,只有其他机器不能用的时候,才启用备用服务器
    server 192.168.56.131:8088 weight=8 backup;
    不停用132服务器的情况下,一直请求 132,当我们手动将132服务器关闭,那么请求就会走131服务器。
  • IP hash
    根据客户端ip地址转发同一台服务器,可以保持会话
  • least_conn
    最少连接访问
  • fair
    根据后端服务器响应时间转发
  • url_hash
    定向url转发

注意:IP hash least_conn fair url_hash在我们实际开发场景里不用
一般开发中我们使用轮询策略+权重(根据服务器性能),配合分布式session技术来开发。

动静分离

适用对象:中小型企业。
动静分离也是优化程序访问速度的一种方式。

概念

当我们向nginx发起请求的时候,nginx会将请求转发到后台服务器,后台服务器在将页面信息给了nginx,然后传递到用户,但是用户的页面会加载很多的静态资源 js css image,其实这些资源没必要再次通过nginx–>后台–>nginx–>用户,我们可以将资源直接放在nginx上,用户需要的资源可以直接从nginx上获取,从而提高响应速度和降低后台服务器的压力。
在这里插入图片描述

配置

记住这里的域名问题,不是复制过来就可以用的

  • 将jar包中的css删除,页面展示的时候 css丢失
  • 将css放入nginx服务html目录中,在server中添加新的location信息,指定加载的css页面,这样就可以从nginx中加载css资源了。
 	server {
        listen       80;
        server_name  www.xxx.work;

        location / {
           proxy_pass http://serverip;
           # root   home/www/www;
           # index  index.html index.htm;
        }
        location /css{
           root html;
           index index.html;
        }

  • 但是我们也想将js image font等都可以放到nginx服务器中,但是每个都location /css location /js比较麻烦,我们可以通过正则的方式匹配
 server {
        listen       80;
        server_name  www.xxx.work;

        location / {
           proxy_pass http://serverip;
           # root   home/www/www;
           # index  index.html index.htm;
        }
        location ~*/(js|css|image|img|lib){
           root html;
           index index.html;
        }

~*表示正则的开始, | 表示或者 ,然后将静态资源都放到 nginx中 即可。

网关

  • 内网代理

131服务开启防火墙,然后就不能直接访问了

systemctl start firewalld

firewall-cmd --reload

systemctl restart firewalld

  • 指定端口和ip访问

firewall-cmd --permanent --add-rich-rule=“rule family=“ipv4” source address=“192.168.56.181” port protocol=“tcp” port=“8088” accept”

  • 移除规则

firewall-cmd --permanent --remove-rich-rule=“rule family=“ipv4” source address=“192.168.56.181” port port=“8088” protocol=“tcp” accept”

firewall-cmd --list-all

  • 通过我们的nginx代理服务器还是能访问到的。
  • 我们的131服务器以后只能通过130服务器访问,130就像一个大门,是进入131的唯一通道,我们也把130服务器叫做网关服务器。在这里插入图片描述

防盗链

盗链:是指在自己的页面上展示一些并不在自己服务器上的内容。通常的做法是通过技术手段获得它人服务器上的资源地址,绕过别人的资源展示页面,直接在自己的页面上向最终用户提供此内容。比较常见的是一些小站盗用大站的资源(图片、音乐、视频、软件等),对于这些小站来说,通过盗链的方法可以减轻自己服务器的负担,因为真实的空间和流量均是来自别人的服务器。

b:130 很多资源

a:140 nginx做代理,代理b 访问a的地址,其实就是在访问b,a就可以在自己的服务器页面上打广告,利用b的资源吸引流量。

  • 再配置一个nginx服务器140, 140服务器代理130服务器。
    在这里插入图片描述
    访问 192.168.56.130
    在这里插入图片描述
    其实所有的静态资源都是从我们130服务器上加载的。

将以下代码添加到静态资源代码里,并且重新加载nginx服务器。

valid_referers 192.168.56.130;
if ($invalid_referer) {
return 403;
}

location ~*/(css|js|images|img|lib){
    valid_referers 192.168.56.130;
    if ($invalid_referer) {
    	return 403;
    }
    root html;
    index index.html;
}

重新访问140服务器,可以靠到访问的静态资源都是403禁止访问的。

  • 原理: 访问时的refer和资源服务器上配置的refer是否一样,不一样就不让访问。
  • curl测试防盗链:
    • curl -I http://192.168.56.130/img/07.jpg
    • I 只显示头信息
    • curl -e “http://192.168.56.130” -I http://192.168.56.130/img/07.jpg -e 表示引用信息
      在这里插入图片描述

keepalived

yum install -y keepalived

cd /etc/keepalived

vi keepalived.conf

130服务器配置

! Configuration File for keepalived

global_defs {
  
   router_id lb130
   
}

vrrp_instance VI_1 {
    state MASTER
    interface ens33
    virtual_router_id 51
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.56.166
    }
}

220 服务器配置

! Configuration File for keepalived

global_defs {
  
   router_id lb220
   
}

vrrp_instance VI_1 {
    state BACKUP
    interface ens33
    virtual_router_id 51
    priority 50
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.56.166
    }
}

systemctl start keepalived

systemctl status keepalived

systemctl restart keepalived

  • 原理: 192.168.56.166是一个虚拟地址,和各个服务器的ip地址关联(但是只能关联一个),默认是给主服务器的,如果主服务器挂了,那么这个虚拟ip就和从服务器关联。

nginx跨域

一般解决的是前端静态页面在不同服务器之间的访问。

# 在server下添加配置文件
 #允许跨域请求的域,* 代表所有
 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' *;

在这里插入图片描述

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

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

相关文章

深入理解数据结构第二弹——二叉树(2)——堆排序及其时间复杂度

看这篇前请先把我上一篇了解一下:深入理解数据结构第一弹——二叉树(1)——堆-CSDN博客 前言: 相信很多学习数据结构的人,都会遇到一种情况,就是明明最一开始学习就学习了时间复杂度,但是在后期…

电商-广告投放效果分析(KMeans聚类、数据分析-pyhton数据分析

电商-广告投放效果分析(KMeans聚类、数据分析) 文章目录 电商-广告投放效果分析(KMeans聚类、数据分析)项目介绍数据数据维度概况数据13个维度介绍 导入库,加载数据数据审查相关性分析数据处理建立模型聚类结果特征分析…

Ceph学习 - 1.存储知识

文章目录 1.存储基础1.1 基础知识1.1.1 存储基础1.1.2 存储使用 1.2 文件系统1.2.1 简介1.2.2 数据存储1.2.3 存储应用的基本方式1.2.4 文件存储 1.3 小结 1.存储基础 学习目标:这一节,我们从基础知识、文件系统、小节三个方面来学习。 1.1 基础知识 1.…

day01 51单片机

51单片机学习 1 51单片机概述 1.1 51单片机简介 目前使用的51单片机一般是宏晶STC89系列,这其中流传最广的版本,也是我们课程的主角,就是STC89C52RC。 1.2 命名规则 1.3 单片机最小应用系统 2 点亮LED灯 2.1 硬件原理图 这个原理图非常简单,VCC接保护电阻R1,串联LED1最…

IOTX:未来市场爆发点的RWA协议?DePIN赛道被低估的龙头

从基本面来看,IoTeX的目标是创建一个连接的世界,在这个世界中,每个人都能控制自己的数据、设备和身份。通过区块链技术,IoTeX旨在解锁智能设备和数据的潜力,支持新一代的现实世界Dapp和数字资产的发展。IOTX始终致力于…

个性化内容的力量:Kompas.ai如何帮你定制内容

在当今的数字化营销环境中,个性化内容已经成为品牌与消费者建立深层次联系的关键。个性化内容不仅能够更好地满足用户的需求,还能够加深用户的品牌体验,从而提高用户满意度和忠诚度。本文将深入探讨个性化内容在提升用户参与度和忠诚度方面的…

Incus:新一代容器与虚拟机编排管理引擎

Incus是什么? Incus是一个用于编排管理应用型容器、系统型容器及虚拟机实例的管理工具。它是对 Canonical LXD 的继承与发展,引入了更多的存储驱动支持。 Incus项目的产品地址:Linux Containers - Incus - Introduction 在 LXC-Incus 项目…

Java练习

这个练习我用到了继承,多态和封装。 1.继承: Animal 类是一个抽象类,它有两个子类 Dog 和 Cat。 Dog 和 Cat 分别继承自 Animal 类,因此它们可以使用 Animal 类中定义的属性和方法,同时也可以有自己特有的属性和方法。…

鸿蒙OS元服务开发:【(Stage模型)学习窗口沉浸式能力】

一、体验窗口沉浸式能力说明 在看视频、玩游戏等场景下,用户往往希望隐藏状态栏、导航栏等不必要的系统窗口,从而获得更佳的沉浸式体验。此时可以借助窗口沉浸式能力(窗口沉浸式能力都是针对应用主窗口而言的),达到预…

基于springboot+vue+Mysql的教学视频点播系统

开发语言:Java框架:springbootJDK版本:JDK1.8服务器:tomcat7数据库:mysql 5.7(一定要5.7版本)数据库工具:Navicat11开发软件:eclipse/myeclipse/ideaMaven包:…

pymc,一个灵活的的 Python 概率编程库!

目录 前言 安装与配置 概率模型 贝叶斯推断 概率分布 蒙特卡罗采样 贝叶斯网络 实例分析 PyMC库的应用场景 1. 概率建模 2. 时间序列分析 3. 模式识别 总结 前言 大家好,今天为大家分享一个超强的 Python 库 - pymc Github地址:https://gith…

黄金票据攻击

黄金票据攻击——域内横向移动技术 一、黄金票据攻击介绍: 黄金票据攻击是一种滥用Kerberos身份认证协议的攻击方式,它允许攻击者伪造域控krbtgt用户的TGT(Ticket-Granting Ticket)。通过这种方法,攻击者可以生成有效…

怎么禁止特定程序运行

计算机已经成为了人们日常生活和工作中不可或缺的工具。 然而,随着计算机应用的广泛化,如何管理和控制计算机上的程序运行也成为了一个亟待解决的问题。 特别是在企业、学校或一些需要严格控制计算机使用环境的场所。 为什么要禁止特定程序运行&#x…

Catcatcat【杂项 攻防世界】

知识点: strings 命令 打印文件中可以打印的字符,可以是任意文件grep flag 过滤出文件中的flag关键字rabbit加密 深入了解Rabbit加密技术:原理、实现与应用-CSDN博客对称加密算法需要密钥,也可不设置数据开头固定:U2F…

6.8物联网RK3399项目开发实录-驱动开发之RTC实时时钟的使用(wulianjishu666)

90款行业常用传感器单片机程序及资料【stm32,stc89c52,arduino适用】 链接:https://pan.baidu.com/s/1M3u8lcznKuXfN8NRoLYtTA?pwdc53f RTC 使用 简介 AIO-3399J 开发板上有 一个集成于 RK808 上的RTC(Real Time Clock),主要功能有时钟&#xff0c…

【OpenCV-颜色空间】

OpenCV-颜色空间 ■ RGB■ BGR■ HSV■ HSL■ HUE■ YUV ■ RGB ■ BGR BGR 就是RGB R和B调换位置。 OpenCV 默认使用BGR ■ HSV ■ HSL ■ HUE ■ YUV

【高校科研动态】贵州师大博士生封清为一作在J. Clean. Prod.发文:中国扶贫搬迁对生态影响的量化研究——以贵州省为例

目录 1.文章简介 2.主要研究内容 3.文章引用 1.文章简介 论文名称:Quantifying the extent of ecological impact from Chinas poverty alleviation relocation program: A case study in Guizhou Province 第一作者及通讯作者:封清&#…

代码随想录第28天 | 93.复原IP地址 、 78.子集 、 90.子集II

一、前言: 参考文献:代码随想录 今天的主题内容是回溯算法,这一章的干货很多,我需要慢慢的品味,不单单只是表象,还需要研究深层原理。 二、复原IP地址 1、思路: (1)…

反射的学习

反射的作用: 1.获取一个类里面的所有信息,获取到之后,在执行其他的业务逻辑 2.结合配置文件,动态的创建对象并调用方法

OpenHarmony实战:轻量级系统之启动恢复子系统移植

启动恢复子系统负责在内核启动之后到应用启动之前的系统关键进程和服务的启动过程的功能。 移植指导 针对轻量系统主要提供了各服务和功能的启动入口标识。在SAMGR启动时,会调用bootstrap标识的入口函数,并启动系统服务。 适配完成后,调用…