Loading [MathJax]/jax/input/TeX/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >tengine、nginx配置正向代理,其他内网机器通过代理访问外网,支持https

tengine、nginx配置正向代理,其他内网机器通过代理访问外网,支持https

作者头像
joshua317
发布于 2022-03-29 07:04:53
发布于 2022-03-29 07:04:53
3K00
代码可运行
举报
文章被收录于专栏:技术博文技术博文
运行总次数:0
代码可运行

1.进入软件包目录

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
cd /usr/local/src

2.下载tengine

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
wget https://tengine.taobao.org/download/tengine-2.3.3.tar.gz

3.解压

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
tar zxvf tengine-2.3.3.tar.gz

4.更新升级apt-get

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
apt-get update
apt-get upgrade

5.安装依赖库

5.1 PCRE 库

PCRE(Perl Compatible Regular Expressions)是一个 Perl 库,包括 perl 兼容的正则表达式库。nginx rewrite 依赖于 PCRE 库,所以在安装 Tengine 前一定要先安装 PCRE。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
apt-get install libpcre3 libpcre3-dev
5.2 Zlib 库

Zlib 是提供资料压缩用的函数库,当 Tengine 想启用 gzip 压缩的时候就需要使用到 Zlib。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
apt-get install zlib1g-dev
5.3 OpenSSL 库

OpenSSL 是一个强大的安全套接字层密码库,囊括主要的密码算法、常用的密钥和证书封装管理功能及 SSL 协议,并提供丰富的应用程序供测试或其它目的使用。安装 OpenSSL 主要是为了让 Tengine 支持 HTTPS 的访问请求。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
apt-get install openssl libssl-dev

6.安装build-essential

解决:./configure: error: C compiler cc is not found

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
apt-get install build-essential

7.生成makefile

此处增加了proxy_connect模块,用来支持代理服务支持https的请求,从而可以实现内网机器通过代理访问外网。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
./configure --with-http_stub_status_module --with-http_ssl_module --with-http_gzip_static_module --add-module=./modules/ngx_http_proxy_connect_module

8.编译安装

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
make && make install

9.开机自启动

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
vi /lib/systemd/system/nginx.service
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Description=nginx - high performance web server
After=network.target remote-fs.target nss-lookup.target
[Service]
Type=forking
ExecStart=/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
ExecReload=/usr/local/nginx/sbin/nginx -s reload
ExecStop=/usr/local/nginx/sbin/nginx -s stop
[Install]
WantedBy=multi-user.target

10.使配置生效

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
systemctl daemon-reload

注意可能会产生下面的错误

错误:System has not been booted with systemd as init system (PID 1). Can‘t operate. 原因:如果是一般的Linux操作系统,可能是因为Linux中没有使用systemd,想用systemd命令来管理Linux上的服务,因此会报错,很可能是使用的是经典的SysV init(sysvinit)系统。 但我这个是window10下WSL的Ubuntu,就会使SysV init而不是systemd。 解决:apt install systemctl

11.设置开机启动

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
systemctl enable nginx.service

12、运行tengine

1)启动

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
/usr/local/nginx/sbin/nginx
或者
systemctl start nginx.service

2)重启

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
/usr/local/nginx/sbin/nginx -s reload
或者
systemctl reload nginx.service

3)停止

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
/usr/local/nginx/sbin/nginx -s stop
或者
systemctl stop nginx.service

13.是否启动成功,默认80端口,访问地址:http://ip:port/

14.配置nginx

参考文档:https://tengine.taobao.org/document_cn/proxy_connect_cn.html

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
server {
	    listen 3182;

	    # dns resolver used by forward proxying
	    resolver  114.114.114.114;

	    # forward proxy for CONNECT request
	    proxy_connect;
	    proxy_connect_allow            443 563;
	    proxy_connect_connect_timeout  10s;
	    proxy_connect_read_timeout     10s;
	    proxy_connect_send_timeout     10s;

	    # forward proxy for non-CONNECT request
	    location / {
		  proxy_pass $scheme://$http_host$request_uri;
		  proxy_set_header Host $host;
	    }
    }

15 重启nginx

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#校验nginx.conf配置文件
/usr/local/nginx/sbin/nginx -t
#校验通过,重启nginx
/usr/local/nginx/sbin/nginx -s reload

16.测试

通过代理访问git

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
curl https://www.baidu.com/ -v -x 127.0.0.1:3182
curl -i  --proxy 127.0.0.1:3182 www.baidu.com

17.内网机器通过代理访问到外网服务

17.1 windows系统下

打开IE浏览器,在IE设置中添加代理访问,工具-》Internet设置-》连接--》局域网(LAN)设置

设置完,打开浏览器进行测试即可。可以通过nginx的访问日志进行查看。

17.2 linux系统下

在内网的机器上进行操作:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
vi /etc/profile
#export http_proxy=正向代理服务器http的IP:端口
export http_proxy=192.168.3.114:3182

#export https_proxy=正向代理服务器https的IP:端口
export https_proxy=192.168.3.114:3182


#保存文件后重新加载环境
source /etc/profile

其中192.168.3.114是安装nginx代理服务器的ip。3182是代理服务的端口号。

测试:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
curl -i www.baidu.com
#如果未加环境变量代理设置,则可以通过临时代理访问
curl -i --proxy 192.168.3.114:3182  www.baidu.com

18.扩展

18.1 Nginx Http Proxy 代理服务器,本身是不支持代理 Https 网站。

因为 Nginx 不支持 CONNECT,所以无法正向代理 Https 网站。 如果访问 Https 网站,比如:https://www.baidu.com,Nginx access.log 日志如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
"CONNECT www.baidu.com:443 HTTP/1.1" 400

所以想要代理Https 网站,需要让nginx支持 CONNECT模式,即增加ngx_http_proxy_connect_module模块。

18.2 ngx_http_proxy_connect_module的文档

ngx_http_proxy_connect_module模块主要用于隧道SSL请求的代理服务器。

文档地址:https://github.com/chobits/ngx_http_proxy_connect_module#proxy_connect

本文为joshua317原创文章,转载请注明:转载自joshua317博客 https://www.joshua317.com/article/250

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-03-02 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Nginx正向代理
记一次使用Nginx做正向代理,实现http与https的代理访问 1.环境介绍 操作系统:CentOS Linux release 7.6.1810 (Core) Nginx编译安装,版本-nginx/1.18.0 服务器A部署在DMZ区域且可上网,服务器B不可上网,但是和服务器A能够通信 在服务器A上部署Nginx正向代理,使服务器B通过服务器A正向代理功能可访问http和https Nginx默认不支持https的正向代理,这里需要安装第三方模块“ngx_http_proxy_connect_modu
染指流年
2023/03/13
1K0
Nginx专辑|05 -如何使用Nginx配置正向代理
在之前的编译nginx的基础上,我们对nginx二进制增加新的模块ngx_http_proxy_connect_module[1]
公众号: 云原生生态圈
2020/08/04
3.1K0
Nginx专辑|05 -如何使用Nginx配置正向代理
Nginx 正向代理 http、https(openEuler)
Nginx正向代理,通过服务器代理客户端去重定向请求访问到目标服务器的一种代理服务。对于目标服务器来说浏览器/客户端是隐藏的。Nginx 正向代理默认只支持http 协议,不支持 https 协议,需借助"ngx_http_proxy_connect_module"模块实现https 正向代理。
Kevin song
2024/03/21
3.3K0
Nginx 正向代理 http、https(openEuler)
nginx--❤️图解及代码实现正向代理、反向代理、负载均衡❤️
在实现nginx正向代理之前,先说明一下,现在的网站基本上都是https,因此要实现nginx正向代理转发请求,除了要配置转发http80端口的请求,还有配置https443端口的请求~
用户4396583
2024/07/25
1.5K0
安装搭建Nginx正向代理
准备文件(ng在官网,补丁包在github上搜的到): nginx-1.22.0.tar.gz #nginx包 ngx_http_proxy_connect_module-master.zip #代理补丁包
Diuut
2022/11/22
1.4K0
【Linux】使用 Nginx 搭建正向代理
Nginx 是一款轻量级的 Web 服务器软件,以其高性能、低内存占用和高并发处理能力而闻名。Nginx 可以充当正向代理、反向代理、负载均衡器等多种角色,能够处理大量的并发连接而不占用过多的系统资源。
行者Sun
2025/06/17
1760
【Linux】使用 Nginx 搭建正向代理
Nginx从入门到放弃04-反向代理、正向代理、负载均衡
通过前面几篇的文章,我们知道nginx最主要的功能之一可以做负载均衡器、正向代理和反向代理,今天我们就来学习如何利用nginx配置
星哥玩云
2022/06/24
1.2K0
Nginx从入门到放弃04-反向代理、正向代理、负载均衡
不看会后悔的nginx代理操作
通过nginx做反向代理相信大家都耳熟能详了,但是使用nginx做正向代理你玩过吗?
一个程序猿的异常
2023/07/24
4200
不看会后悔的nginx代理操作
轻量应用服务器编译安装Tengine并设置开机启动
Tengine是Web服务器项目。它在Nginx的基础上,针对大访问量网站的需求,添加了很多高级功能和特性。Tengine的性能和稳定性已经在大型的网站得到了很好的检验。它的最终目标是打造一个高效、稳定、安全、易用的Web平台。
幻影龙王
2021/10/17
1.3K0
ubuntu20.04部署nginx正向代理服务
由于默认的nginx发布版本不支持正向代理功能,需要借助ngx_http_proxy_connect_module这个三方插件来完成,具体步骤如下
johnhuster的分享
2022/03/28
1.4K0
CentOS7下使用nginx实现TCP和UDP代理
nginx从1.9.0版本开始,新增了ngx_stream_core_module模块,使nginx支持四层负载均衡,实现TCP和UDP代理。默认编译的时候该模块并未编译进去,需要编译的时候添加--with-stream,使其支持stream代理
yuanfan2012
2020/05/18
10.1K0
CentOS7下使用nginx实现TCP和UDP代理
CentOS安装配置Nginx
openssl-devel:为Nginx模块如ssl提供密码算法,证书以及ssl协议等功能。
用户4396583
2024/07/23
2K0
Nginx配置自签证书强制跳转Https
Nginx 是世界上最受欢迎的 Web 服务器之一,负责托管互联网上一些最大和流量最高的站点。 这是一个轻量级的选择,可以用作 Web 服务器或反向代理。在公司内部,像Zabbix、ELK都可以通过Nginx实现Web端的管理。接下来,我将在 Ubuntu 20.04 服务器上安装 Nginx,创建自签名证书,设定访问https跳转,保障内网客户端浏览器与Web服务器之间的通讯安全。
冬夜读书示子聿
2022/01/09
1K0
推荐一个部署和卸载nginx的shell脚本
如果大家有需要帮忙推荐的工具、框架、应用、脚本可以在文章下方留言,留言中被点赞、推荐回复较多的,波哥就会帮各位提前安排哦!
IT运维技术圈
2024/11/27
1680
推荐一个部署和卸载nginx的shell脚本
每个Linux用户必须知道的10个最常用的Nginx命令
Nginx(发音为Engine x)是一个免费的,开源的,高性能,可扩展,可靠,功能齐全且流行的HTTP和反向代理服务器,邮件代理服务器和通用TCP/UDP代理服务器。
星哥玩云
2022/07/26
9720
每个Linux用户必须知道的10个最常用的Nginx命令
(一)Centos7下 Tengine安装和配置
Tengine是由淘宝网发起的Web服务器项目。它在Nginx的基础上,针对大访问量网站的需求,添加了很多高级功能和特性。Tengine的性能和稳定性已经在大型的网站如淘宝网,天猫商城等得到了很好的检验。它的最终目标是打造一个高效、稳定、安全、易用的Web平台。
botkenni
2019/09/02
2.8K0
(一)Centos7下 Tengine安装和配置
☀️全网唯一万字长文讲解Nginx安装运营维护☀️《❤️记得收藏❤️》
Nginx 是一款面向性能设计的 HTTP 服务器,能反向代理 HTTP,HTTPS 和邮件相关(SMTP,POP3,IMAP)的协议链接。并且提供了负载均衡以及 HTTP 缓存。它的设计充分使用异步事件模型,削减上下文调度的开销,提高服务器并发能力。采用了模块化设计,提供了丰富模块的第三方模块。
苏州程序大白
2021/08/23
1.9K0
☀️全网唯一万字长文讲解Nginx安装运营维护☀️《❤️记得收藏❤️》
憧憬博客Nginx到Tengine的迁移
Tengine 是由淘宝网发起的 Web 服务器项目。它在 Nginx 的基础上,针对大访问量网站的需求,添加了很多高级功能和特性。据说 Tengine 的 IO 性能比 Nginx 提升了几十倍、淘宝流量高峰全靠 Tengine 应对。 一直在网上听说 Tengine 优秀的性能,淘宝自家都使用的 web server,其稳定性和性能已经在淘宝网,天猫商城等得到了很好的检验。这个时候博主好奇心就来了,非得把博客的 Nginx 迁移到 Tengine 不可,小小体验一下 Tengine。
憧憬博客
2020/07/21
8460
Nginx | Nginx的介绍和安装
Nginx 是互联网主流的高性能 http 和 反响代理 Web 服务器,Nginx 不但可以作为 Web 服务器,它还提供了静态资源服务、缓存、负载均衡 等功能。
码农UP2U
2020/08/26
7300
基于CentOS 7配置Nginx正向代理
Nginx是一款以轻量级、低内存开销、支持缓存、支持反向代理,负载均衡,电子邮件服务而著称。对于鲜为人知的是,它还可以作为一个简单易用的正向代理服务器。
院长技术
2021/01/08
9660
相关推荐
Nginx正向代理
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验