分布式 - 服务器Nginx:一小时入门系列之HTTP反向代理
文章目录
- 1. 正向代理和反向代理
- 2. 配置代理服务
- 3. proxy_pass 命令解析
- 4. 设置代理请求headers
1. 正向代理和反向代理
正向代理是客户端通过代理服务器访问互联网资源的方式。在这种情况下,客户端向代理服务器发送请求,代理服务器再向互联网上的服务器发送请求,获取资源并返回给客户端。正向代理的典型应用场景是翻墙,即通过代理服务器访问被封锁的网站。
反向代理则是服务器通过代理服务器向客户端提供服务的方式。在这种情况下,客户端向代理服务器发送请求,代理服务器再向服务器发送请求,获取资源并返回给客户端。反向代理的典型应用场景是负载均衡,即将客户端的请求分发到多个服务器上,以提高系统的性能和可靠性。
总的来说,正向代理是客户端通过代理服务器访问互联网资源,而反向代理是服务器通过代理服务器向客户端提供服务。
2. 配置代理服务
以 RuoYi 后台管理系统作为反向代理的后台,通过nginx的8001端口把它代理到RuoYi系统的8088端口:

① 启动 RuoYi 后台管理系统:
[root@nginx-dev apps]# pwd
/home/apps
[root@nginx-dev apps]# ls
ruoyi-admin.jar ruoyi-admin.war
[root@nginx-dev apps]# java -jar ruoyi-admin.jar

② 配置nginx服务器:在/etc/nginx/conf.d文件下新建一个配置文件 8001.conf
[root@nginx-dev conf.d]# cat 8001.conf
server {listen 8001;server_name ruoyi.localhost;location / {proxy_pass http://localhost:8088;}
}
[root@nginx-dev conf.d]# nginx -s reload
当访问代理服务器 nginx 的8001端口 http://192.168.1.9:8001 时,请求会转发到RuoYi后台服务 http://localhost:8088

3. proxy_pass 命令解析
proxy_pass 是 Nginx 配置中用于反向代理的指令,它的作用是将客户端的请求转发到指定的后端服务器上,并将后端服务器的响应返回给客户端。
① 如果proxy-pass的地址只配置到 IP+端口,那么location将被追加到转发地址中
server {listen 8001;server_name ruoyi.localhost;location /some/path/ {proxy_pass http://localhost:8088;}
}
访问 http://192.168.1.9:8001/some/path/page.html 将被代理到 http://localhost:8088/some/path/page.html。
② 如果proxy-pass的地址包括/或其他路径,那么/some/path将会被替换
server {listen 8001;server_name ruoyi.localhost;location /some/path/ {proxy_pass http://localhost:8088/;}
}
访问 http://192.168.1.9:8001/some/path/page.html 将被代理到 http://localhost:8088/page.html。Nginx 服务器会将请求中的 /some/path 部分替换为 /,然后将请求转发到 http://localhost:8088/。
server {listen 8001;server_name ruoyi.localhost;location /some/path/ {proxy_pass http://localhost:8088/a;}
}
访问 http://192.168.1.9:8001/some/path/page.html 将被代理到 http://localhost:8088/a/page.html。Nginx 服务器会将请求中的 /some/path 部分替换为 /a,然后将请求转发到 http://localhost:8088/a。
4. 设置代理请求headers
用户可以重新定义或追加header信息传递给后端服务器。可以包含文本、变量及其组合。默认情况下,仅重定义两个字段:
proxy_set_header Host $proxy_host;
proxy_set_header Connection close;
由于使用反向代理之后,后端服务无法获取用户的真实IP,所以,一般反向代理都会设置以下header信息。
location / {#nginx的主机地址proxy_set_header Host $http_host;#用户端真实的IP,即客户端IPproxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_pass http://localhost:8088;
}
常用变量的值:
$host:nginx主机IP,例如192.168.56.105
$http_host:nginx主机IP和端口,192.168.56.105:8001
$proxy_host:localhost:8088,proxy_pass里配置的主机名和端口
$remote_addr:用户的真实IP,即客户端IP。

相关文章:
分布式 - 服务器Nginx:一小时入门系列之HTTP反向代理
文章目录 1. 正向代理和反向代理2. 配置代理服务3. proxy_pass 命令解析4. 设置代理请求headers 1. 正向代理和反向代理 正向代理是客户端通过代理服务器访问互联网资源的方式。在这种情况下,客户端向代理服务器发送请求,代理服务器再向互联网上的服务器…...
Android Fragment (详细版)
经典好文推荐,通过阅读本文,您将收获以下知识点: 一、Fragment 简介 二、Fragment的设计原理 三、Fragment 生命周期 四、Fragment 在Activity中的使用方法 五、动态添加Fragment到Activity的方法 六、Activity 中获取Fragment 七、Fragment 获取宿主Activity的方法 八、两个…...
如何使用Flask-RESTPlus构建强大的API
如何使用Flask-RESTPlus构建强大的API 引言: 在Web开发中,构建API(应用程序接口)是非常常见和重要的。API是一种允许不同应用程序之间交互的方式,它定义了如何请求和响应数据的规范。Flask-RESTPlus是一个基于Flask的…...
UGUI事件系统EventSystem
一. 事件系统概述 Unity的事件系统具有通过鼠标、键盘、游戏控制柄、触摸操作等输入方式,将事件发送给对象的功能。事件系统通过场景中EventSystem对象的组件EventSystem和Standalone Input Module发挥功能。EventSystem对象通常实在创建画布的同时被创建的…...
redis学习笔记(三)
文章目录 key操作(1)查找键(2)判断键是否存在(3)查看键的的值的数据类型(4)删除键以及键对应的值(5)查看键的有效期(6)设置key的有效期…...
Go语言template模板语法
Go语言模板语法 文章目录 <center> Go语言模板语法连接前后端的符号: {{}}注释管道(pipeline)变量条件判断range 关键字with 关键字比较函数自定义函数嵌套模板模板继承 连接前后端的符号: {{}} 模板语法都包含在{{}}之中,其中{{.}}中的.表示当前对象.在传入一个结构体对…...
Python-OpenCV中的图像处理-物体跟踪
Python-OpenCV中的图像处理-物体跟踪 物体跟踪 物体跟踪 现在我们知道怎样将一幅图像从 BGR 转换到 HSV 了,我们可以利用这一点来提取带有某个特定颜色的物体。在 HSV 颜色空间中要比在 BGR 空间中更容易表示一个特定颜色。在我们的程序中,我们要提取的…...
本地Linux 部署 Dashy 并远程访问教程
文章目录 简介1. 安装Dashy2. 安装cpolar3.配置公网访问地址4. 固定域名访问 转载自cpolar极点云文章:本地Linux 部署 Dashy 并远程访问 简介 Dashy 是一个开源的自托管的导航页配置服务,具有易于使用的可视化编辑器、状态检查、小工具和主题等功能。你…...
6.2 口令破解攻击
数据参考:CISP官方 目录 口令安全问题口令破解攻击口令破解安全防护口令使用安全管理 一、口令安全问题 什么是口令 身份验证的机制,俗称 “密码",对应英文单词为 password成本较低,得到广泛应用信息安全中的 “密码”…...
SSL账号申请及配置
摘自个人印象笔记https://app.yinxiang.com/fx/db244155-c858-4d8a-93a8-08071d168dc8ssl申请平台:https://blog.freessl.cn/ ajian51168qq.com … 操作说明:https://blog.freessl.cn/acme-quick-start/ nginx配置: upstream local_tomcat{s…...
JS代码混淆加密有什么用?
JS加密、JS混淆,有这些用: 1、前端JS代码,如果不加密,它人可以随便copy、任意修改。自己写的代码,可以轻易成为别人的成果。 对JS代码混淆加密,则可以防止这种他人随意白嫖的问题,代码是自己辛…...
Oracle的function執行DML操作
Oracle的function並不支持DML操作,但可以使用一段指令,讓這段pl/sql成為獨立的事務。 当使用 PRAGMA AUTONOMOUS_TRANSACTION 时,可以在一个过程或函数的独立代码块中执行数据库操作,而不受外部事务的影响。这意味着内部事务的提交…...
大语言模型:LLM的概念是个啥?
一、说明 大语言模型(维基:LLM- large language model)是以大尺寸为特征的语言模型。它们的规模是由人工智能加速器实现的,人工智能加速器能够处理大量文本数据,这些数据大部分是从互联网上抓取的。 [1]所构建的人工神…...
21 | 朝阳医院数据分析
朝阳医院2018年销售数据为例,目的是了解朝阳医院在2018年里的销售情况,通过对朝阳区医院的药品销售数据的分析,了解朝阳医院的患者的月均消费次数,月均消费金额、客单价以及消费趋势、需求量前几位的药品等。 import numpy as np from pandas import Series,DataFrame impo…...
二十二、责任链模式
目录 1、使用demo演示责任链模式2、传统方案解决oa系统审批3、传统方案解决oa系统审批存在的问题4、职责链模式基本介绍5、职责链模式原理类图6、职责链模式解决oa系统采购审批7、职责链模式的注意事项和细节8、职责链模式的实际使用场景举例 1、使用demo演示责任链模式 学校o…...
opencv,opengl,osg,vulkan,webgL,opencL,cuda,osg,vtk,ogre的区别
OpenCV OpenCV是一个基于BSD许可(开源)发行的跨平台计算机视觉和机器学习软件库,可以运行在Linux、Windows、Android和Mac OS操作系统上。 它轻量级而且高效——由一系列 C 函数和少量 C 类构成,同时提供了Python、Ruby、MATLAB等…...
基于颜色进行轮廓分割,基于opencv和python
1. 阈值调整,交互式的阈值调整,确定上限和下限: import cv2 as cv import numpy as npdef Tcallback(event):H cv.getTrackbarPos(H, show_pic)S cv.getTrackbarPos(S, show_pic)V cv.getTrackbarPos(V, show_pic)H0 cv.getTrackbarPos(…...
TCP重连 - 笔记
1 C++ TCP/IP 关于tcp断线重连的问题 C++ TCP/IP 关于tcp断线重连的问题_c++ 断线重连_Bug&猿柒。的博客-CSDN博客 2 C++基础--完善Socket C/S ,实现客户端,服务器端断开重连 https://www.cnblogs.com/kingdom_0/articles/2571727.html 3 C++实现Tcp通信(考虑客户…...
Qt画波浪球(小费力)
画流动波浪 #ifndef WIDGET3_H #define WIDGET3_H#include <QWidget> #include <QtMath> class widget3 : public QWidget {Q_OBJECT public:explicit widget3(QWidget *parent nullptr);void set_value(int v){valuev;}int get_value(){return value;} protecte…...
监控Kubernetes Node组件的关键指标
所有的 Kubernetes 组件,都提供了 /metrics 接口用来暴露监控数据,Kube-Proxy 也不例外。通过 ss 或者 netstat 命令可以看到 Kube-Proxy 监听的端口,一个是 10249,用来暴露监控指标,一个是 10256 ,作为…...
iOS 26 携众系统重磅更新,但“苹果智能”仍与国行无缘
美国西海岸的夏天,再次被苹果点燃。一年一度的全球开发者大会 WWDC25 如期而至,这不仅是开发者的盛宴,更是全球数亿苹果用户翘首以盼的科技春晚。今年,苹果依旧为我们带来了全家桶式的系统更新,包括 iOS 26、iPadOS 26…...
【服务器压力测试】本地PC电脑作为服务器运行时出现卡顿和资源紧张(Windows/Linux)
要让本地PC电脑作为服务器运行时出现卡顿和资源紧张的情况,可以通过以下几种方式模拟或触发: 1. 增加CPU负载 运行大量计算密集型任务,例如: 使用多线程循环执行复杂计算(如数学运算、加密解密等)。运行图…...
HarmonyOS运动开发:如何用mpchart绘制运动配速图表
##鸿蒙核心技术##运动开发##Sensor Service Kit(传感器服务)# 前言 在运动类应用中,运动数据的可视化是提升用户体验的重要环节。通过直观的图表展示运动过程中的关键数据,如配速、距离、卡路里消耗等,用户可以更清晰…...
莫兰迪高级灰总结计划简约商务通用PPT模版
莫兰迪高级灰总结计划简约商务通用PPT模版,莫兰迪调色板清新简约工作汇报PPT模版,莫兰迪时尚风极简设计PPT模版,大学生毕业论文答辩PPT模版,莫兰迪配色总结计划简约商务通用PPT模版,莫兰迪商务汇报PPT模版,…...
Redis:现代应用开发的高效内存数据存储利器
一、Redis的起源与发展 Redis最初由意大利程序员Salvatore Sanfilippo在2009年开发,其初衷是为了满足他自己的一个项目需求,即需要一个高性能的键值存储系统来解决传统数据库在高并发场景下的性能瓶颈。随着项目的开源,Redis凭借其简单易用、…...
提升移动端网页调试效率:WebDebugX 与常见工具组合实践
在日常移动端开发中,网页调试始终是一个高频但又极具挑战的环节。尤其在面对 iOS 与 Android 的混合技术栈、各种设备差异化行为时,开发者迫切需要一套高效、可靠且跨平台的调试方案。过去,我们或多或少使用过 Chrome DevTools、Remote Debug…...
前端中slice和splic的区别
1. slice slice 用于从数组中提取一部分元素,返回一个新的数组。 特点: 不修改原数组:slice 不会改变原数组,而是返回一个新的数组。提取数组的部分:slice 会根据指定的开始索引和结束索引提取数组的一部分。不包含…...
STL 2迭代器
文章目录 1.迭代器2.输入迭代器3.输出迭代器1.插入迭代器 4.前向迭代器5.双向迭代器6.随机访问迭代器7.不同容器返回的迭代器类型1.输入 / 输出迭代器2.前向迭代器3.双向迭代器4.随机访问迭代器5.特殊迭代器适配器6.为什么 unordered_set 只提供前向迭代器? 1.迭代器…...
ABAP设计模式之---“Tell, Don’t Ask原则”
“Tell, Don’t Ask”是一种重要的面向对象编程设计原则,它强调的是对象之间如何有效地交流和协作。 1. 什么是 Tell, Don’t Ask 原则? 这个原则的核心思想是: “告诉一个对象该做什么,而不是询问一个对象的状态再对它作出决策。…...
关于 ffmpeg设置摄像头报错“Could not set video options” 的解决方法
若该文为原创文章,转载请注明原文出处 本文章博客地址:https://hpzwl.blog.csdn.net/article/details/148515355 长沙红胖子Qt(长沙创微智科)博文大全:开发技术集合(包含Qt实用技术、树莓派、三维、OpenCV…...
