使用Nginx正向代理让内网主机通过外网主机访问互联网

目录

环境概述

流程说明

在外网服务器上安装部署nginx 

安装前准备

下载nginx

 编译安装nginx

开始配置正向代理

创建systemd服务单元文件,用于管理Nginx服务的启动、停止和重新加载

启动nginx

 代理服务器本地验证

 内网服务器验证

 将代理地址添加到环境变量中直接使用


环境概述

        在企业网络环境中,通常会存在内网与外网的隔离,内网机器无法直接访问外部Internet。而外网机器具有访问互联网的能力。为了让内网机器能够通过外网机器访问互联网,我们可以配置Nginx正向代理来实现。

(代理服务器为linux系统,Windows系统中nginx中默认不包含proxy_connect模块,Windows编译proxy_connect模块比较麻烦,可以使用CCProxy代理软件实现,参考外网主机使用CCProxy代理使内网主机上网)

  • 内网主机:172.211.216.242  (无法直接访问外部Internet)
  • 外网主机:192.168.0.97 (可以访问Internet,并充当代理服务器)
  • 前置条件:内网主机和外网主机虽然不是在同一网段,但是可以互相访问,正向代理的端口需要互通,这里用的8080

流程说明

  1.  内网服务器发送请求:内网服务器通过HTTP或HTTPS发送请求到外网代理服务器的8080端口。

  2.   代理服务器接收请求:外网代理服务器接收到请求后,根据请求的协议(HTTP或HTTPS)使用proxy_pass将请求转发到目标互联网服务器。

  3.   互联网服务器处理请求:目标互联网服务器接收到请求后处理并生成响应。

  4.   代理服务器返回响应:互联网服务器将响应发送回外网代理服务器,然后代理服务器将响应转发回内网服务器。

 代理流程:A[内网主机 172.211.216.242] -- 请求 --> B[Nginx代理 192.168.0.97:8080]B -- 转发请求 --> C[目标服务器]C -- 返回响应 --> BB -- 返回响应 --> A+----------------------+             +------------------------+             +---------------------+
|     内网服务器      |             |    外网代理服务器       |             |   互联网服务器     |
| 172.211.216.242     | -------->  |  192.168.0.97:8080     | -------->   |  www.example.com    |
|                      |           |                        |             |                     |
| 发送HTTP/HTTPS请求   |            | 接收并转发请求          |             | 处理请求并返回响应  |
+----------------------+             +------------------------+             +---------------------+^                                      |                                       ||                                      v                                       |+----------------------<----------------+-----------------------<--------------+

在外网服务器上安装部署nginx 

安装前准备

由于Nginx默认不支持HTTPS代理,我们需要额外添加模块。使用的模块是ngx_http_proxy_connect_module。使用模块前需请确保模块和Nginx版本匹配。如图:

我这里有用的是1.20.2版本所以使用proxy_connect_rewrite_1018.patch


可以直接通过下载压缩包,解压之后通过patch命令打入补丁。

#安装patch:
yum install patch -y
cd /root
wget https://github.com/chobits/ngx_http_proxy_connect_module/archive/refs/tags/v0.0.2.zip
unzip v0.0.2.zip
下载nginx
cd /root
wget http://nginx.org/download/nginx-1.20.2.tar.gz
#解压
tar xf nginx-1.20.2.tar.gz #进入nginx目录
cd nginx-1.20.2/#使用patch命令导入补丁 注意路径是否一致 我是直接在根目录操作的
patch -p1 < /root/ngx_http_proxy_connect_module-0.0.2/patch/proxy_connect_rewrite_1018.patch
 编译安装nginx
#安装编译工具和库 
yum install gcc cmake make cmake unzip ncurses-devel gcc gcc-c++ -y#配置Nginx编译选项,使其在编译Nginx时包含ngx_http_proxy_connect_module-0.0.2模块
./configure --prefix=/usr/local/nginx --add-module=/root/ngx_http_proxy_connect_module-0.0.2#编译和安装Nginx
make && make install
开始配置正向代理
cd /usr/local/nginx/conf/#习惯性备份
cp nginx.conf nginx.conf.bak#编辑
vi  nginx.conf

可以直接参考这个 (可以直接拷贝使用)

# 设置Nginx主进程数量为1,通常在单核服务器上只需要一个主进程
worker_processes  1;# 每个工作进程能够同时处理的最大连接数
events {worker_connections  1024;
}http {# 引入mime.types文件,定义文件扩展名和对应的MIME类型include       mime.types;# 设置默认的MIME类型为application/octet-streamdefault_type  application/octet-stream;# 使用sendfile系统调用来发送文件,提高性能sendfile        on;# HTTP连接的超时时间,这里是65秒keepalive_timeout  65;server {# 服务器监听的端口号为8080listen                           8080;# 服务器名称为localhostserver_name                      localhost;# 指定DNS服务器地址为114.114.114.114,禁用IPv6解析resolver                         114.114.114.114 ipv6=off;# 开启HTTP CONNECT方法支持,用于建立与后端服务器的TCP连接proxy_connect;# 允许通过代理的端口,这里允许443和80端口proxy_connect_allow              443 80;# 建立连接的超时时间为10秒proxy_connect_connect_timeout    10s;# 读取数据的超时时间为10秒proxy_connect_read_timeout       10s;location / {# 将请求转发到代理目标proxy_pass $scheme://$http_host$request_uri;}
}}
创建systemd服务单元文件,用于管理Nginx服务的启动、停止和重新加载
echo "[Unit]
Description=The NGINX HTTP and reverse proxy server
After=network.target
Wants=network.target[Service]
Type=forking
PIDFile=/usr/local/nginx/logs/nginx.pid
ExecStartPre=/usr/local/nginx/sbin/nginx -t
ExecStart=/usr/local/nginx/sbin/nginx
ExecReload=/usr/local/nginx/sbin/nginx -s reload
ExecStop=/usr/local/nginx/sbin/nginx -s stop
PrivateTmp=true[Install]
WantedBy=multi-user.target" | sudo tee /etc/systemd/system/nginx.service
启动nginx
systemctl daemon-reloadsystemctl start nginxsystemctl enable nginx

 代理服务器本地验证

 curl -I https://blog.csdn.net/ -v -x 127.0.0.1:8080

如图 出现"HTTP/1.1 200 Connection Established" 表示代理服务器已经成功建立了连接

  内网服务器验证

curl -I https://blog.csdn.net/ -v -x 192.168.0.97:8080

如图 直接curl不通,加上代理地址端口是通的

(这一步要确保内网主机和外网服务器之间端口互通) 可以使用telnet测试

 将代理地址添加到环境变量中直接使用

vi /etc/profile#编辑/etc/profile文件 在最后一行加入export http_proxy=192.168.0.97:8080
export https_proxy=192.168.0.97:8080#192.168.0.97:8080 为你的代理服务器ip和端口

注意 使用source命令使其生效

 source /etc/profile

直接curl https://blog.csdn.net/  成功访问到  代理成功

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

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

相关文章

比瓴科技以何魅力吸引安全大牛?

今年4月&#xff0c;专注于软件供应链安全的行业领导厂商比瓴科技宣布&#xff0c;与元豚科技战略合并&#xff0c;元豚科技创始人唐誉聪加入比瓴&#xff0c;担任合伙人及研发副总裁一职。唐誉聪表示&#xff0c;将携手比瓴共同推动持续应用安全平台(ASPM)的发展&#xff0c;将…

linux查看磁盘类型命令

在Linux中&#xff0c;有多种方法可以查看磁盘是固态硬盘&#xff08;SSD&#xff09;还是机械硬盘&#xff08;HDD&#xff09;。以下是一些常用的方法&#xff1a; 查看/sys/block/目录 /sys/block/目录包含了系统中所有块设备的信息。你可以查看这个目录中的设备属性来判断…

Tomcat概述及部署

目录 一、Tomcat概述 1.Tomcat的简介 2.Tomcat 核心的三个组件 3.应用场景 4.Tomcat 请求过程 二、部署安装Tomcat 三、Tomcat 虚拟主机配置 四、Tomcat多实例部署 一、Tomcat概述 1.Tomcat的简介 Tomcat 是 Java 语言开发的&#xff0c;Tomcat 服务器是一个免费的开…

eNSP学习——RIP路由协议基础配置

目录 主要命令 原理概述 实验内容 实验目的 实验拓扑 实验编址 实验步骤 1、基本配置 2、使用RIPv1搭建网络 开启 RIP调试功能 3、使用RIPv2搭建网络 RIPv1和RIPv2的不同 需要eNSP各种配置命令的点击链接自取&#xff1a;华为&#xff45;NSP各种设备配置命令大全PD…

yolov5的口罩识别系统+GUI界面 (附代码)

基于YOLOv5模型的口罩识别系统&#xff0c;结合了GUI界面&#xff0c;旨在帮助用户快速、准确地识别图像或视频中佩戴口罩的情况。YOLOv5是一种流行的目标检测模型&#xff0c;具有高效的实时检测能力&#xff0c;而GUI界面则提供了友好的用户交互界面&#xff0c;使得整个系统…

在VSCode中安装python

引言 Python 是一种广泛使用的高级编程语言&#xff0c;因其易学、易用、强大而受到欢迎。它由 Guido van Rossum 于 1991 年首次发布&#xff0c;并以简洁的语法和丰富的库生态系统而著称。 以下是 Python 的一些关键特点和优势&#xff1a; 关键特点 易于学习和使用&#x…

操作系统 重点知识总结 习题集

文章目录 一、操作系统概述&#x1f496; 1000题集&#x1f341; 单选题&#x1f341; 综合应用题1. 单道与多道批处理系统的特点及优缺点。3. 试在交互性、及时性和可靠性方面&#xff0c;将分时系统与实时系统进行比较。4. 说明实时任务的类型和实时系统的类型。5. 处理机管理…

华媒舍:海外公司申请注册和国内市场的差异

伴随着经济全球化的加快推进&#xff0c;更多的企业开始把发展趋势目光投向国外市场。海外公司申请注册推广是涉足国际性市场的重要一环&#xff0c;但是中国市场与国外市场存在明显的差别。本文将在客户满意度、市场市场竞争、法律合规及其文化冲突等多个方面讨论海外公司申请…

Java操作Excel大全(持续更新)

文章目录 一、根据Excel模板导出1、POI2、Freemarker 二、EasyExcel1、导包2、官网 一、根据Excel模板导出 1、POI 需要poi的包。 <!-- https://mvnrepository.com/artifact/org.apache.poi/poi --> <dependency><groupId>org.apache.poi</groupId>…

使用Django JWT实现身份验证

文章目录 安装依赖配置Django设置创建API生成和验证Token总结与展望 在现代Web应用程序中&#xff0c;安全性和身份验证是至关重要的。JSON Web Token&#xff08;JWT&#xff09;是一种流行的身份验证方法&#xff0c;它允许在客户端和服务器之间安全地传输信息。Django是一个…

Spring Boot前后端简单集成MinIo开发

Spring Boot前后端简单集成MinIo开发 源码地址重要配置和代码MinIO配置核心代码 最终效果 源码地址 minioStudy 重要配置和代码 MinIO配置 pom文件引入依赖 <!-- minio --> <dependency><groupId>io.minio</groupId><artifactId>minio</ar…

【C语言之排序】-------六大排序

作者主页&#xff1a;作者主页 数据结构专栏&#xff1a;数据结构 创作时间 &#xff1a;2024年5月18日 前言&#xff1a; 今天我们就给大家带来几种排序的讲解&#xff0c;包括冒泡排序&#xff0c;插入排序&#xff0c;希尔排序&#xff0c;选择排序&#xff0c;堆排序&…

揭秘成都跃享未来教育:安全靠谱,打造教育新未来?

在当今这个信息爆炸的时代&#xff0c;教育行业的变革日新月异&#xff0c;各种教育机构如雨后春笋般涌现。其中&#xff0c;成都跃享未来教育咨询有限公司以其独特的教育理念和创新的教学模式&#xff0c;吸引了众多家长和学生的目光。那么&#xff0c;这家公司到底安不安全&a…

湖南(广告效果测评)源点调研 广告对消费者行为的影响效果

湖南&#xff08;市场调研&#xff09;源点咨询认为&#xff1a;调查在市场中是一个万万不可忽视的环节。 产品在问世之前要认真地调查&#xff0c;广告在投放之前也要认真地调查。由于广告实质是商家和消费者沟通的一个过程&#xff0c;所以在广告投放前&#xff0c;商家就应…

数据新生态:Web3如何重新定义个人数据权利

随着数字化时代的不断深入&#xff0c;个人数据已经成为了现代社会中最宝贵的资源之一。然而&#xff0c;传统互联网时代下&#xff0c;个人数据往往被大型科技公司垄断、滥用&#xff0c;个人数据权利常常受到侵犯。而随着Web3技术的崛起&#xff0c;人们开始期待一种全新的数…

zynq固化问题

zynq固化&#xff0c;sd卡如果没有用gpio那么这个地方不能选 另外ddr型号一定要选对&#xff0c;不同的容量不一样

即时设计工具对决:Figma、Sketch与XD的优劣比较

最近几年&#xff0c;UI 设计工具出现了许多后起之秀&#xff0c;其中有四款更具代表性的UI设计软件&#xff1a;Sketch、Adobe XD、Figma 和 即时设计&#xff0c;这四个设计软件都有自己的优势。如果合作对您的UI设计过程至关重要&#xff0c;那么Figma 和 即时设计 它应该是…

React中常见的面试题

本文是结合实践中和学习技术文章总结出来的笔记(个人使用),如有雷同纯属正常((✿◠‿◠)) 喜欢的话点个赞,谢谢! 1. 约束性组件与非约束性组件 1.1. 非约束性组件 非约束性组件其实就是不能控制状态的组件,比如: <input type"text" defaultValue"123&qu…

腾讯云centos上安装docker

下面的操作是在root用户下操作的,如果非root用户在命令行前加上sudo 1. 系统及内核查看 操作系统&#xff1a;64位的CentOS 7或更新版本。内核版本&#xff1a;最低要求是3.10&#xff0c;推荐使用3.10或更高版本。 #查看内核版本 (base) [klfwjfweaVM-0-6-centos ~]$ uname…