【OpenResty】Ubuntu下正向代理实践

1 概述

1.1 什么是正向代理?

顾名思义,即和反向代理相对立,客户机通过一台代理服务器资源(主要是网络资源)访问其他主机资源的行为。

例如:政务网和互联网场景,在政务网中,一般是不提供访问互联网的权限的,一是节省带宽成本,二是防止非法攻击入侵。但在实际应用场景中,又不得不实现政务网内主机可访问互联网资源。

这个时候正向代理便是使用的契机。

1.2 为什么要使用OpenResty?

可扩展性高,支持高并发及多Lua脚本进行多模块配置

2 环境

硬件

一台互联网区的服务主机(可与互联网进行通信)

1+N台内网主机(不能访问互联网,但可与互联网区主机通信,通过闸机/堡垒机等等方式)

软件

OpenResty1.19.9.1

Ubuntu18.04 Server

3 配置

如下所有配置均在互联网区主机上配置

3.1 简单的Http/Https配置(GET/POST)

直接下载OpenResty的预编译包,官网直接提供

proxy.conf:

server {
    listen 8090;

    location / {
    	  resolver 172.20.23.1;
          proxy_pass $scheme://$http_host$request_uri;
          proxy_set_header Host $http_host;
          proxy_buffers 256 4k;
          proxy_max_temp_file_size 0;
          proxy_connect_timeout 30;
          proxy_cache_valid 200 302 10m;
          proxy_cache_valid 301 1h;
          proxy_cache_valid any 1m;
    }
}
3.2 支持Http Connect配置(CONNECT TCP/IP)

OpenResty或Nginx默认是不支持此类代理的,需要添加模块才能支持,这里我们使用ngx_http_proxy_connect_module-0.0.2GitHub自取

此方式不再适用于预编译包,需要自行下载OpenResty源码包进行编译:

# mkdir -p /opt/www && cd /opt/www
# wget https://openresty.org/download/openresty-1.19.9.1.tar.gz
# wget https://github.91chifun.workers.dev/https://github.com/chobits/ngx_http_proxy_connect_module/archive/refs/tags/v0.0.2.zip
#
# tar -xvzf openresty-1.19.9.1.tar.gz
# unzip ngx_http_proxy_connect_module-0.0.2.zip
# apt-get install openssl openssl-devel
# apt-get install libpcre3 libpcre3-dev
# apt-get install openssl libssl-dev
# apt-get install zlib1g zlib1g-dev
# cd openresty-1.19.9.1/
# ./configure --prefix=/usr/local/openresty --with-http_stub_status_module --with-http_sub_module --with-http_auth_request_module --with-http_addition_module --add-module=/opt/www/ngx_http_proxy_connect_module-0.0.2
# patch -d build/nginx-1.19.9/ -p 1 < /opt/www/ngx_http_proxy_connect_module-0.0.2/patch/proxy_connect_rewrite_101504.patch
# make && make install
# 

编译安装完成后,验证安装是否成功,成功后配置/usr/local/openresty/nginx/conf/nginx.conf:

server {
      listen 8090;
      resolver 172.20.23.1;
      resolver_timeout 5s;
      # connet proxy
      proxy_connect;
      proxy_connect_allow 443 563;
      proxy_connect_connect_timeout 10s;
      proxy_connect_read_timeout 10s;
      proxy_connect_send_timeout 10s;
      location / {
          proxy_pass $scheme://$http_host$request_uri;
          proxy_set_header Host $http_host;
          proxy_buffers 256 4k;
          proxy_max_temp_file_size 0;
          proxy_connect_timeout 30;
      }
      access_log /opt/www/logs/proxy/access.log;
      error_log /opt/www/logs/proxy/error.log;
    }

配置完成后,重载服务:

# /usr/local/openresty/bin/openresty -s reload

4 使用

登录到内网主机上,全局配置添加环境变量:

export http_proxy=http://${互联网区IP}:8090
export https_proxy=http://${互联网区IP}:8090

验证是否可用,直接运行:

# curl http://www.baidu.com

5 结语

正向代理无疑给一个互联网+N内网环境提供了网络便利,但随即也会暴露些问题,特别注意的是,如果互联网区主机暴露代理端口且有公网IP,则会被不法分子进行代理攻击等,所以在使用正向代理时,代理端口非必要最好禁止在公网暴露。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值