由于部门内部服务器均在内网中运行没有连接互联网,导致了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.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