SSH隧道+Nginx:绿色通道详解(SSH Tunnel+nginx: Green Channel Detailed Explanation)

server/2025/2/13 12:43:46/

SSH隧道+Nginx:内网资源访问的绿色通道

问题背景

模拟生产环境,使用两层Nginx做反向代理,请求公网IP来访问内网服务器的网站。通过ssh隧道+反向代理来实现,重点分析一下nginx反代的基础配置。

实验环境

1、启动内网服务器tomcat服务

使用docker,将tomcat容器的8080端口映射到物理机的8010端口,并测试访问。

2、在内网服务器上配置反向代理端口

使用ssh隧道,建立内网服务器8000端口与公网服务器8001端口之间的连接。这个端口只能用于公网服务器内部到内网服务器的访问,如果任意网络请求tomcat网页访问还需要再配置nginx的反代。

ssh -fCNR 8001:localhost:8000 \-o ServerAliveInterval=60 \[公网用户]@p[公网ip] -p 22

3、公网服务器nginx反代配置

用户通过域名或IP访问时,将默认80端口的请求转发到本地8001端口,即内网服务器的8000端口。

server {    listen 80;    server_name www.testtomcat.com;
    location / {        proxy_pass http://127.0.0.1:8001;        proxy_redirect  off;        proxy_set_header  Host  $host;        proxy_set_header  X-Real-IP  $remote_addr;        proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;    }    }

4、内网服务器nginx反代配置

监听8000端口,将请求转发到tomcat容器的8010端口,实现外网访问内网服务器资源。​​​​​​​

server {    listen 8000;    server_name 127.0.0.1;        location / {        proxy_pass http://127.0.0.1:8010;        proxy_redirect  off;        proxy_set_header  Host  $host;        proxy_set_header  X-Real-IP  $remote_addr;        proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;    }    }

反代配置的部分指令

1、upstream

定义一组上游服务器集群,便于proxy_pass使用,一般用在负载均衡中。

2、proxy_pass

设置代理服务器的协议和地址。协议可以指定 “http “或 “https”。地址可以指定为域名或IP地址,也可以配置为 upstream 定义的上游服务器

3、proxy_set_header

在传递给上游服务器的请求头中,可以使用该指令重新定义或添加字段。

Host:使传递给上游服务器的 Host 字段,包含用户访问反代时使用的域名;

X-Real-IP:保留客户端IP;

X-Forwarded-For:多层反代时,保留客户端真实的IP地址信息。

4、proxy_cache

缓存上游服务器的请求,减轻压力。

5、proxy_ssl_session_reuse

配置是否使用基于SSL安全协议的会话连接,默认开启。

nginx配置更新流程

图源/流程:mazhen.tech

更新配置时,向master 进程发送信号并做处理:

1)检查配置文件语法;

2)master加载配置,启动一组新的worker进程。新的 worker 进程马上开始接收新连接和处理网络请求。子进程可以共享使用父进程已经打开的端口;

3)master向旧的worker发送信号,让旧的worker优雅退出;

4)旧的 worker 进程停止接收新连接,完成现有连接的处理后结束进程。


http://www.ppmy.cn/server/167328.html

相关文章

分布式 IO 模块:港口控制主柜的智能 “助手”

在繁忙的港口,每一个集装箱的装卸、每一艘货轮的停靠与离港,都离不开高效精准的控制系统。港口控制主柜作为整个港口作业的核心枢纽之一,其稳定运行至关重要。而明达技术自主研发推出的MR30分布式 IO 模块可作为从站,与 PLC&#…

elementuiPlus日期范围选择el-date-picker动态禁用时间选择

记录项目中的一个小需求:使用 elementuiPlus 日期选择组件时,需要动态禁用可选择的日期,禁止选中今天之后的日期,且选中的日期范围不饿能超过30天。 饿了么组件的 plus 版本去掉了v2版本的配置项 picker,改用 calenda…

【算法学习】DFS与BFS

目录 一,深度优先搜索 1,DFS 2,图的DFS遍历 (1),递归实现(隐士栈) (2),显示栈实现(非递归) 二,广度优先搜索 1,BFS 2,图的BF…

Hive的数据库操作和表操作

1、启动zookeeper以正确启动高可用集群 2、启动HiveServer2服务 3、连接HiveServer2服务 4、创建数据库hive_db 5、调整日志级别忽略INFO日志 6、查看数据库hive_db的属性信息 7、修改数据库hive_db的属性信息,并查看数据库hive_db的属性信息 8、删除数据库hive_db&…

dify.ai 怎么配置链接火山引擎等云厂商的deepseek模型

要将 dify.ai 配置链接到火山引擎等云厂商的 DeepSeek 模型. 申请火山引擎的key,创建endpoint 添加模型 测试模型

1.攻防世界 unserialize3(wakeup()魔术方法、反序列化工作原理)

进入题目页面如下 直接开审 <?php // 定义一个名为 xctf 的类 class xctf {// 声明一个公共属性 $flag&#xff0c;初始值为字符串 111public $flag 111;// 定义一个魔术方法 __wakeup()// 当对象被反序列化时&#xff0c;__wakeup() 方法会自动调用public function __wa…

本地部署【LLM-deepseek】大模型 ollama+deepseek/conda(python)+openwebui/docker+openwebui

通过ollama本地部署deepseek 总共两步 1.模型部署 2.[web页面] 参考官网 ollama:模型部署 https://ollama.com/ open-webui:web页面 https://github.com/open-webui/open-webui 设备参考 Mac M 芯片 windows未知 蒸馏模型版本:deepseek-r1:14b 运行情况macminim2 24256 本地…

总结Thread的基本用法

1. 线程创建 1.1 创建一个类, 继承Thread, 重写run方法 class MyThread extends Thread {Overridepublic void run() {while (true) {System.out.println("hello thread");try {// 这里只能 try catch, 不能 throws.// 此处是方法重写. Java 的方法重写规则不允许子…