server {
listen 3300;
resolver 114.114.114.114 ipv6=off;
proxy_connect;
proxy_connect_allow 443 563;
proxy_connect_connect_timeout 30s;
proxy_connect_read_timeout 30s;
proxy_connect_send_timeout 30s;
location / {
proxy_pass http://$host;
proxy_set_header Host $host;
通过上配置,可以通过HTTP连接隧道获得任何https网站。
下面可以本地通过命令 curl进行简单测试
curl https://www.sina.com/-v -x 127.0.0.1:3300
也可以将浏览器配置为将这里 Nginx 用作代理服务器 ( 比如 Google Chrome HTTP代理设置)
Nginx 版本启用重写阶段补丁
1.4.x ~ 1.12.x 不是 proxy_connect.patch
1.4.x ~ 1.12.x 是的 proxy_connect_rewrite.patch
1.13.x ~ 1.14.x 不是 proxy_connect_1014.patch
1.13.x ~ 1.14.x 是的 proxy_connect_rewrite_1014.patch
proxy_connect.patch 包含宏NGX_HTTP_RPOXY_CONNECT中的逻辑,而配置脚本将自动启用这里宏。
默认情况下,MODULE 禁用连接请求的Nginx 重写阶段,这意味着不能使用 if。set。rewrite_by_lua 和其他重写阶段指令。 要启用这些功能,你应该使用 proxy_connect_rewrite.patch 而不是 proxy_connect.patch。
Nginx安装方法
$ wget http://nginx.org/download/nginx-1.15.0.tar.gz
$ tar -xzvf nginx-1.15.0.tar.gz
$ cd nginx-1.15.0/
$ patch -p1 < /path/to/ngx_http_proxy_connect_module/patch/proxy_connect.patch
$ ./configure --add-module=/path/to/ngx_http_proxy_connect_module
$ make && make install
OpenResty安装方法
$ wget https://openresty.org/download/openresty-1.13.6.2.tar.gz
$ tar -zxvf openresty-1.13.6.2.tar.gz
$ cd openresty-1.13.6.2
$ ./configure --add-module=/path/to/ngx_http_proxy_connect_module
$ patch -d build/nginx-1.13.6/ -p 1 < /path/to/ngx_http_proxy_connect_module/patch/proxy_connect_rewrite_1014.patch
$ make && make install
proxy_connect
语法:proxy_connect
默认值:none
上下文:server
启用"连接"http方法支持。
proxy_connect_allow
语法: proxy_connect_allowall | [port.. .] | [port-range.. .]
默认值:443 563
上下文:server
这里指令指定代理连接方法可以连接的端口号或者范围的列表。
默认情况下,只启用默认的https端口( 443 ) 和默认的snews端口( 563 )。
使用这里指令将覆盖这里默认值,并允许仅连接到所列端口。
值 all 将允许所有端口代理。
值 port 将允许指定的端口代理。
port-range 将允许指定的端口范围进行代理,例如:
proxy_connect_allow 1000-2000 3000-4000; # allow range of port from 1000 to 2000, from 3000 to 4000.
proxy_connect_connect_timeout
语法:proxy_connect_connect_timeout time
默认值:none
上下文:server
定义与已经代理服务器建立连接的超时时间。
proxy_connect_read_timeout
语法:proxy_connect_read_timeout time
默认值:60s
上下文:server
定义从代理服务器读取响应的超时时间。
超时是在两个连续读操作之间设置的,而不是整个响应的传输。
如果代理服务器在这里时间内没有传输任何内容,则关闭连接。
proxy_connect_write_timeout
语法:proxy_connect_write_timeout time
默认值:60s
上下文:server
设置向代理服务器发送请求的超时时间。
超时设置只在两个连续的写操作之间设置,而不是整个请求的传输。
如果代理服务器在这一次没有收到任何消息,连接将关闭。
proxy_connect_address
语法: proxy_connect_addressaddress [transparent] | off
默认值:none
上下文:server
指定代理服务器的IP地址。 地址可以包含变量。
特殊值等于 none,它使用从连接请求行主机 NAME 解析的IP地址。
注:如果使用 set $<nginx variable> 和 proxy_connect_address $<nginx variable> 同时,你应该使用 proxy_connect_rewrite.patch,参见安装插件以获得更详细的信息。
proxy_connect_bind
语法:proxy_connect_bind address | off
默认值:none
上下文:server
向代理服务器发出传出连接来自具有可选端口的指定本地IP地址。
参数值可以包含变量。 特殊值等于 none,这允许系统自动分配本地IP地址和端口。
透明参数允许与代理服务器的传出连接来源于非本地IP地址,例如,从客户端的实际IP地址:
proxy_connect_bind $remote_addr transparent;
注:如果使用 set $<nginx variable> 和 proxy_connect_bind $<nginx variable> 同时,你应该使用 proxy_connect_rewrite.patch,参见安装插件以获得更详细的信息。
$connect_host:
连接请求行的主机 NAME。
$connect_port:
连接请求行的端口。
$connect_addr:
远程主机的IP地址和端口,比如"192.168.1.5: 12345"。 IP地址从连接请求行的主机 NAME 解析。
Nginx 兼容性
- The latest module is compatible with the following versions of nginx:
- 1.15.8 (mainlain version of 1.15.4+)
- 1.15.2 (2018/08/02 mainlain version of 1.15.x)
- 1.14.0 (stable version of 1.14.x)
- 1.12.1 (stable version of 1.12.x)
- 1.10.3 (stable version of 1.10.x)
- 1.8.1 (stable version of 1.8.x)
- 1.6.3 (stable version of 1.6.x)
- 1.4.7 (stable version of 1.4.x)
OpenResty Compatibility
The latest module is compatible with the following versions of OpenResty:
- 1.13.6 (version: 1.13.6.2)
- 1.15.8 (version: 1.15.8.1rc1)
Tengine Compatibility
This module has been integrated into Tengine 2.3.0.
- Tengine ngx_http_proxy_connect_module documentation
- Merged pull request for Tengine 2.3.0.
以上参考了github页说明:http://www.github.com/chobits/ngx_http_proxy_connect_module
近期由于项目需要使用到https正向代理,而nginx官方模块仅支持做http正向代理,一番百度学习后发现了该模块,故今日记录下此笔记供大家一起学习交流ngx_http_proxy_connect_module模块主要用于隧道SSL请求的代理服务器GitHub地址:http://www.github.com/chobits/ngx_http_proxy_connect_modulengi...
使用nginx作为http/https正向代理ipm包,包含ngx_http_proxy_connect_module 模块,附带了第三方图片代理配置,带有缓存,可直接做图片服务器
下载后执行:rpm -ivh nginx-1.12.2-1.el7_4.ngx.x86_64.rpm
打包教程:https://www.jianshu.com/p/cd1c04c31534
配置http(https)正向代理【ngx_http_proxy_connect_module】
nginx一般用于负载均衡,反向代理比较多;当然nginx也是可以充当正向代理的,但是nginx本身并没有自带支持正向代理的模块。其实更准确地说,nginx是没有支持七层正向代理的模块,只有实现四层正向代理的模块(具体可以参考一下这篇文章–使用NGINX作为HTTPS正向代理服务器)。本文讨论的是使用第三方模块实现的七层正向代理。
第三方包下载:https://github.com/chobits/ngx_ht
由于部门内部服务器均在内网中运行没有连接互联网,导致了yum软件安装很费劲,很多软件安装需要单独安装、逐个依赖安装。因此,我们在DMZ区拿出一台虚拟机专门用于给内网服务器虚拟机集群做正向代理,解决内网上网的问题。
主要参考:
使用NGINX作为HTTPS正向代理服务器 - SegmentFault 思否
CentOs7 给nginx安装ngx_http_proxy_connect_module模块,配置正向代理支持https_马上风的博客-CSDN博客_ngx_http_proxy_con
git clone https://gitee.com/web_design_of_web_frontend/ngx_http_proxy_connect_module.git
记住这个下载路径后面需要用到,我的是 ‘/home/ngx_http_proxy_connect_module’
然后下载nginx,一般大家之前都已经安装过了。推荐重新安装,nginx-1.19以下版本。
wget http://nginx.o
反向代理做法可以为网站安全做更高一步,像一些银行肯定是使用了反代理就是你进入代理服务器也得不到任何数据,下面我来介绍nginx用mod_proxy实现反向代理配置方法。
由于项目需要实现一个域名代理的功能
代码如下:a.com/a.html=>b.com/b.html
也就是用a.com代理了所用b.com网站的请求,经过朋友介绍用apache的反向代理可以实现其目的,哥们试了一下,果然很爽.配置起来也超级的方便.
(注意下面只介绍反向代理,正向代理等我用到了再介绍嘿嘿)
1.启动apache的mod_proxy模块.
代码如下:LoadModule proxy_module m
警告:已弃用
这是一个不错的实验,但现在有更好的方法来完成相同的实验。
由于 Express 的新serve-static中间件现在在找不到文件时调用next ,因此您可以在之后简单地添加代理:
connect = require 'connect'
http = require 'http'
url = require 'url'
serveStatic = require 'serve-static'
proxy = require 'proxy-middleware'
app = connect()
.use(serveStatic('./files'))
.use(proxy(url.parse('https://example.com/endpoint')))
server = http.createServer(app).listen(800
proxy_connect;
proxy_connect_allow 443 563;#允许443端口
proxy_connect_connect_timeout 10s;
proxy_connect_read_timeout 10s;
prox...