天天看点

(二)nginx正向代理https用于支持https代理的模块rpm构建及nginx源码初始化rpmbuild目录针对不同nginx版本,需要用不同的path文件,详见该项目github首页

原文章地址:https://www.cnblogs.com/zhaobin-diray/p/10861195.html

使用nginx作为http/https正向代理

默认nginx是不支持https的正向代理的,要想通过nginx的正向代理,作为https服务器,需要增加一个模块并重新编译nginx。

环境:

centos 7

所需要的文件:

#https://github.com/chobits/ngx_http_proxy_connect_module

#http://nginx.org/packages/centos/7/SRPMS/nginx-1.12.2-1.el7_4.ngx.src.rpm

安装编译工具

#yum install gcc gcc-c++ make -y

#yum install rpm-build rpmdevtools -y

安装依赖

#yum install pcre-devel pcre -y

#yum install zlib-devel zlib -y

#yum install openssl-devel openssl -y

#yum install redhat-lsb-core -y

下载nginx源码、模块源码及rpm构建包

#cd /root

用于支持https代理的模块

#git clone https://github.com/chobits/ngx_http_proxy_connect_module.git

或者直接去页面下载zip文件

(二)nginx正向代理https用于支持https代理的模块rpm构建及nginx源码初始化rpmbuild目录针对不同nginx版本,需要用不同的path文件,详见该项目github首页

下载后上传至/root目录下,并进行解压

#unzip ngx_http_proxy_connect_module-master.zip

rpm构建及nginx源码

#wget http://nginx.org/packages/centos/7/SRPMS/nginx-1.12.2-1.el7_4.ngx.src.rpm

修改nginx的src rpm包,增加ngx_http_proxy_connect_module模块

初始化rpmbuild目录

#cd /root

#rpmdev-setuptree 执行生成目录

#cp /root/nginx-1.12.2-1.el7_4.ngx.src.rpm /root/rpmbuild/SOURCES/

#cd /root/rpmbuild/SOURCES/

#rpm2cpio nginx-1.12.2-1.el7_4.ngx.src.rpm |cpio -dvi

#rm /root/rpmbuild/SOURCES/nginx-1.12.2-1.el7_4.ngx.src.rpm

#tar -xf nginx-1.12.2.tar.gz

#cd /root/rpmbuild/SOURCES/nginx-1.12.2

针对不同nginx版本,需要用不同的path文件,详见该项目github首页

#patch -p1 < /rootngx_http_proxy_connect_module-master/patch/proxy_connect_rewrite.patch

#cd /root/rpmbuild/SOURCES/

#tar -czvf nginx-1.12.2.tar.gz nginx-1.12.2

修改nginx.spec文件,增加模块的编译选项

将nginx.spec中的configure命令中,增加–add-module=/root/ngx_http_proxy_connect_module-master选项。

修改后的命令:

%build

./configure %{BASE_CONFIGURE_ARGS}

–add-module=/root/ngx_http_proxy_connect_module-master

–with-cc-opt="%{WITH_CC_OPT}"

–with-ld-opt="%{WITH_LD_OPT}"

–with-debug

make %{?_smp_mflags}

%{__mv} %{bdir}/objs/nginx

%{bdir}/objs/nginx-debug

./configure %{BASE_CONFIGURE_ARGS}

–add-module=/root/ngx_http_proxy_connect_module-master

–with-cc-opt="%{WITH_CC_OPT}"

–with-ld-opt="%{WITH_LD_OPT}"

make %{?_smp_mflags}

编译rpm包

#rpmbuild -bb nginx.spec

rpm包,在/root/rpmbuild/RPMS路径下。

#cd /root/rpmbuild/RPMS

#rpm -ivh nginx-1.12.2-1.el6.ngx.x86_64.rpm

#rpm -ivh nginx-debuginfo-1.12.2-1.el6.ngx.x86_64.rpm

修改nginx配置文件

基本的http代理,配置文件/etc/nginx/conf.d/default.conf如下。为了适配https,我们需要增加connect语句相关的配置。

简单的http代理,配置文件

server {

resolver 114.114.114.114;

listen 9999;

access_log /var/log/nginx/http_proxy.access.log main;

error_log /var/log/nginx/http_proxy.error.log;

location / {
    proxy_pass $scheme://$http_host$request_uri;
}
           

}

#https/http代理配置文件

server {

resolver 114.114.114.114;

listen 9999;

proxy_connect;
proxy_connect_allow            443 563;
proxy_connect_connect_timeout  10s;
proxy_connect_read_timeout     10s;
proxy_connect_send_timeout     10s;

access_log /var/log/nginx/http_proxy.access.log main;
error_log /var/log/nginx/http_proxy.error.log;

location / {
    proxy_pass $scheme://$http_host$request_uri;
}
           

}

#nginx -t 检查配置文件是否正确

#启动即可

继续阅读