nginx(三)重写功能 防盗链 方向代理 等

return

可以写在location  server if 里面

return用于完成对请求的处理,并直接向客户端返回响应状态码,比如:可以指定重定向URL(对于特殊重定向状态码,301/302等) 或者是指定提示文本内容(对于特殊状态码403/500等),处于此指令后的所有配置都将不被执行,return可以在server、if 和 location块进行配置

 重写功能

 格式

flag:301:表示永久重定向

302:临时重定向

break:只匹配一次 

last:多次匹配  先匹配1 再匹配2 

flag的格式  301  302 需要些英文

 正则表达式格式

举例说明:

 

 然后保存 重置

 在data里面建立beijing这个文件夹

第二个终端,要经历两次跳转 其实是两次请求

 

 而输入beijing 直接跳转

 因为是301,永久重定向  所以下次访问的时候,直接跳转  不需要请求两次

如果是302  则需要每次都请求两次

案例二  http转换成https

正对全站跳转

然后通过网页去访问  一开始输入的是http://192.168.68.3/

反馈的是

 争对特意的url 进行跳转到https上 就是说主页面是http  但是访问某个固定的url,则访问的是https

last与break对比

break 就匹配一次 就匹配到test上  而last匹配多次  最后要访问到403上

在不建立页面的情况下,测试一下

打开第二个终端

可以看出,当是break的情况时,curl的时候是404 (因为没建立文件)

当时last的情况时,curl的时候是403(原本都没建立文件,应该是404,但是last这边是403,它要多次匹配 匹配到最后一个,因此是403)

总结:break 一次匹配

       last:多次匹配

 防盗链

 当A网站有个图片a.jpg 但是A想节约资源,就在B网站上面,建立一个连接 ,这个连接可以连接a.jpg

举例说明:

弄两台机器 一台nginx 一台apache

第一台nginx子配置内容

第一步 在nginx(centos71)上面添加一张图片

第二步 在安装 apache 并修改网页的配置文件

apache网页默认位置在/var/www/html里面 

 

配置文件的内容:

 随后在重启

 如果想在真机上面去做,还要写一个host的文件

在里面加入 192.168.68.3  www.lucky.com

先修改hosts上一目录的权限,将etc下的只读取消

 

 加入此行

随后在谷歌浏览器里面访问  192.168.68.4

为了防止别人盗我的图片,因此做一个防盗链

 

 防盗链配置:

在子配置文件里面修改

 再次访问192.168.68.4

反向代理 

proxy_pass

 

 客户端去访问192.168.68.3代理服务器 ,然后代理服务器再传给真实服务器 其实客户端访问的是192.168.68.4的页面

centos 7 1 代理   centos 真实的服务端

代理服务器配置

 真实服务器

然后在真实服务端 curl一下自己  访问的是自己  代理服务器访问的是真实服务器的页面

 如果使用端口号去访问

则在IP地址后面加入端口号 然后在真实服务器主配置文件添加监听端口号

代理服务器配置文件

真实服务器(centos)

最后直接跳转

 补充一点

 例如

然后访问网页

 

总结:504:代理到真实的服务器这段通讯是有问题的,而DORP表示已读不回,所以,客户端会一直发,然后代理服务器转发给真实服务器,时间长,便超时

502:reject:表示已读就回,出现502表示网关不可达,真实的服务器挂了

争对某个url进行访问

在代理服务器上配置子配置文件

 

 api 在真实服务器里面没有,所以要在真是服务器里面建立一个api

真实服务器:

随后在真实服务器上访问代理服务器(就等于访真实服务器的9527端口)

注意!!!!在代理服务器上 地址后面加/  表示替换   不加/  表示追加! 

举例说明:

追加:192.168.68.3/api/ ------->192.168.68.4/api/  访问192.168.68.3的api就等于访问192.168.68.4的api

替换:192.168.68.3/api/ --------> 192.168.68.4 访问192.168.68.3的api 就等于访问192.168.68.4

 追加

 注意 不允许正则表达式后面跟替换,就是正则表达式的的语句不能,这个会报错

指定location 反向代理 动静分离

 代理服务器访问静态资源给真实服务器1

代理服务器访问动态资源给真实服务器2

7-1代理服务器配置:

 7-2服务器配置:

关闭防火墙 关闭防护 

下载httpd软件

7-3 服务器

 检测:直接在7-1上就能检测

 同时可以放入一张图片来检验一下

 

反向代理:缓存功能

proxy_cache zone_name | off; 默认off
#指明调用的缓存,或关闭缓存机制;Context:http, server, location
#zone_name 表示缓存的名称.需要由proxy_cache_path事先定义

proxy_cache_key string;
#缓存中用于“键”的内容,默认值:proxy_cache_key $scheme$proxy_host$request_uri;

proxy_cache_valid [code ...] time;
#定义对特定响应码的响应内容的缓存时长,定义在http{...}中
 示例:
 proxy_cache_valid 200 302 10m;
 proxy_cache_valid 404 1m;
 
 
 
proxy_cache_path;
#定义可用于proxy功能的缓存;Context:http   必须放在http语句中
proxy_cache_path path [levels=levels] [use_temp_path=on|off] 
keys_zone=zone_name:size [inactive=time] [max_size=size] [manager_files=number] 
[manager_sleep=time] [manager_threshold=time] [loader_files=number] 
[loader_sleep=time] [loader_threshold=time] [purger=on|off] 
[purger_files=number] [purger_sleep=time] [purger_threshold=time];


#示例:在http配置定义缓存信息
   proxy_cache_path /var/cache/nginx/proxy_cache #定义缓存保存路径,proxy_cache会自动创建
   levels=1:2:2 #定义缓存目录结构层次,1:2:2可以生成2^4x2^8x2^8=2^20=1048576个目录
   keys_zone=proxycache:20m #指内存中缓存的大小,主要用于存放key和metadata(如:使用次数),一般1M可存放8000个左右的key
   inactive=120s  #缓存有效时间  
   max_size=10g; #最大磁盘占用空间,磁盘存入文件内容的缓存空间最大值
   
   
#调用缓存功能,需要定义在相应的配置段,如server{...};或者location等
proxy_cache proxycache;
proxy_cache_key $request_uri; #对指定的数据进行MD5的运算做为缓存的key
proxy_cache_valid 200 302 301 10m; #指定的状态码返回的数据缓存多长时间
proxy_cache_valid any 1m;   #除指定的状态码返回的数据以外的缓存多长时间,必须设置,否则不会缓存


proxy_cache_use_stale error | timeout | invalid_header | updating | http_500 | http_502 | http_503 | http_504 | http_403 | http_404 | off ; #默认是off
#在被代理的后端服务器出现哪种情况下,可直接使用过期的缓存响应客户端

#示例
proxy_cache_use_stale error http_502 http_503;


proxy_cache_methods GET | HEAD | POST ...;
#对哪些客户端请求方法对应的响应进行缓存,GET和HEAD方法总是被缓存

扩展知识:清理缓存

操作步骤如下:

 在主配置文件里面修改

在http配置里面增加

proxy_cache_path /data/nginx/proyxcache   levels=1:1:1 keys_zone=proxycache:20m inactive=120s max_size=1g;

 

再去子配置文件里面修改内容

 proxy_cache proxycache;
   proxy_cache_key $request_uri;
   #proxy_cache_key $host$uri$is_args$args;
   proxy_cache_valid 200 302 301 10m;
   proxy_cache_valid any 5m;

 

在7-3 真实服务器上添加一张图片 a.jpg

随后去网页上访问192.168.68.3/a.jpg (就会有缓存了)

然后再取7-1代理服务器上看一下缓存

如果把7-3 关闭

 然后再去网页访问,依然可以加载图片 是因为换存的作用

自定义头部信息 

在子配置文件里面添加配置内容

 

随后,在另外一台终端去curl

 

 add_header X-Via   $server_addr;
  add_header X-Cache $upstream_cache_status;
  add_header X-Accel $server_name;

 

miss:超时       hit:命中   表示从代理服务器而来

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

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

相关文章

怎么压缩成mp4视频?

在数字化时代,视频已经成为我们日常生活中不可或缺的一部分。然而,有时候我们可能会遇到视频文件太大的问题,不便于传输、存储或分享。那么,如何将视频压缩成MP4格式,以减小文件大小呢?本文将为您介绍几种简…

JavaWeb HTTP 请求头、请求体、响应头、响应体、响应状态码

J2EE(Java 2 Platform Enterprise Edition)是指“Java 2企业版”,B/S模式开发Web应用就是J2EE最核心的功能。 Web是全球广域网,也称为万维网(www),能够通过浏览器访问的网站。 在日常的生活中,经常会使用…

Doccano 修复 spacy.gold 的bug

引言 最初只是想把Doccano标注的数据集转换成BIO(类似conll2003数据集)的标注格式; 按照PR的修改意见实现了修改,但是本人不建议这么做; 应该随着Doccano的升级,Doccano的导出格式发生了变化,而原来的doccano-transfo…

高效备考2024年AMC10:吃透2000-2023年1250道AMC10真题

距离2024年AMC10的比赛只有8个月多一点的时间了,如何备考AMC10美国数学竞赛最有效?参加AMC10竞赛是否一定要参加机构的培训班?吃透历年真题是有效的自学、了解AMC10和备考策略之一。事实上,网络上有很多关于AMC10的学习资源&#…

spark sql 转换字符串数组成多列结构

背景 在平时使用spark sql分析数据时,特别是分析从mysql的表入仓的hive表时,我们会经常和字符串数组的列打交道,而且这种情况下我们一般都需要把一行字符串数组的行数据转成多列的形式,我们看下怎么写这个sql spark sql 转换字符…

ppt中调整某条表格框线的格式

1、先设置好边框线的属性: 2、选择要调整的边框线所在的单元格(第二列的右边框加粗,体现分栏的效果) 3、设计--边框--中选择要调整的边框线位置(假设要调整右框线)

【AI Agent系列】【MetaGPT多智能体学习】3. 开发一个简单的多智能体系统,兼看MetaGPT多智能体运行机制

本系列文章跟随《MetaGPT多智能体课程》(https://github.com/datawhalechina/hugging-multi-agent),深入理解并实践多智能体系统的开发。 本文为该课程的第四章(多智能体开发)的第一篇笔记。主要记录下多智能体的运行…

二次元壁纸高清1080P

二次元壁纸高清1080P 夸克网盘:https://pan.quark.cn/s/3dd9688f9ae5 百度网盘:https://pan.baidu.com/s/15YQBfMcOJgSEyZI1PjgHeA?pwdq8zy

先进电机技术 —— 通用变频器

一、变频器名称定义 通用变频器(Variable Frequency Drive, VFD)是一种广泛应用于工业控制领域的电力电子设备,其主要功能是改变供电电源的频率和电压,以达到对交流电动机转速进行精确、连续调节的目的。通用变频器通常具备以下特…

软考 系统分析师系列知识点之需求获取(7)

所属章节: 第11章. 软件需求工程 第2节. 需求获取 需求获取是一个确定和理解不同的项目干系人的需求和约束的过程。需求获取是一件看上去很简单、做起来却很难的事情。需求获取是否科学、准备是否充分,对获取出来的结果影响很大,这是因为大部…

兼容性比较好的浏览器推荐(2023手机浏览器排名)

浏览器在我们日常工作生活占据着重要的位置。浏览器是电脑的必备软件,也是手机端不可缺少的软件之一。如果你想要下载浏览器,却不知道哪个浏览器最好用,那么就看看本篇文章。下文给大家推荐2023年最热门、好用的手机浏览器,排行不…

鬼屋游戏c++

c #include <iostream> #include <string> #include <vector> #include <cstdlib> // 用于随机数生成 #include <ctime> // 用于随机数种子using namespace std;// 定义房间结构体 struct Room {string description;bool hasKey;bool hasClue…

13、输入捕获实验

目录 一、通用定时器输入捕获概述 二、常用寄存器和库函数配置 三、输入捕获实验讲解 一、通用定时器输入捕获概述 STM32输入捕获工作过程&#xff08;通道1为例&#xff09; 一句话总结工作过程&#xff1a; 通过检测TIMx_CHx上的边沿信号&#xff0c;在边沿信号发生跳变…

交换机入门:从基础到进阶的全面学习指南

&#x1f31f;&#x1f30c; 欢迎来到知识与创意的殿堂 — 远见阁小民的世界&#xff01;&#x1f680; &#x1f31f;&#x1f9ed; 在这里&#xff0c;我们一起探索技术的奥秘&#xff0c;一起在知识的海洋中遨游。 &#x1f31f;&#x1f9ed; 在这里&#xff0c;每个错误都…

「媒体宣传」如何写好新闻稿?

传媒如春雨&#xff0c;润物细无声&#xff0c;大家好&#xff0c;我是51媒体网胡老师。 写好新闻稿是媒体宣传的关键环节之一&#xff0c;下面是一些关于如何写好新闻稿的建议&#xff1a; 明确新闻稿的目的和受众&#xff1a;在写新闻稿之前&#xff0c;首先要明确新闻稿的目…

编译链接实战(22)C/C++代码覆盖率统计报告生成

文章目录 GCOV 工具简介gcov 使用lcov相关编译选项 GCOV 工具简介 gcov是一个测试代码覆盖率的工具&#xff0c;它是 gcc 自带的查看代码覆盖率的工具。 与GCC结合使用&#xff0c;可以分析您的程序以帮助创建更高效、运行更快的代码&#xff0c;并发现程序中未经测试的部分。…

决定西弗吉尼亚州地区版图的关键历史事件

决定西弗吉尼亚州地区版图的关键历史事件&#xff1a; 1. 内部分裂与美国内战&#xff1a; - 在1861年美国内战爆发时&#xff0c;弗吉尼亚州作为南方邦联的一员宣布退出美利坚合众国。然而&#xff0c;弗吉尼亚州西部的一些县由于经济结构&#xff08;主要是农业非依赖奴隶制…

Python3零基础教程之字符串专题进阶

大家好&#xff0c;我是千与编程&#xff0c;上一期我们讲解了Python3编程语言中的数组与列表专题。这一期我们讲解了字符串专题初阶。 在 Python3 的字符串专题进阶教程中&#xff0c;我们将深入探讨更高级的字符串操作技巧&#xff0c;包括字符串切片、替换、去除空白、分割与…

3.1日学习打卡----初学FastDFS(一)

3.1日学习打卡 目录: 3.1日学习打卡一. 为什么要使用分布式文件系统二. FastDFS简介核心概念上传机制下载机制FastDFS环境搭建_LinuxFastDFS指令 一. 为什么要使用分布式文件系统 单机时代 初创时期由于时间紧迫&#xff0c;在各种资源有限的情况下&#xff0c;通常就直接在项…

Acwing周赛记录

很难得参加一次周赛hhhhh这次参加的是第144场周赛&#xff0c;一共有三道题 AcWing 5473. 简单数对推理 给定两个整数数对&#xff0c;每个数对都包含两个 1∼9 之间的不同整数。 这两个数对恰好包含一个公共数&#xff0c;即恰好有一个整数同时包含于这两个数对。 给定这两…