当前位置: 首页 > news >正文

分布式 - 服务器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对象通常实在创建画布的同时被创建的&#xf…...

redis学习笔记(三)

文章目录 key操作(1)查找键(2)判断键是否存在(3)查看键的的值的数据类型(4)删除键以及键对应的值(5)查看键的有效期(6)设置key的有效期…...

Go语言template模板语法

Go语言模板语法 文章目录 <center> Go语言模板语法连接前后端的符号: {{}}注释管道(pipeline)变量条件判断range 关键字with 关键字比较函数自定义函数嵌套模板模板继承 连接前后端的符号: {{}} 模板语法都包含在{{}}之中,其中{{.}}中的.表示当前对象.在传入一个结构体对…...

Python-OpenCV中的图像处理-物体跟踪

Python-OpenCV中的图像处理-物体跟踪 物体跟踪 物体跟踪 现在我们知道怎样将一幅图像从 BGR 转换到 HSV 了&#xff0c;我们可以利用这一点来提取带有某个特定颜色的物体。在 HSV 颜色空间中要比在 BGR 空间中更容易表示一个特定颜色。在我们的程序中&#xff0c;我们要提取的…...

本地Linux 部署 Dashy 并远程访问教程

文章目录 简介1. 安装Dashy2. 安装cpolar3.配置公网访问地址4. 固定域名访问 转载自cpolar极点云文章&#xff1a;本地Linux 部署 Dashy 并远程访问 简介 Dashy 是一个开源的自托管的导航页配置服务&#xff0c;具有易于使用的可视化编辑器、状态检查、小工具和主题等功能。你…...

6.2 口令破解攻击

数据参考&#xff1a;CISP官方 目录 口令安全问题口令破解攻击口令破解安全防护口令使用安全管理 一、口令安全问题 什么是口令 身份验证的机制&#xff0c;俗称 “密码"&#xff0c;对应英文单词为 password成本较低&#xff0c;得到广泛应用信息安全中的 “密码”…...

SSL账号申请及配置

摘自个人印象笔记https://app.yinxiang.com/fx/db244155-c858-4d8a-93a8-08071d168dc8ssl申请平台&#xff1a;https://blog.freessl.cn/ ajian51168qq.com … 操作说明&#xff1a;https://blog.freessl.cn/acme-quick-start/ nginx配置&#xff1a; upstream local_tomcat{s…...

JS代码混淆加密有什么用?

JS加密、JS混淆&#xff0c;有这些用&#xff1a; 1、前端JS代码&#xff0c;如果不加密&#xff0c;它人可以随便copy、任意修改。自己写的代码&#xff0c;可以轻易成为别人的成果。 对JS代码混淆加密&#xff0c;则可以防止这种他人随意白嫖的问题&#xff0c;代码是自己辛…...

Oracle的function執行DML操作

Oracle的function並不支持DML操作&#xff0c;但可以使用一段指令&#xff0c;讓這段pl/sql成為獨立的事務。 当使用 PRAGMA AUTONOMOUS_TRANSACTION 时&#xff0c;可以在一个过程或函数的独立代码块中执行数据库操作&#xff0c;而不受外部事务的影响。这意味着内部事务的提交…...

大语言模型:LLM的概念是个啥?

一、说明 大语言模型&#xff08;维基&#xff1a;LLM- large language model&#xff09;是以大尺寸为特征的语言模型。它们的规模是由人工智能加速器实现的&#xff0c;人工智能加速器能够处理大量文本数据&#xff0c;这些数据大部分是从互联网上抓取的。 [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许可&#xff08;开源&#xff09;发行的跨平台计算机视觉和机器学习软件库&#xff0c;可以运行在Linux、Windows、Android和Mac OS操作系统上。 它轻量级而且高效——由一系列 C 函数和少量 C 类构成&#xff0c;同时提供了Python、Ruby、MATLAB等…...

基于颜色进行轮廓分割,基于opencv和python

1. 阈值调整&#xff0c;交互式的阈值调整&#xff0c;确定上限和下限&#xff1a; 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 组件&#xff0c;都提供了 /metrics 接口用来暴露监控数据&#xff0c;Kube-Proxy 也不例外。通过 ss 或者 netstat 命令可以看到 Kube-Proxy 监听的端口&#xff0c;一个是 10249&#xff0c;用来暴露监控指标&#xff0c;一个是 10256 &#xff0c;作为…...

4步攻克Windows与Office激活难题:从新手到专家的智能解决方案

4步攻克Windows与Office激活难题&#xff1a;从新手到专家的智能解决方案 【免费下载链接】KMS_VL_ALL_AIO Smart Activation Script 项目地址: https://gitcode.com/gh_mirrors/km/KMS_VL_ALL_AIO 在数字化办公环境中&#xff0c;软件激活问题常常成为影响工作效率的隐…...

新手入门:5分钟搞懂雷达中的Dwell Time和Hits per Scan(附计算公式)

雷达系统核心参数解析&#xff1a;从Dwell Time到Hits per Scan的实战指南 雷达技术作为现代探测系统的基石&#xff0c;其性能优劣往往取决于几个关键参数的精确配置。对于刚接触雷达领域的技术人员来说&#xff0c;理解这些参数的实际意义和相互关系&#xff0c;就像掌握了一…...

EasyAnimateV5图生视频教程:如何用LoRA Alpha=0.55增强特定风格表现力

EasyAnimateV5图生视频教程&#xff1a;如何用LoRA Alpha0.55增强特定风格表现力 1. 了解EasyAnimateV5图生视频模型 EasyAnimateV5-7b-zh-InP是一个专门用于图生视频任务的AI模型&#xff0c;它能够将输入的静态图片转换为动态视频。这个模型有70亿参数&#xff0c;占用22GB…...

PyTorch深度学习框架之多分类交叉熵实现图像分类

目录&#xff1a;一、自定义小CNN实现手机分类1、代码示例2、代码解析一、自定义小CNN实现手机分类 1、代码示例 适合苹果/华为/小米 3分类手机识别&#xff0c;你可以直接改类别数适配你的任务&#xff1a; import torch import torch.nn as nn import torch.nn.functional…...

告别云端依赖:Qwen3-VL-8B本地图文对话工具快速上手教程

告别云端依赖&#xff1a;Qwen3-VL-8B本地图文对话工具快速上手教程 1. 为什么选择本地部署多模态模型&#xff1f; 在当今AI应用蓬勃发展的时代&#xff0c;越来越多的企业和开发者开始关注数据隐私和安全性。云端API虽然方便&#xff0c;但存在以下痛点&#xff1a; 数据安…...

本地连接MySql数据库报错??

提示&#xff1a; idea本地连接数据库&#xff0c;然后Failed Copy Search Error Troubleshooting DBMS: MySQL (no ver.) Case sensitivity: plainmixed, delimitedexact Communications link failure The last packet sent successfully to the server was 0 millisec…...

Magnum音频处理框架终极指南:OpenAL集成与沉浸式3D音效实现

Magnum音频处理框架终极指南&#xff1a;OpenAL集成与沉浸式3D音效实现 【免费下载链接】magnum Lightweight and modular C11 graphics middleware for games and data visualization 项目地址: https://gitcode.com/gh_mirrors/mag/magnum Magnum是一个轻量级、模块化…...

MacOS下Homebrew国内源配置全攻略:阿里、清华、中科大镜像一键切换

1. 为什么需要切换Homebrew国内镜像源&#xff1f; 如果你经常在MacOS上使用Homebrew安装软件&#xff0c;大概率遇到过下载速度慢到让人抓狂的情况。我刚开始用brew安装Python时&#xff0c;眼睁睁看着进度条像蜗牛爬行&#xff0c;一个200MB的包下了半小时还没完。后来才发现…...

SEO_为什么你的SEO没效果?关键原因分析

SEO为什么你的SEO没效果&#xff1f;关键原因分析 在互联网时代&#xff0c;SEO&#xff08;搜索引擎优化&#xff09;是提升网站在搜索引擎排名的关键手段。不少网站在付出大量努力后&#xff0c;却发现SEO效果不佳&#xff0c;这是一个令人困扰的问题。为什么你的SEO没有效果…...

npx vs npm run:深度对比与最佳实践指南

npx vs npm run&#xff1a;深度对比与最佳实践指南 【免费下载链接】npx execute npm package binaries (moved) 项目地址: https://gitcode.com/gh_mirrors/np/npx 在Node.js生态系统中&#xff0c;npx和npm run是两个至关重要的命令行工具&#xff0c;它们都能执行np…...