Nginx 配置反向代理 - part 3

继承上文:
Nginx location 配置 - Part 2

之前 介绍了 nginx 配置web服务器, 但是用nginx 多的情况下是作为反向代理。
本问就是介绍如何利用nginx 配置反向代理服务。

什么是 反向代理 和 正向代理

在这里插入图片描述
一张图很清楚地表达了

正向代理

所谓正向代理就是 代理 client的(网络请求发起方)
它有这些特点

  1. 角色类似家用路由器
  2. 与clients在同1个局域网
  3. 作用是为了让Lan内其他主机 能够访问外部网络
反向代理

所谓反向代理就是 代理 server的
它有这些特点

  1. 角色类似api gateway
  2. 与server在同1个局域网
  3. 作用是为了让Lan内其他主机 能够被外部网络访问, 而且防止被外部网络直接访问



两个例子和具体需求

第一个例子是代理tomcat 主页, 这个是最常用的

proxy hostproxy portproxy domaintomcat hosttomcat port
tf-vpc0-subnet0-main-server80jp-gcp-vms.cloudtf-vpc0-subnet1-vm18080

第二例子是代理could run的某个api

proxy hostproxy portproxy domainCloud run service name
tf-vpc0-subnet0-main-server8083jp-gcp-vms.cloudhelloservice-7hq3m4pdya-nw.a.run.app

注意cloud run的service name并不是真正背后的主机名, 其真正的host/ip (好像是ipv6)是对我们隐藏的, 也无法知道具体端口

第三个例子 是代理内网中的1个mysql 服务, 但是可惜nginx 只是 http 代理, 并不能处理mysql 的协议,只能用proxySQL等代替。没有第3个。。




代理tomcat 主页

这个相对简单

我们要在/etc/nginx/conf.d/ 下创建1个新的配置文件

upstream appserver {server tf-vpc0-subnet1-vm1:8080;
}server {listen 80;server_name jp-gcp-vms.cloud www.jp-gcp-vms.cloud;location / {proxy_pass http://appserver/;#loginaccess_log /var/log/nginx/proxytomcat.access.log;error_log /var/log/nginx/proxytomcat.error.log;}}

注意这里我们用upstream block 先定义了 tomcat 真正的服务器地址和host

然后在 server{} block 中并不需要想定义网站那样 提供1个 root 路径

直接用 proxy_pass 指向真正的后台服务地址就可以了。

测试效果
http://jp-gcp-vms.cloud/

由于代理用的是80端口, 浏览器也不再需要写端口地址了。
在这里插入图片描述

有个坑, 在配置文件中尽量避免写下划线_ 否则有可能出现下面的问题

在这里插入图片描述



代理cloud run service

同样地, 在/etc/nginx/conf.d/ 下再创建1个文件

# upstream helloservice {# server helloservice-7hq3m4pdya-nw.a.run.app; # not for cloudrun , upstream server could only point to the actual server host
# }server {listen 8083;server_name jp-gcp-vms.cloud www.jp-gcp-vms.cloud;#ssl_certificate /root/ssl/ssl_certificate.crt;#ssl_certificate_key /root/ssl/ssl_certificate.key;location /api/ {# proxy_pass https://helloservice/api/;  # not for cloudrun , upstream server could only point to the actual server hostproxy_pass https://helloservice-7hq3m4pdya-nw.a.run.app/api/; proxy_pass_header Authorization;# proxy_set_header Authorization "Bearer $ID_TOKEN";  # Ngnix do not support read env variables by default# We might need to use envsubst to add env-value in nginx.conf before nginx service start# , but it's not dynamic enough# proxy_set_header Authorization "Bearer $(gcloud auth print-identity-token)";  # do not support this as well.. might need lua plugin# loginaccess_log /var/log/nginx/helloservice.ssl.access.log;error_log /var/log/nginx/helloservice.ssl.error.log;}
}

有几个坑

  1. 由于cloud run serice name 并不是1个真正的host, 所以我们无法使用upstream block 预定义。
  2. 这里的例子只代理了 这个service /api/ 下的api
  3. Authorization 这个header 要显式 pass
  4. 本人还没找到 能在 nginx 生成 google Identity token的方法, 见注释

测试结果

gateman@DESKTOP-UIU9RFJ:~$ curl -k -H "Authorization: Bearer $(gcloud auth print-identity-token)" http://jp-gcp-vms.cloud:8083/api/hello
Hello, Jason!!!!
gateman@DESKTOP-UIU9RFJ:~$ 

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

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

相关文章

oracle11g数据导出和导入

利用数据泵导出导入数据 命令:EXPDP/IMPDP 第一:创建directory对象,可以在命令行,也可以在客户端上运行 CREATE DIRECTORY DUMP_DIR AS /home/dump 原因:导入导出工具只能将转储文件存放在DIRECTORY对象对应的os目…

世微 AP5219 平均电流型LED降压恒流驱动器 电动摩托汽车灯芯片

产品描述 特点 AP5219 是一款 PWM工作模式, 高效率、外 围简单、内置功率管,适用于5V~100V输入的高 精度降压 LED 恒流驱动芯片。输出功率可达 25W,电流 2.5A。 AP5219 可实现全亮/半亮功能切换,通过 MODE 切换:全亮…

手搓一个Notes Kill文件

大家好,才是真的好。 无论是资源使用,还是Notes客户机运行本身的卡顿,有时候都会造成事实上的程序无响应, 对于心急的人们,自然而然倾向于彻底结束Notes程序运行,然后重新开始,就像打游戏一样…

SambertHifigan模型训练训练出错-list index out of range

模型的地址是 SambertHifigan个性化语音合成-中文-预训练-16k 错误描述 如上图,在运行训练命令(train.py)的时候,会出现这个错误, 错误解决 上面这个错误并不是train.py的问题,是上一步骤 auto_label.py的…

基于STM32设计的智能饮水机(微信小程序)

一、项目背景 随着社会科技的快速发展以及人们对健康生活品质追求的提升,饮水设备已经从传统单一功能的开水器向智能化、多功能化的方向转变。智能饮水机作为家庭与办公环境中的重要组成部分,其市场需求日益增长,用户期待能实时监测水质、精确控制水温和水量,并实现远程操…

刚上线三天,OpenAI GPT 商店的「AI 女友」就已泛滥丨 RTE 开发者日报 Vol.126

开发者朋友们大家好: 这里是 「RTE 开发者日报」 ,每天和大家一起看新闻、聊八卦。我们的社区编辑团队会整理分享 RTE (Real Time Engagement) 领域内「有话题的 新闻 」、「有态度的 观点 」、「有意思的 数据 」、「有思考的 文…

一个小技巧教你制作电子样册

据统计,使用电子样册的企业,转化率可提高高达30%。与传统纸质样册相比,电子样册的阅读率更高,互动性更强,更能吸引潜在客户的关注。此外,电子样册还可以随时更新和修改,保持品牌形象的新鲜感。 …

pod控制器

1、定义 又称工作负载,用于管理pod的中间层,确保pod资源符合预期的状态(副本数、容器的重启策略、镜像拉取策略、pod出现故障时的重启等) 2、控制器类型 replicaSet 指定pod副本的数量。三个组件:①pod的副本数②标…

ChatGPT4.0 >ChatGPT 3.5 > 文心一言

ChatGPT和文心一言 前言 ChatGPT是一种基于自然语言处理的对话型人工智能模型,由OpenAI开发。它是使用了大规模的语料库进行无监督学习的结果,并且在生成自然流畅的文本方面表现出色。 ChatGPT可以用于各种对话任务,例如回答问题、提供建议…

工智能基础知识总结--特征工程之特征选择

特征选择的目标 构造机器学习的模型的目的是希望能够从原始的特征数据集中学习出问题的结构与问题的本质,此时的挑选出的特征就应该能够对问题有更好的解释;特征决定了机器学习的上限,而模型和算法只是去逼近这个上限,所以特征选择的目标大概如下: 提高预测的准确性;减少…

计算机网络——HTTP协议

1. HTTP的概述 HTTP(超文本传输协议),定义在RFC2616中,是用于分布式和协作式多媒体系统之间交互的应用层通信协议。 1.1 无状态 HTTP是一个无状态协议,意味着它不保存先前交互的记录。每个请求都独立于其他请求处理。…

mysql原理--redo日志2

1.redo日志文件 1.1.redo日志刷盘时机 我们前边说 mtr 运行过程中产生的一组 redo 日志在 mtr 结束时会被复制到 log buffer 中,可是这些日志总在内存里呆着也不是个办法,在一些情况下它们会被刷新到磁盘里,比如: (1). log buffer…

硬盘恢复软件如何恢复硬盘数据?分享使用方法

在数字时代,数据的重要性不言而喻。一旦硬盘发生数据丢失,在未备份数据的情况下,对于个人和企业来说可能造成巨大的损失。然而,随着技术的进步,硬盘恢复软件已经成为解决这一问题的有效工具。它能够有效处理一些不是物…

uniapp 图片保持宽高比,撑满屏幕宽度

image 标签添加 mode"widthFix" <image mode"widthFix" :src"detailData.coverImageURL" />image 标签添加样式 image {width: 100%;height: auto; }

浅谈vue响应式

响应式简单理解&#xff1a;当一个对象的属性发生变化的时候调用一个回调函数 要想做到上述功能需要具备两个条件 属性的写入和读取必须可以被拦截&#xff08;被vue管理&#xff09;属性必须在回调函数或watch函数中被读取&#xff0c;这样才能记录属性之后被写入的时候应该调…

在Excel中将一列分为多列的三种方法,总有一种适合你

在处理数据和电子表格时,可读性和结构非常重要。它使数据更容易浏览和使用。提高数据可读性的最佳方法之一是将数据分割成块,这样更容易访问正确的信息。 当从头开始输入数据时,可以确保我们对数据的结构更具可读性。但是,有时你需要使用其他人创建的数据。如果数据量很大…

Fooocus 使用笔记

目录 换装&#xff0c;换脸&#xff0c;修复畸形 比较和使用教程&#xff1a; 安装教程&#xff1a; github地址&#xff1a; 换装&#xff0c;换脸&#xff0c;修复畸形 &#x1f525;迄今最全&#xff01;Fooocus AI绘图 详细教程 AI换装 AI换脸 AI修复畸形 - 西瓜视频 …

【机器学习】scikit-learn机器学习中随机数种子的应用与重现

随机数种子是为了能重现某一次实验生成的随机数而设立的&#xff0c;相同的随机数种子下&#xff0c;生成的随机数序列一样 一、随机数种子基础应用 在python中简单运用随机数种子 import random random.seed(1) a random.sample(range(0,100),10) random.seed(2) b random.…

如何通过内网穿透实现公网访问Portainer管理监控Docker容器

文章目录 前言1. 部署Portainer2. 本地访问Portainer3. Linux 安装cpolar4. 配置Portainer 公网访问地址5. 公网远程访问Portainer6. 固定Portainer公网地址 正文开始前给大家推荐个网站&#xff0c;前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风…

软件测试Leader避坑指南,让你少走弯路!

作为一名软件测试人&#xff0c;特别是测试Leader工作中难免会遇到一些坑。你是否经常会为此感到焦虑和苦恼&#xff1f; 测试Leader在团队中往往处于夹心饼干的角色。 对上要面对上级的施压、打压、批评、责骂和CPU、甩锅&#xff1b;对下要面对员工的摆烂&#xff0c;敷衍和…