go语言实现简单ngnix样例

目录

1、代码实现样例:

2、postman调用ngnix,转发:


1、代码实现样例:

package mainimport ("bytes""encoding/json""io""log""net/http""net/http/httputil""net/url"
)func main() {// 定义反向代理的目标服务器地址targetURL, err := url.Parse("http://localhost:8082")if err != nil {log.Fatalf("Failed to parse target URL: %v", err)}// 创建反向代理proxy := httputil.NewSingleHostReverseProxy(targetURL)// 修改请求处理函数http.HandleFunc("/login", handler(proxy))if err := http.ListenAndServe(":8887", nil); err != nil {log.Fatalf("Failed to start proxy server: %v", err)}
}func handler(proxy *httputil.ReverseProxy) http.HandlerFunc {return func(w http.ResponseWriter, r *http.Request) {log.Printf("Received request: %s %s", r.Method, r.URL.Path)// 构造传入参数params := map[string]string{"username": "user1","password": "password1",}jsonData, err := json.Marshal(params)if err != nil {http.Error(w, err.Error(), http.StatusInternalServerError)log.Printf("Failed to marshal JSON: %v", err)return}// 发送 POST 请求到目标服务器resp, err := http.Post("http://localhost:8082/login", "application/json", bytes.NewBuffer(jsonData))if err != nil {http.Error(w, err.Error(), http.StatusInternalServerError)log.Printf("Failed to send POST request: %v", err)return}defer resp.Body.Close()// 复制响应头部for key, values := range resp.Header {for _, value := range values {w.Header().Add(key, value)}}// 将目标服务器的响应内容直接返回给客户端w.WriteHeader(resp.StatusCode)if _, err := io.Copy(w, resp.Body); err != nil {log.Printf("Failed to write response: %v", err)}log.Printf("Forwarded response: %d", resp.StatusCode)}
}

2、postman调用ngnix,转发:

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

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

相关文章

ruoyi-nbcio-plus基于vue3的flowable收回任务后重新进行提交表单的处理

更多ruoyi-nbcio功能请看演示系统 gitee源代码地址 前后端代码: https://gitee.com/nbacheng/ruoyi-nbcio 演示地址:RuoYi-Nbcio后台管理系统 http://218.75.87.38:9666/ 更多nbcio-boot功能请看演示系统 gitee源代码地址 后端代码: h…

Python AI库 Pandas的常见操作的扩展知识

Python AI库 Pandas的常见操作的扩展知识 本文默认读者具备以下技能: 熟悉python基础知识,vscode或其它编辑工具 熟悉表格文件的基本操作 具备自主扩展学习能力 前文中对Pandas的数据结构以及基础操作做了介绍,本文中会在前文的基础上,对常见的操作进…

selenium拉动滚动条

selenium拉动滚动条 # 导包 from selenium import webdriver from time import sleep # 获取浏览器驱动对象 driver webdriver.Edge() # 最大化浏览器 driver.maximize_window() # 隐式等待 driver.implicitly_wait(30) # 打开url url r"C:\Users\黄永生\Desktop\软件测…

计算机找不到vcruntime140_1.dll,无法继续执行代码快速解决方法

vcruntime140_1.dll是一个重要的Windows操作系统中的动态链接库(DLL)文件,它是微软Visual C Redistributable软件包的组成部分。以下是该文件的详细介绍: 名称含义:“vcruntime”代表Visual C Runtime,表明…

static page 项目

static page 项目 作者:不染心 博客地址:https://blog.csdn.net/qq_38234785 源码地址:https://mbd.pub/o/bread/ZpWVlJps 未经允许,不得转载 文档版本v1,还没写完持续更新 一、引言 1. 软件概述和背景 本软件是…

STM32f103 HAL库读保护以及解除

读保护 void Flash_EnableReadProtection(void) {FLASH_OBProgramInitTypeDef OBInit;__HAL_FLASH_PREFETCH_BUFFER_DISABLE();HAL_FLASHEx_OBGetConfig(&OBInit);if(OBInit.RDPLevel OB_RDP_LEVEL_0){OBInit.OptionType | OPTIONBYTE_RDP;OBInit.RDPLevel OB_RDP_LEVEL…

FIR滤波器——DSP学习笔记三(包含一个滤波器设计的简明案例)

​​​​​​ 背景知识 FIR滤波器的特性与优点 可精确地实现线性相位响应(Linear phase response),无相位失真; 总是稳定的,所有极点都位于原点 线性相位FIR滤波器的性质、类型及零点位置 冲击响应满足:奇…

【PyTorch】torch.gather() 用法

gather常被用于image做mask的操作中,对哪些地方进行赋值0/1 API: torch.gather — PyTorch 2.2 documentation torch.gather(input, dim, index, outNone) → Tensor gather()的意义: 顾名思义,聚集、集合:gather…

VS2019配合QT5.9开发IRayAT430相机SDK

环境配置 VS2019 QT5.9 编译器版本 MSVC2017_64添加系统环境变量(完毕后重启电脑) 从VS2019中下载Qt插件 从VS2019中添加单个编译组件 上述操作完成后用VS打开工程文件,工程文件地址 : C:\Users\86173\Desktop\IRCNETSDK_W…

数据分析:生存分析原理和应用实例

介绍 生存分析的目的是分析某个时间点的“生存概率”是多少。基于这样的研究目的,需要提供生存数据,它是一种由不同的开始时间和结束时间组成的事件-时间的数据,比如在癌症研究领域,研究手术到死亡的过程、治疗到疾病进展等等。 在开展生存分析前,需要了解什么是删失(c…

时间序列生成数据,TransformerGAN

简介:这个代码可以用于时间序列修复和生成。使用transformer提取单变量或者多变时间窗口的趋势分布情况。然后使用GAN生成分布类似的时间序列。 此外,还实现了基于prompt的数据生成,比如指定生成某个月份的数据、某半个月的数据、某一个星期的…

哈夫曼编码---一种无损数据压缩算法

哈夫曼编码是一种无损数据压缩算法,该算法在数据压缩,存储和网络传输等领域广泛引用,对互联网的发展也产生了深远的影响。 大家熟知的数据无损压缩软件,如WinRAR,gzip,bzip,lzw,7-z…

mac M2 配置item2 rzsz

背景 apple m 系列处理器安装的 homebrew 跟 intel 处理器略有不同,其中安装目录的区别: m 系列处理器安装目录为 /usr/local/bin/homebrew intel 处理器安装目录为 /opt/homebrew 问题1: 卡住 产生原因: m 系列使用 brew install lrzs…

Vscode——SSH连接不进去服务器的万能解决办法

一、查看当前版本VSCode的commit_id Help -> About -> Commit(对应中文版本:帮助 -> 关于 -> 提交) 会得到一串数字字母,我们简称 ID。 二、手动下载对应的VSCode包 浏览器输入:https://update.code.v…

手撕红黑树(kv模型模拟)

目录 前言 一、相关概念 二、性质介绍 红黑树平衡说明 三、红黑树模拟(kv结构) 1、红黑树节点 2、红黑树插入 2、特殊处理情况 声明: 情况一:cur为红,p为红,g为黑,u存在,且…

Spring Cloud学习笔记(Feign):配置类(未完成)

这是本人学习的总结,主要学习资料如下 - 马士兵教育 1、给Feign配置的方式1.1、通过Bean配置1.2、application.yaml配置 2、配置日志2.1、日志级别1.2、指定日志级别1.2.1、通过Bean配置1.2.2、application.yaml配置 3、Inteceptor配置 1、给Feign配置的方式 我们有…

牛客NC99 多叉树的直径【较难 深度优先 Java/Go/PHP】

题目 题目链接: https://www.nowcoder.com/practice/a77b4f3d84bf4a7891519ffee9376df3 思路 核心就是树的最大直径(globalMax)一定是以某一个node为root最长的两个path-to-leaf. 就是普通dfs的同时算路径长度。时间: O(n), DFS一次 空间: O(n)参考答案Java impo…

stm32的GPIO基本结构

1.带FT标号的引脚能容忍5V 2.GPIO系统架构 stm32的所有GPIO都是挂载在APB2总线上的 3.GPIO的基本结构 在上图中,左边就是寄存器,右边就是驱动器了 保护二极管的作用:VDD表示3.3V,如果输入的电压的值大于3.3V,那么这个…

企业级OV SSL证书,主要应用在哪些场景

我们来看看OV SSL证书的一个典型应用,即电子商务网站。随着电子商务的发展,网上购物已经成为人们日常生活的一部分。然而,这同时也带来了一个问题,就是用户在进行网上交易时,如何保证其个人信息、银行卡信息等敏感数据…

就业班 第三阶段(nginx) 2401--4.26 day5 nginx5 nginx https部署实战

三、HTTPS 基本原理 1、https 介绍 HTTPS(全称:HyperText Transfer Protocol over Secure Socket Layer),其实 HTTPS 并不是一个新鲜协议,Google 很早就开始启用了,初衷是为了保证数据安全。 近些年&…