当前位置: 首页 > 工具软件 > ngx_php7 > 使用案例 >

centos7实现nginx部署支持http和https正向代理功能(安装ngx_http_proxy_connect_module模块)

许俊晤
2023-12-01

由于部门内部服务器均在内网中运行没有连接互联网,导致了yum软件安装很费劲,很多软件安装需要单独安装、逐个依赖安装。因此,我们在DMZ区拿出一台虚拟机专门用于给内网服务器虚拟机集群做正向代理,解决内网上网的问题。

主要参考:

使用NGINX作为HTTPS正向代理服务器 - SegmentFault 思否

​​​​​​CentOs7 给nginx安装ngx_http_proxy_connect_module模块,配置正向代理支持https_马上风的博客-CSDN博客_ngx_http_proxy_connect_moduleGitHub - chobits/ngx_http_proxy_connect_module: A forward proxy module for CONNECT request handling

Linux安装nginx进行make的报错 原因pcre及其源代码路径_思维小刀的博客-CSDN博客_pcre的源码目录

正文开始:

1.在代理服务器上配置DNS

1.1编辑DNS配置文件

vim /etc/resolv.conf

1.2 添加DNS配置

nameserver 114.114.114.114

1.3重启网络服务

systemctl restart network

2.编译nginx

2.1编译nginx前或者在编译过程中需要安装一些依赖包

yum install gcc

yum install gcc-c++

yum install zlib openssl pcre

zlib和pcre需要下载源代码包,我从网上分别下载了zlib-1.2.7.1和pcre-8.36

2.2安装第三方ngx_http_proxy_connect_module模块

在没有安装第三方插件前,测试nginx正向代理功能http请求是ok的,但是https请求会connection refused。从网上搜索ngx_http_proxy_connect_module模块可以完美解决这个问题,支持https协议。

NGINX作为反向代理服务器,官方一直没有支持HTTP CONNECT方法。但是基于NGINX的模块化、可扩展性好的特性,阿里的@chobits提供了ngx_http_proxy_connect_module模块,来支持HTTP CONNECT方法,从而让NGINX可以扩展为正向代理。

平时都是Nginx的反向代理、负载均衡和Web服务器的功能,其实Nginx还支持正向代理,但是Nginx自身只支持Http协议的正向代理。如果你想让Nginx支持Https协议,你可以在Nginx中引入ngx_http_proxy_connect_module模块。ngx_http_proxy_connect_module的GitHub地址如下:https://github.com/chobits/ngx_http_proxy_connect_module
从官方网站上下载下来该module

也可以用git完成下载

yum install git

git clone https://gitee.com/web_design_of_web_frontend/ngx_http_proxy_connect_module.git

下载完成之后下载nginx1.18(版本不要太高,我下载的是1.18)

wget http://nginx.org/download/nginx-1.18.0.tar.gz

tar -xzvf nginx-1.18.0.tar.gz

cd nginx-1.18.0

然后进行module打包patch,我这里兼容nginx1.18版本最高的是1018版本的补丁

patch -p1 < /app/pac/ngx_http_proxy_connect_module/patch/proxy_connect_rewrite_1018.patch

然后configure(在这个环节报了很多错误,然后网上一通解决)

./configure --prefix=/usr/local/nginx --with-http_ssl_module   --with-zlib=/app/pac/zlib-1.2.7.1  --with-pcre=/app/pac/pcre-8.36  --add-module=/app/pac/ngx_http_proxy_connect_module

然后编译和安装

make && make install

默认安装路径是/usr/local/nginx/

3.启动、关闭nginx及配置conf文件

启动命令 /usr/local/nginx/sbin/nginx

关闭命令 /usr/local/nginx/sbin/nginx -s stop 

配置nginx/conf/nginx.conf

#正向代理
server{
    resolver 114.114.114.114;
    resolver_timeout 30s;
    listen 80;
    proxy_connect;                          #启用 CONNECT HTTP方法
    proxy_connect_allow            443 80;  #指定代理CONNECT方法可以连接的端口号或范围的列表
    proxy_connect_connect_timeout  20s;     #定义客户端与代理服务器建立连接的超时时间
    proxy_connect_read_timeout     20s;     #定义客户端从代理服务器读取响应的超时时间
    proxy_connect_send_timeout     20s;     #设置客户端将请求传输到代理服务器的超时时间
  
    location / {
         
        proxy_pass $scheme://$http_host$request_uri;
        
    }  
}

4.代理设置及访问测试

在内网虚拟机上进行测试

临时性的先修改了http和https 的代理(永久生效,可以修改 /etc/profile文件)

export http_proxy=http://x.x.x.x:80/

export https_proxy=https://x.x.x.x:80/

取消设置 unset http_proxy unset https_proxy

永久设置 在 /etc/profile 文件中添加:

export http_proxy=http://x.x.x.x:80/

export https_proxy=https://x.x.x.x:80/

然后 source /etc/profile 生效

然后用curl、wget、yum install 测试ok了。

curl https://www.baidu.com -svo /dev/null

yum install php

 类似资料: