golang实现正向代理和反向代理

文章目录

  • 正向代理
  • 反向代理
  • 区别与联系:
  • 总结
  • 代理服务器实现
    • 正向代理
    • 反向代理

正向代理

正向代理是客户端代理,它位于客户端和目标服务器之间。它的作用是保护客户端的隐私和安全。
在这里插入图片描述

如我们现在想要访问谷歌,但是由于某些原因,无法直接访问到谷歌,我们可以通过连接一台代理服务器,代理服务将我们的请求提交到谷歌,然后再将谷歌的响应反馈给我们,对于谷歌而言,它只知道有一个请求过来,但是它并不会知道我们是无法直接访问它的。

反向代理

反向代理是服务器的代理,它位于目标服务器和客户端之间。
它的作用是为目标服务器提供服务,例如负载均衡、缓存加速和安全防护。
![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/463100fc0c414d7f8f4ddc8b3fbb822f.png
举例: 比如我们访问百度网站,百度的代理服务器对外的域名为 https://www.baidu.com 。具体内部的服务器节点我们不知道。现实中我们通过访问百度的代理服务器后,代理服务器给我们转发请求到他们N多的服务器节点中的一个给我们进行搜索后将结果返回,此时,代理服务器对我们客户端来说就充当了提供响应的服务器,但是对于目标服务器来说,它只是进行了一个请求和转发的功能。

区别与联系:

正向代理:代理客户端,服务端不知道实际发起请求的客户端。
反向代理:代理服务端,客户端不知道实际提供服务的服务端。
正向代理需要对客户端进行配置,而反向代理对客户端是透明的,不需要进行任何配置

总结

正向代理和反向代理都是进行请求和转发的代理方式,但为了区分,后者被称为反向代理。
生活中最常见的例子是正向代理类似于卖票的黄牛,而反向代理类似于出租房的二手东

代理服务器实现

正向代理

按照我们之前介绍的代理原理,我们可以编写出这样的代码:

package mainimport ("fmt""io""net""net/http""strings"
)type Pxy struct {}func (p *Pxy) ServeHTTP(rw http.ResponseWriter, req *http.Request) {fmt.Printf("Received request %s %s %s\n", req.Method, req.Host, req.RemoteAddr)transpo

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

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

相关文章

STM32_3-1点亮LED灯与蜂鸣器发声

STM32之GPIO GPIO在输出模式时可以控制端口输出高低电平,用以驱动Led蜂鸣器等外设,以及模拟通信协议输出时序等。 输入模式时可以读取端口的高低电平或电压,用于读取按键输入,外接模块电平信号输入,ADC电压采集灯 GP…

【NERF】入门学习整理(二)

【NERF】入门学习整理(二) 1. Hierarchicalsampling分层采样2. Loss定义(其实就是简单的均方差MSE)3. 隐式重建与显示重建1. Hierarchicalsampling分层采样 粗网络coarse,均匀采样64个点 缺点:如果仅使用粗网络会存在点位浪费和欠采样的问题,比比如空气中很多无效的点 精细…

【C语言】文件操作篇-----程序文件和数据文件,文件的打开和关闭,二进制文件和文本文件,fopen,fclose【图文详解】

欢迎来CILMY23的博客喔,本篇为【C语言】文件操作篇-----程序文件和数据文件,文件的打开和关闭,二进制文件和文本文件【图文详解】,感谢观看,支持的可以给个一键三连,点赞关注收藏。 前言 在了解完动态内存管…

的发射点2

☞ 通用计算机启动过程 1️⃣一个基础固件:BIOS 一个基础固件:BIOS→基本IO系统,它提供以下功能: 上电后自检功能 Power-On Self-Test,即POST:上电后,识别硬件配置并对其进行自检&#xff0c…

5.55 BCC工具之funcinterval.py解读

一,工具简介 eBPF/bcc非常适用于平台性能调优。通过funclatency工具,我们可以分析特定函数的性能,了解该函数的延迟情况。然而,有时性能下降并不是由于函数的延迟,而是函数调用之间的间隔。 funcinterval正是为此而生。 另外,在平台上进行硬件性能调优时,我们将使用协…

运维随录实战(13)之docker搭建mysql集群(pxc)

了解 MySQL 集群之前,先看看单节点数据库的弊病 大型互联网程序用户群体庞大,所以架构需要特殊设计。单节点数据库无法满足大并发时性能上的要求。单节点的数据库没有冗余设计,无法满足高可用。单节点 MySQL无法承载巨大的业务量,数据库负载巨大常见 MySQL 集群方案 Re…

少儿编程 蓝桥杯青少组科技素养题 信息素养真题及解析第25套

少儿编程 科技素养 信息素养真题第25套 1、旅行结束之后,回到家的小蓝决定将照片备份在云端的网盘上。备份照片主要占用的是小蓝家的( )带宽 A、下行 B、上行 C、文件 D、数据 答案:B 考点分析:主要考查网络相关知识,要将照…

php使用redis做游戏服务端缓存

游戏数据缓存:在游戏中,玩家的角色数据、游戏物品等信息通常需要频繁读取和更新。使用 Redis 可以将这些数据缓存起来,以提高数据的读取速度和减少数据库的负载。这种场景下,可以使用 Redis 的字符串(String&#xff0…

DHCP中继实验(华为)

思科设备参考: 一,技术简介 DHCP中继,可以实现在不同子网和物理网段之间处理和转发DHCP信息的功能。如果DHCP客户机与DHCP服务器在同一个物理网段,则客户机可以正确地获得动态分配的IP地址。如果不在同一个物理网段,…

uView guid 全局唯一标识符

唯一标识符 #guid(length 32, firstU true, radix 62) 该函数可以生产一个全局唯一、随机的guid&#xff0c;默认首字母为u&#xff0c;可以用于当做元素的id或者class名等需要唯一&#xff0c;随机字符串的地方&#xff0c;因为id或者class不能以数字开头。 length <…

vue开发100问?

以上问题旨在为Vue.js开发者提供更广泛的技术探索方向&#xff0c;覆盖了Vue.js项目开发中可能出现的各种技术和业务场景。 Vue.js的基本原理是什么&#xff1f;如何在Vue中实现数据双向绑定&#xff1f;Vue实例化时需要哪些基本配置项&#xff1f;Vue的生命周期钩子函数有哪些…

JVM知识整体学习

前言&#xff1a;本篇没有任何建设性的想法&#xff0c;只是我很早之前在学JVM时记录的笔记&#xff0c;只是想从个人网站迁移过来。文章其实就是对《深入理解JVM虚拟机》的提炼&#xff0c;纯基础知识&#xff0c;网上一搜一大堆。 一、知识点脑图 本文只谈论HotSpots虚拟机。…

微信小程序提交成功设置提示

在微信小程序中&#xff0c;当用户成功提交表单或完成某项操作后&#xff0c;通常我们会设置一个提示来告知用户操作已完成。这种提示通常可以通过几种方式来实现&#xff0c;例如使用 wx.showToast 方法显示一个短暂的提示消息&#xff0c;或者跳转到一个新的页面并显示成功信…

scikit-learn保姆级入门教程

在SKLearn中&#xff0c;因为做了上层的封装&#xff0c;分类模型、回归模型、聚类与降维模型、预处理器等等都叫做估计器(estimator)&#xff0c;就像在Python里『万物皆对象』&#xff0c;在SKLearn里『万物皆估计器』。 在本篇内容中&#xff0c;我们将给大家进一步深入讲解…

C# 视频转图片

在 C# 中将视频转换为图像可以使用 FFmpeg 库。下面是一个示例代码来完成这个任务&#xff1a; using System; using System.Diagnostics;class Program {static void Main(string[] args){string inputFile "input_video.mp4"; // 输入的视频文件路径string outpu…

【Leetcode打卡】递归回溯

【Leetcode打卡】递归回溯 784. 字母大小写全排列 class Solution { public:int find(string s,int pos){int ipos;while(i<s.size()){if(isalpha(s[i])){return i;}i;}return -1;}void turn(string& s,int pos){if(islower(s[pos])){s[pos]toupper(s[pos]);}else{s[po…

js的同步异步

JavaScript&#xff08;JS&#xff09;是一门单线程的编程语言&#xff0c;这意味着它一次只能处理一个任务。然而&#xff0c;JS 支持同步和异步操作。 同步操作是指代码按照顺序执行&#xff0c;每个操作必须在前一个操作完成后才能进行。这意味着当一个操作在执行时&#x…

思科网络中如何配置标准ACL协议

一、什么是标准ACL协议&#xff1f;有什么作用及配置方法&#xff1f; &#xff08;1&#xff09;标准ACL&#xff08;Access Control List&#xff09;协议是一种用于控制网络设备上数据流进出的协议。标准ACL基于源IP地址来过滤数据流&#xff0c;可以允许或拒绝特定IP地址范…

Java算法-力扣leetcode-274. H 指数

274. H 指数 给你一个整数数组 citations &#xff0c;其中 citations[i] 表示研究者的第 i 篇论文被引用的次数。计算并返回该研究者的 **h 指数。 根据维基百科上 h 指数的定义&#xff1a;h 代表“高引用次数” &#xff0c;一名科研人员的 h 指数 是指他&#xff08;她&a…

一文学会python实现四元数、欧拉角、旋转矩阵变换

文章目录 前言实现前言 本文主要是将python实现四元数、欧拉角、旋转矩阵变换的所有转换做了一个整理,方便大家调用实现变换。 实现 #!/usr/bin/env python3 # -*- coding: utf-8 -*- import numpy as np from scipy.spatial.transform import Rotationdef quaternion2eule…