Nginx反向代理使用方法小总结

news2024/11/15 18:50:11

文章目录

  • 一、前言
  • 二、反向代理定义重申
  • 三、短网址方式代理
  • 四、多级域名方式代理
  • 五、通配符代理方式总结

一、前言

本文只介绍代理转发到一个主机的方式,至于在代理时进行负载均衡大家需要自己尝试,也比较简单,在本专栏前面文章提到过,由于前面文章几篇文章综合性较强所以在此特意总结一下反向代理的几种方式,以便于在使用时方便查阅,本文写下时博主在配置一个OJ项目大家感兴趣也可以自己试试配置一下,项目地址。当然起初遇到了不少的问题,后来经过不懈的努力代理成功。下面是项目成功跑起来的图:总体来说代理反向方式可以分为两种:短网址方式代理,多级域名方式代理(可以从下面四份截图中看出来),今天就对代理方式进行一下总结!
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

二、反向代理定义重申

众所周知路由器可以连接不同网段的局域网,不同网段的局域网想要进行数据的传递需要经过相应的网关。由于每一个发出去的请求或回来的响应都要经过网关我们便可以在网关处进行一下流量的管理。nginx恰恰可以做到这一点。nginx服务器可以正向代理用户也可以反向代理业务服务器。代理谁谁就是他要保护的对象。nginx在此过程中往往做的就是请求转发的活,并不会真正的处理实际的业务。通俗的来说反向代理就是一个偏向于服务器的中间人,负责传达用户与实际业务服务器之间的通信。具体的细节大家可以阅读本专栏的几篇博客。

三、短网址方式代理

相信大家比较熟悉短网址,短网址一般指比较短的网址,因为浏览器地址输入框毕竟有限,需要使用短网址映射到真正的长网址,这里短网址实现反向代理的道理与前面短网址映射到长网址的道理是相同的,短网址的反向代理实现就是在一个虚拟主机的路径中配置另一台实际主机ip。例如下面一个虚拟主机,虽然是匹配到aiecp.cn这个域名进来的,但是当访问aiecp.cn/home目录时,就会将请求转发到http://www.atguigu.com/这个域上,从而实现一个虚拟主机反向代理另一个主机。当然其余的路径可以分别映射到不同的主机上。

server {
    listen       80;
    server_name  aiecp.com;
    
    location /home {
    	# 核心代码
    	proxy_pass http://www.atguigu.com/;
    }
    
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
    	root   html;
    }

}

这种方式可以分别将对一个短网址的请求映射到一个主机或多个主机。

四、多级域名方式代理

二级域名的方式与短网址的方式差不多只不过从aiecp.cn/xxx变成了oj.aiecp.cn。实现方式如下:
二级域名反向代理

 #OJ虚拟主机
 server {
     #监听窗口
     listen       80;
     #定义使用localhost,也可以自动定义域名访问
     #域名可以有多个用空格隔开
     server_name  oj.aiecp.cn;
     
     #默认请求
     location / {
		proxy_pass http://43.143.232.114:8888;
     }
     # 定义 50x错误提示页面
     error_page   500 502 503 504  /50x.html;
     location = /50x.html {
         root   html;
     }
 }

三级域名反向代理

 #OJ虚拟主机
 server {
     #监听窗口
     listen       80;
     #定义使用localhost,也可以自动定义域名访问
     #域名可以有多个用空格隔开
     server_name  my.oj.aiecp.cn;
     
     #默认请求
     location / {
		proxy_pass http://43.143.232.114:8888;
     }
     # 定义 50x错误提示页面
     error_page   500 502 503 504  /50x.html;
     location = /50x.html {
         root   html;
     }
 }

这种方式可以分别将对一个二级域名的请求映射到一个主机或多个主机。

五、通配符代理方式总结

通配符作用
=表示精准匹配
^~表示url以某个常规字符串开头,大多数情况下用来匹配url路径,nginx不对请求做编码,因此请求为/static/20%/aa,可以被规则^~ /static/ /aa匹配到(注意是空格)
~表示正则匹配,区分大小写
~*表示正则匹配,不区分大小写
!~表示区分大小写不匹配的正则
!~*表示不区分大小写不匹配的正则
/任何请求都会匹配

首先匹配=, 其次匹配^~ , 其次是按文件中顺序的正则匹配,最后是交给 / 通用匹配。当有匹配成功时候,停止匹配,按当前匹配规则处理请求。
举几个例子:

location = / {  
   #规则A  
}  
location = /login {  
   #规则B  
}  
location ^~ /static/ {  
   #规则C  
}  
location ~ \.(gif|jpg|png|js|css)$ {  
   #规则D  
}  
location ~* \.png$ {  
   #规则E  
}  
location !~ \.xhtml$ {  
   #规则F  
}  
location !~* \.xhtml$ {  
   #规则G  
}  
location / {  
   #规则H  
}  

  • 访问根目录/, 比如http://localhost/ 将匹配规则A
  • 访问 http://localhost/login 将匹配规则B,http://localhost/register 则匹配规则H
  • 访问 http://localhost/static/a.html 将匹配规则C
  • 访问 http://localhost/a.gif, http://localhost/b.jpg 将匹配规则D,规则E不起作用,而 http://localhost/static/c.png 则优先匹配到规则C
  • 访问 http://localhost/a.PNG 则匹配规则E,而不会匹配规则D,因为规则E不区分大小写。
  • 访问 http://localhost/a.xhtml 不会匹配规则F和规则G,http://localhost/a.XHTML不会匹配规则G,因为不区分大小写。规则F,规则G属于排除法,符合匹配规则但是不会匹配到,所以想想看实际应用中哪里会用到。
  • 访问 http://localhost/category/id/1111 则最终匹配到规则H,因为以上规则都不匹配,这个时候应该是nginx转发请求给后端应用服务器,比如FastCGI(php),tomcat(jsp),nginx作为方向代理服务器存在。

至此本篇分享结束!大家如果有什么更好的使用方法欢迎评论区留言或私信博主大家共同探讨学习。

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

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

相关文章

(二)Redis概述与安装

目录 一、概述 1、特性 2、应用场景 二、安装 三、启动 1、前台启动(不推荐) 2、后台启动(推荐) 四、redis关闭 五、redis相关知识介绍 一、概述 1、特性 Redis是一个开源的key-value存储系统。和Memcached类似&#x…

TOOM舆情分析监控管理系统集成,舆情监控系统监测那些人群?

当前,互联网已成为思想文化信息的集散地和社会舆论的扩大器,舆情监控新闻、论坛博客、聚合新闻等等,做好舆情监控,至于监测那些人群,舆情分析监控是非常必要的,接下来我们简单了解TOOM舆情分析监控管理系统…

接口协议之抓包分析 TCP 协议

TCP 协议是在传输层中,一种面向连接的、可靠的、基于字节流的传输层通信协议。环境准备对接口测试工具进行分类,可以如下几类:网络嗅探工具:tcpdump,wireshark代理工具:fiddler,charles&#xf…

《移动通信》多章节部分重要习题(简答、单选、判断)

调制技术在移动通信中的作用? 调制有两个目的: 1 )经过调制可以使基带信号变换为带通信号。选择需要使用的载波频率 ( 简称载频 ) ,可以把信号的频谱从开始的频段转移到到所需要的频段上,从而使传输信号适应信道的要求,或是可以把许多个输入信号合起来应用于多路传…

开发模型 和 测试模型 详解

开发模型 开发模型 : ① 瀑布模型 ② 螺旋模型 ③ 增量模型 和 迭代模型 ④ 敏捷模型 (优点 缺点 适用场景)测试模型 : ① V模型 ② W模型瀑布模型优点/特点:线性结构,每个阶段 只执行一次是其他模型的一个基础框架缺点&#xff1…

sentinel-Roadmap(三)

Pages 60 Sentinel 官方网站 OpenSergo 微服务治理 文档 Read Me新手指南Sentinel 介绍FAQRoadmap如何使用工作原理流量控制集群流控(分布式流控)网关流控熔断降级热点参数限流系统自适应限流黑白名单控制实时监控数据动态规则控制台生产环境使用 Sent…

Spring依赖注入时,创建代理bean和普通bean详解

问题来源 以前一直有个疑惑,为什么我创建的controller中注入的service类有时候是代理类,有时候是普通javabean,当时能力不够,现在已经有了点经验就大胆跟了跟源码,看看到底咋回事。 首先看看问题现象: a1…

linux nfs umount报错:device is busy

执行nfs卸载命令umount /mnt,报错target is busy. 或device is busy可以按以下步骤检查:退出要卸载挂载的目录,再执行卸载挂载cd ../umount /mnt找出占用目录的端口,kill端口fuser -m /mnt/kill -9 端口umount /mnt停止nfs服务&am…

PCA 主成分分析-清晰详细又易懂

PCA(Principal Component Analysis)通过线性变换将原始数据变换为一组各维度线性无关的表示,可用于提取数据的主要特征分量,常用于高维数据的降维。 当然我并不打算把文章写成纯数学文章,而是希望用直观和易懂的方式叙…

Java char[]数组转成String类型(char to String)详细介绍

前言 string toCharArray() 方法将给定的字符串转换为字符序列 Java中字符串转换为字符数组的方法在之前的博客已经介绍了! 今天介绍char[]数组转成String 方法有4种: 使用 String 类的 valueOf() 方法使用字符串连接使用 Character 类的 toString() 方…

图形编辑器:场景坐标、视口坐标以及它们之间的转换

大家好,我是前端西瓜哥。 图形编辑器的坐标系有两种。 一个是场景(scene)坐标系,一个是 视口(viewport)坐标系。视口就是场景的一个子区域。 假设我们的视口的原点,离场景原点的坐标水平和垂直…

C2芯片一ESP32-C2开发板

C2是一个芯片采用4毫米x 4毫米封装,与272 kB内存。它运行框架,例如ESP-Jumpstart和ESP造雨者,同时它也运行ESP-IDF。ESP-IDF是Espressif面向嵌入式物联网设备的开源实时操作系统,受到了全球用户的信赖。它由支持Espressif以及所有…

月报总结|Moonbeam 12月份大事一览

本月,针对生态和项目,Moonbeam基金会启动首期Accelerator Program孵化计划,将针对入选团队提供一系列扶持资源,申请仍在开放中。对于开发者,Moonbuilders Academy上线了关于构建跨链应用的新课程。 社区活动方面&…

【案例分析】汽车制造行业电能质量治理方案分析

摘要:现如今的汽车制造行业,使用的机械设备越来越精密,制造技术与自动化水平也越来越高,为此对供电系统的电能质量要求更高更苛刻,同时对不能满足现有生产工艺需求的供电质量进行治理。通过分析汽车制造过程中冲压工艺…

连续三年!Fortinet再次位列《 Gartner 企业级有线和无线局域网基础设施魔力象限报告》“远见者”

网络安全领导者Fortinet(NASDAQ:FTNT),近日宣布连续第三年入围《Gartner企业级有线和无线局域网基础设施魔力象限报告》“远见者”象限。这一殊荣源于Fortinet 旗下FortiSwitch 和 FortiAP等有线和无线局域网产品组合的强劲实力&a…

激光焊接薄板时需要注意的一些问题

焊接是目前工业制造中必要的工艺技术,焊接金属时需要注意很多方面的问题,本文主要针对金属薄板焊接中的一些工艺问题进行展开讨论。例如:焊缝的牢固程度、焊缝的平整度、焊缝直线度的控制、焊缝高度和宽度的控制以及焊接的均匀性等方面。 一、…

程序员们有什么好的编程习惯?

优良的代码显然不是制作优秀软件的唯一要素,但是主要的要素之一。我们可能拥有世界上最好的产品和营销团队,部署了最好的平台,并以最好的框架来构建软件,但归根结底,一款软件所做的一切,都是因为有人写了一…

LeetCode 49 字母异位词分组 | 解题思路分享

原题链接:49. 字母异位词分组 - 力扣(LeetCode) 题目难度:中等 题目描述 给你一个字符串数组,请你将 字母异位词 组合在一起。可以按任意顺序返回结果列表。 字母异位词 是由重新排列源单词的字母得到的一个新单词…

分析快、易操作的数据分析工具推荐

数据分析工具发展这么多年,该有的技术功能都有了,该提高的数据分析效率、数据分析量等也都提高了,但很多长期奋战在一线的数据分析人员却总是抱怨数据分析工具响应慢、分析慢、越来越容易崩溃。为什么要找一款分析快、易操作的数据分析工具还…

Git入门学习笔记(10分钟速通)

一、Git概述 官网翻译: Git 是一个免费的开源 分布式版本控制系统,旨在快速高效地处理从小型项目到大型项目的所有内容。 Git易于学习, 体积小,性能快如闪电。它超越了 Subversion、CVS、Perforce 和 ClearCase 等 SCM 工具&am…