nginx正向代理的配置和使用
nginx正向代理的配置和使用
nginx正向代理的配置和使用
- nginx正向代理的配置和使用
- 安装包准备
- 下载nginx安装包
- 下载正向代理模块的包
- 版本与模块对照表
- 部署nginx服务
- 上传nginx包和正向模块包
- 解压,改名
- 安装nginx
- 配置正向代理
- 创建nginx用户
- 检查nginx配置并启动
- nginx服务所在服务器验证正向代理功能
- 配置不能访问外网的服务器(即内网服务器),使其可以访问外网
- liunx服务器配置
- 1.只配置使用yum时,能够使用正向代理访问外网
- 2.只配置使用wget时,能够使用正向代理访问外网
- 3.全局配置,所以访问请求都能够使用正向代理访问外网
- windows服务器配置
- 验证不能访问外网的服务器(即内网服务器),使用代理上网
nginx正向代理http,nginx正向代理https
-
正向代理,指的是通过代理服务器 代理浏览器/客户端去重定向请求访问到目标服务器 的一种代理服务。正向代理服务的特点是代理服务器 代理的对象是浏览器/客户端,也就是对于目标服务器 来说浏览器/客户端是隐藏的。
-
nginx默认支持正向代理http,不支持https
-
nginx官方并不支持直接转发https请求,nginx支持https需要ngx_http_proxy_connect_module模块。github上开源了模块 https://github.com/chobits/ngx_http_proxy_connect_module。不过维护的ngx_http_proxy_connect_module模块的补丁也是有nginx版本限制的,需根据自身使用的nginx版本选择相应的正向代理模块。可以在REDEME.md的Select patch中查看nginx版本和模块的对应关系
安装包准备
下载nginx安装包
下载地址

下载正向代理模块的包
下载地址

版本与模块对照表

部署nginx服务
- 此处使用的是nginx-1.20.2,对应proxy_connect_rewrite_1018.patch
上传nginx包和正向模块包
[root@mysql nginx]# ll-rw-r--r-- 1 root root 1062124 Feb 12 15:23 nginx-1.20.2.tar.gz
-rw-r--r-- 1 root root 57926 Feb 12 15:23 ngx_http_proxy_connect_module-master.zip
解压,改名
tar -zcf /root/nginx.tar.gz
unzip ngx_http_proxy_connect_module-master.zipll
drwxr-xr-x 9 1001 1001 4096 Feb 12 15:27 nginx-1.20.2
-rw-r--r-- 1 root root 1062124 Feb 12 15:23 nginx-1.20.2.tar.gz
drwxr-xr-x 5 root root 4096 Feb 9 16:54 ngx_http_proxy_connect_module-master
-rw-r--r-- 1 root root 57926 Feb 12 15:23 ngx_http_proxy_connect_module-master.zipmv ngx_http_proxy_connect_module-master ngx_http_proxy_connect_modulell
drwxr-xr-x 9 1001 1001 4096 Feb 12 15:27 nginx-1.20.2
-rw-r--r-- 1 root root 1062124 Feb 12 15:23 nginx-1.20.2.tar.gz
drwxr-xr-x 5 root root 4096 Feb 9 16:54 ngx_http_proxy_connect_module
-rw-r--r-- 1 root root 57926 Feb 12 15:23 ngx_http_proxy_connect_module-master.zip
安装nginx
yum -y install make gcc openssl openssl-devel pcre-devel zlib zlib-develcd nginx-1.20.2ll
drwxr-xr-x 6 1001 1001 4096 Feb 12 15:20 auto
-rw-r--r-- 1 1001 1001 312251 Nov 16 2021 CHANGES
-rw-r--r-- 1 1001 1001 476577 Nov 16 2021 CHANGES.ru
drwxr-xr-x 2 1001 1001 4096 Feb 12 15:20 conf
-rwxr-xr-x 1 1001 1001 2590 Nov 16 2021 configure
drwxr-xr-x 4 1001 1001 4096 Feb 12 15:20 contrib
drwxr-xr-x 2 1001 1001 4096 Feb 12 15:20 html
-rw-r--r-- 1 1001 1001 1397 Nov 16 2021 LICENSE
drwxr-xr-x 2 1001 1001 4096 Feb 12 15:20 man
-rw-r--r-- 1 1001 1001 49 Nov 16 2021 README
drwxr-xr-x 9 1001 1001 4096 Feb 12 15:20 src# 查看正向代理模块proxy_connect_rewrite_1018.patch的位置
ll ../ngx_http_proxy_connect_module/patch/
-rw-r--r-- 1 root root 9849 Feb 9 16:54 proxy_connect_1014.patch
-rw-r--r-- 1 root root 9697 Feb 9 16:54 proxy_connect.patch
-rw-r--r-- 1 root root 9408 Feb 9 16:54 proxy_connect_rewrite_1014.patch
-rw-r--r-- 1 root root 9505 Feb 9 16:54 proxy_connect_rewrite_101504.patch
-rw-r--r-- 1 root root 9496 Feb 9 16:54 proxy_connect_rewrite_1015.patch
-rw-r--r-- 1 root root 9553 Feb 9 16:54 proxy_connect_rewrite_1018.patch
-rw-r--r-- 1 root root 9306 Feb 9 16:54 proxy_connect_rewrite_102101.patch
-rw-r--r-- 1 root root 9337 Feb 9 16:54 proxy_connect_rewrite.patch# 导入模块 后面为模块路径
patch -p1 < /nginx/ngx_http_proxy_connect_module/patch/proxy_connect_rewrite_1018.patch# 编译
./configure --add-module=/nginx/ngx_http_proxy_connect_module# 安装,默认安装在/usr/local/nginx/
make && make install# 查看nginx
ll /usr/local/nginx/
drwx------ 2 nobody root 4096 Feb 12 15:47 client_body_temp
drwxr-xr-x 2 root root 4096 Feb 12 15:46 conf
drwx------ 2 nobody root 4096 Feb 12 15:47 fastcgi_temp
drwxr-xr-x 2 root root 4096 Feb 12 15:28 html
drwxr-xr-x 2 root root 4096 Feb 12 15:47 logs
drwx------ 2 nobody root 4096 Feb 12 15:47 proxy_temp
drwxr-xr-x 2 root root 4096 Feb 12 15:33 sbin
drwx------ 2 nobody root 4096 Feb 12 15:47 scgi_temp
drwx------ 2 nobody root 4096 Feb 12 15:47 uwsgi_temp
配置正向代理
cd /usr/local/nginx/#gzip on;下添加
vim conf/nginx.conf#gzip on;#正向代理转发http请求server {#指定DNS服务器IP地址resolver 114.114.114.114;#监听80端口,http默认端口80listen 80;#服务器IP或域名server_name localhost;#正向代理转发http请求location / {proxy_pass http://$host$request_uri;proxy_set_header HOST $host;proxy_buffers 256 4k;proxy_max_temp_file_size 0k;proxy_connect_timeout 30;proxy_send_timeout 60;proxy_read_timeout 60;proxy_next_upstream error timeout invalid_header http_502;}}#正向代理转发https请求server {#指定DNS服务器IP地址resolver 114.114.114.114;#监听443端口,https默认端口443listen 443;#正向代理转发https请求proxy_connect;proxy_connect_allow 443 563;proxy_connect_connect_timeout 10s;proxy_connect_read_timeout 10s;proxy_connect_send_timeout 10s;location / {proxy_pass http://$host;proxy_set_header Host $host;}}
创建nginx用户
- nginx服务以用户nginx身份启动
useradd nginx
检查nginx配置并启动
sbin/nginx -t
sbin/nginx
ss -utnlp | grep nginx
tcp LISTEN 0 511 *:443 *:* users:(("nginx",pid=6645,fd=7),("nginx",pid=6644,fd=7))
tcp LISTEN 0 511 *:80 *:* users:(("nginx",pid=6645,fd=6),("nginx",pid=6644,fd=6))
nginx服务所在服务器验证正向代理功能
curl -I http://www.baidu.com/ -v -x 127.0.0.1:80curl -I https://www.baidu.com/ -v -x 127.0.0.1:443
curl -I http://www.baidu.com/ -v -x 127.0.0.1:80
* About to connect() to proxy 127.0.0.1 port 80 (#0)
* Trying 127.0.0.1...
* Connected to 127.0.0.1 (127.0.0.1) port 80 (#0)
> HEAD http://www.baidu.com/ HTTP/1.1
> User-Agent: curl/7.29.0
> Host: www.baidu.com
> Accept: */*
> Proxy-Connection: Keep-Alive
>
< HTTP/1.1 200 OK
HTTP/1.1 200 OK
< Server: nginx/1.20.2
Server: nginx/1.20.2
< Date: Sun, 12 Feb 2023 09:03:40 GMT
Date: Sun, 12 Feb 2023 09:03:40 GMT
< Content-Type: text/html
Content-Type: text/html
< Content-Length: 277
Content-Length: 277
< Connection: keep-alive
Connection: keep-alive
< Accept-Ranges: bytes
Accept-Ranges: bytes
< Cache-Control: private, no-cache, no-store, proxy-revalidate, no-transform
Cache-Control: private, no-cache, no-store, proxy-revalidate, no-transform
< Etag: "575e1f60-115"
Etag: "575e1f60-115"
< Last-Modified: Mon, 13 Jun 2016 02:50:08 GMT
Last-Modified: Mon, 13 Jun 2016 02:50:08 GMT
< Pragma: no-cache
Pragma: no-cache<
* Connection #0 to host 127.0.0.1 left intact
curl -I https://www.baidu.com/ -v -x 127.0.0.1:443
* About to connect() to proxy 127.0.0.1 port 443 (#0)
* Trying 127.0.0.1...
* Connected to 127.0.0.1 (127.0.0.1) port 443 (#0)
* Establish HTTP proxy tunnel to www.baidu.com:443
> CONNECT www.baidu.com:443 HTTP/1.1
> Host: www.baidu.com:443
> User-Agent: curl/7.29.0
> Proxy-Connection: Keep-Alive
>
< HTTP/1.1 200 Connection Established
HTTP/1.1 200 Connection Established
< Proxy-agent: nginx
Proxy-agent: nginx
<* Proxy replied OK to CONNECT request
* Initializing NSS with certpath: sql:/etc/pki/nssdb
* CAfile: /etc/pki/tls/certs/ca-bundle.crtCApath: none
* SSL connection using TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
* Server certificate:
* subject: CN=baidu.com,O="Beijing Baidu Netcom Science Technology Co., Ltd",OU=service operation department,L=beijing,ST=beijing,C=CN
* start date: Jul 05 05:16:02 2022 GMT
* expire date: Aug 06 05:16:01 2023 GMT
* common name: baidu.com
* issuer: CN=GlobalSign RSA OV SSL CA 2018,O=GlobalSign nv-sa,C=BE
> HEAD / HTTP/1.1
> User-Agent: curl/7.29.0
> Host: www.baidu.com
> Accept: */*
>
< HTTP/1.1 200 OK
HTTP/1.1 200 OK
< Accept-Ranges: bytes
Accept-Ranges: bytes
< Cache-Control: private, no-cache, no-store, proxy-revalidate, no-transform
Cache-Control: private, no-cache, no-store, proxy-revalidate, no-transform
< Connection: keep-alive
Connection: keep-alive
< Content-Length: 277
Content-Length: 277
< Content-Type: text/html
Content-Type: text/html
< Date: Sun, 12 Feb 2023 09:03:40 GMT
Date: Sun, 12 Feb 2023 09:03:40 GMT
< Etag: "575e1f60-115"
Etag: "575e1f60-115"
< Last-Modified: Mon, 13 Jun 2016 02:50:08 GMT
Last-Modified: Mon, 13 Jun 2016 02:50:08 GMT
< Pragma: no-cache
Pragma: no-cache
< Server: bfe/1.0.8.18
Server: bfe/1.0.8.18<
* Connection #0 to host 127.0.0.1 left intact
配置不能访问外网的服务器(即内网服务器),使其可以访问外网
liunx服务器配置
1.只配置使用yum时,能够使用正向代理访问外网
#追加配置
vim /etc/yum.conf
proxy=http://192.168.0.20:80 #nginx正向代理服务器的地址
proxy=ftp://192.168.0.20:80 #nginx正向代理服务器的地址
2.只配置使用wget时,能够使用正向代理访问外网
#追加配置
vim /etc/wgetrc
http_proxy=192.168.0.20:80 #nginx正向代理服务器的地址
http_proxy=192.168.0.20:443 #nginx正向代理服务器的地址
3.全局配置,所以访问请求都能够使用正向代理访问外网
#追加配置
vim /etc/profile
http_proxy=192.168.0.20:80
https_proxy=192.168.0.20:443
ftp_proxy=192.168.0.20:443export http_proxy
export https_proxy
export ftp_proxy# 加载配置
source /etc/profile
windows服务器配置

验证不能访问外网的服务器(即内网服务器),使用代理上网
curl -I http://www.baidu.com
curl -I https://www.baidu.com
curl -I http://www.baidu.com
HTTP/1.1 200 OK
Server: nginx/1.20.2
Date: Sun, 12 Feb 2023 09:31:03 GMT
Content-Type: text/html
Content-Length: 277
Connection: keep-alive
Accept-Ranges: bytes
Cache-Control: private, no-cache, no-store, proxy-revalidate, no-transform
Etag: "575e1f60-115"
Last-Modified: Mon, 13 Jun 2016 02:50:08 GMT
Pragma: no-cache
curl -I https://www.baidu.com
HTTP/1.1 200 Connection Established
Proxy-agent: nginxHTTP/1.1 200 OK
Accept-Ranges: bytes
Cache-Control: private, no-cache, no-store, proxy-revalidate, no-transform
Connection: keep-alive
Content-Length: 277
Content-Type: text/html
Date: Sun, 12 Feb 2023 09:31:07 GMT
Etag: "575e1f60-115"
Last-Modified: Mon, 13 Jun 2016 02:50:08 GMT
Pragma: no-cache
Server: bfe/1.0.8.18
相关文章:
nginx正向代理的配置和使用
nginx正向代理的配置和使用 nginx正向代理的配置和使用nginx正向代理的配置和使用安装包准备下载nginx安装包下载正向代理模块的包版本与模块对照表部署nginx服务上传nginx包和正向模块包解压,改名安装nginx配置正向代理创建nginx用户检查nginx配置并启动nginx服务所在服务器验…...
Oracle Trace File Analyzer 介绍及简单使用
一、什么是Oracle Trace File Analyzer Oracle Autonomous Health Framework(AHF) 包含 Oracle ORAchk, Oracle EXAchk, and Oracle Trace File Analyzer(TFA). AHF工具包包含了Oracle常用的多种诊断工具,如 ORAchk, Oracle EXAchk, and Oracle Trace File Analyzer…...
面试实战篇 | 快手本地生活,结合项目谈Redis实战项目场景?MySQL InnoDB存储引擎如何工作的?策略模式?
本期是【你好,面试官】系列文章的第21期,持续更新中…。 《你好,面试官》系列目前已经连载20篇了,据说看了这个系列的朋友都拿到了大厂offer~ 你好,面试官 | 你真的理解面向 “对象”?你好,面…...
Hadoop之——WordCount案例与执行本地jar包
目录 一、WordCount代码 (一)WordCount简介 1.wordcount.txt (二)WordCount的java代码 1.WordCountMapper 2.WordCountReduce 3.WordCountDriver (三)IDEA运行结果 (四)Hadoop运行wordcount 1.在HDFS上新建一个文件目录 2.新建一个文件,并上传至该目录下…...
利用git reflog 命令来查看历史提交记录,并使用提交记录恢复已经被删除掉的分支
一.问题描述 当我们在操作中手误删除了某个分支,那该分支中提交的内容也没有了,我们可以利用git reflog这个命令来查看历史提交的记录从而恢复被删除的分支和提交的内容 二.模拟问题 1.创建git仓库,并提交一个文件 [rootcentos7-temp /da…...
【软件测试】大厂测试开发你真的了解吗?测试开发养成记......
目录:导读前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜)前言 在一些大公司里&…...
Redis中的hash结构和扩容机制
1.rehash原理 hash包含两个数据结构为字典数组ht[0]和ht[1]。其中ht[0]用来存放数据,ht[1]在rehash时使用。 扩容时,ht[1]的大小为第一个大于等于ht[0].used*2的2的幂次方的数; 收缩时,ht[1]的大小为第一个大于等于ht[0].used的…...
【C++奇技淫巧】前置自增与后置自增的区别(++i,i++)【2023.02.08】
简介 先说i和i的区别,判断语句中if(i)是拿i的值先判断,而后自增;if(i)是先自增i再进行判断。涉及到左值与右值也有点区别,i返回的是右值,i返回的是左值。也就是下面的代码要解释的东西。 #include <iostream>i…...
实战打靶集锦-005-HL
**写在前面:**记录一次曲折的打靶经历。 目录1. 主机发现2. 端口扫描3. 服务枚举4. 服务探查4.1 浏览器访问4.2 目录枚举4.3 探查admin4.4 探查index4.5 探查login5 公共EXP搜索6. 再次目录枚举6.1 探查superadmin.php6.2 查看页面源代码6.3 base64绕过6.4 构建反弹…...
铁路系统各专业介绍(车机工电辆)
目录 1 车务段 1.1 职能简介 1.2 路段名单 1.3 岗位级别 2 机务段 2.1 职能简介 2.2 路段名单 2.3 岗位级别 3 工务段 3.1 职能简介 3.2 路段名单 3.3 岗位级别 4 电务段 4.1 职能简介 4.2 路段名单 4.3 岗位级别 5 车辆段 5.1 职能简介 5.2 路段名单 5.3 …...
2/11考试总结
时间安排 7:30–7:50 读题,T1貌似是个 dp ,T2 数据结构,T3 可能是数据结构。 7:50–9:45 T1,点规模非常大,可以达到 1e18 级别,感觉应该没法直接做,考虑每条新增的边的贡献,想到用 …...
Java Set集合
7 Set集合 7.1 Set集合的概述和特点 Set集合的特点 不包含重复元素的集合没有带索引的方法,所以不能使用普通for循环 Set集合是接口通过实现类实例化(多态的形式) HashSet:添加的元素是无序,不重复,无索引…...
【手写 Vuex 源码】第七篇 - Vuex 的模块安装
一,前言 上一篇,主要介绍了 Vuex 模块收集的实现,主要涉及以下几个点: Vuex 模块的概念;Vuex 模块和命名空间的使用;Vuex 模块收集的实现-构建“模块树”; 本篇,继续介绍 Vuex 模…...
EOC第六章《块与中枢派发》
文章目录第37条:理解block这一概念第38条:为常用的块类型创建typedef第39条:用handler块降低代码分散程度第41条:多用派发队列,少用同步锁方案一:使用串行同步队列来将读写操作都安排到同一个队列里&#x…...
八、Git远程仓库操作——跨团队成员的协作
前言 前面一篇博文介绍了git团队成员之间的协作,现在在介绍下如果是跨团队成员的话,如何协作? 跨团队成员协作,其实就是你不属于那个项目的成员,你没有权限向那个仓库提交代码。但是github还有另一种 pull request&a…...
算法刷题打卡第88天:字母板上的路径
字母板上的路径 难度:中等 我们从一块字母板上的位置 (0, 0) 出发,该坐标对应的字符为 board[0][0]。 在本题里,字母板为board ["abcde", "fghij", "klmno", "pqrst", "uvwxy", "…...
UVa The Morning after Halloween 万圣节后的早晨 双向BFS
题目链接:The Morning after Halloween 题目描述: 给定一个二维矩阵,图中有障碍物和字母,你需要把小写字母移动到对应的大写字母位置,不同的小写字母可以同时移动(上下左右四个方向或者保持不动 ࿰…...
Connext DDS属性配置参考大全(3)
Transport传输dds.participant.logging.time_based_logging.process_received_messagedds.participant.logging.time_based_logging.process_received_message.timeout...
Docker-安装Jenkins-使用jenkins发版Java项目
文章目录0.前言环境背景1.操作流程1.1前期准备工作1.1.1环境变量的配置1.2使用流水线的方式进行发版1.2.1新建流水线任务1.2.2流水线操作工具tools步骤stages步骤1:拉取代码编译步骤2:发送文件并启动0.前言 学海无涯,旅“途”漫漫,“途”中小记ÿ…...
spring 中的 Bean 是否线程安全
文章目录结论1、spring中的Bean从哪里来?2、spring中什么样的Bean存在线程安全问题?3、如何处理spring Bean的线程安全问题?结论 其实,Spring 中的 Bean 是否线程安全,其实跟 Spring 容器本身无关。Spring框架中没有提…...
RVC模型计算机组成原理视角:理解AI推理的硬件底层
RVC模型计算机组成原理视角:理解AI推理的硬件底层 你是不是觉得AI模型推理就像一个黑盒子?输入一段音频,点一下按钮,等一会儿,就得到了变声后的结果。整个过程看似简单,但背后却是一场在GPU硬件上精密上演…...
面向开发者的Qwen3-32B实战:Clawdbot平台集成Python SDK调用与流式响应处理
面向开发者的Qwen3-32B实战:Clawdbot平台集成Python SDK调用与流式响应处理 重要提示:本文基于企业内部部署环境,所有技术方案和代码示例均适用于私有化部署场景。实际部署时请根据您的网络环境和安全要求进行调整。 1. 项目背景与价值 在企…...
为什么你的AI服务OOM频发?Python智能体内存管理5个致命配置错误,今天必须修复
第一章:AI服务OOM频发的底层归因与诊断路径AI服务在高并发推理或大模型微调场景下频繁触发OOM(Out-of-Memory),表面是内存耗尽,实则根植于资源抽象层与运行时协同机制的结构性失配。现代AI框架(如PyTorch、…...
OpenClaw插件开发入门:为Qwen3-32B镜像编写天气查询技能
OpenClaw插件开发入门:为Qwen3-32B镜像编写天气查询技能 1. 为什么需要自定义技能? 去年冬天,我经常需要同时查看多个城市的天气来规划差旅行程。每次手动打开天气网站、输入城市名、对比数据的过程让我不胜其烦。直到我发现OpenClaw可以通…...
OpenClaw问题诊断:Qwen3.5-4B-Claude模型执行失败常见原因分析
OpenClaw问题诊断:Qwen3.5-4B-Claude模型执行失败常见原因分析 1. 问题背景与诊断思路 上周在尝试用OpenClaw自动化处理技术文档时,遇到了模型执行中断的问题。当时任务卡在"分析Markdown文档结构"环节,控制台只留下一行模糊的错…...
OpenClaw团队协作版:ollama-QwQ-32B支持多用户任务隔离实践
OpenClaw团队协作版:ollama-QwQ-32B支持多用户任务隔离实践 1. 为什么我们需要团队协作版的OpenClaw 去年我带领一个5人内容团队时,遇到了一个典型问题:每个人都想用AI自动化处理日常工作,但共享同一套系统会导致文件混乱、任务…...
零基础玩转OpenClaw:星图平台百川2-13B镜像+自动化初体验
零基础玩转OpenClaw:星图平台百川2-13B镜像自动化初体验 1. 为什么选择星图平台OpenClaw组合 作为一个长期被本地环境配置折磨的技术爱好者,当我第一次听说星图平台提供预装OpenClaw和百川2-13B模型的"开箱即用"镜像时,内心是充满…...
ChatTTS 语音合成中如何高效添加语气词:原理与实战指南
最近在做一个语音播报项目,用到了ChatTTS,发现生成的语音虽然清晰,但总感觉少了点“人味儿”。特别是那些“嗯”、“啊”、“哦”之类的语气词,插进去之后特别生硬,像机器人在念稿,用户体验大打折扣。这让我…...
模型轻量化前沿:OpenClaw集成百川2-13B-4bits量化版的技术解析
模型轻量化前沿:OpenClaw集成百川2-13B-4bits量化版的技术解析 1. 为什么我们需要量化模型? 当我第一次尝试在本地部署百川2-13B模型时,16GB显存的显卡直接被"撑爆"。这让我意识到,想要在消费级硬件上运行大模型&…...
全国多地设备售后如何统筹?“售后管理系统”一键打通地域壁垒
摘要:对于布局全国市场的机电企业而言,售后网点是服务落地的核心载体,但当前多数企业的全国售后网点普遍存在“各自为政”的困境——区域壁垒突出、资源互不互通、工单分配失衡,导致部分网点忙闲不均、资源浪费严重,同时影响售后响应效率与服务标准化水平,制约企业售后质…...
