nginx 正向代理https配置

1.需求描述

nginx正向代理

如图所示,公司内网为了安全考虑,只提供一台服务器可与外网作为网关,进行访问。

1.服务器A可以访问外网;

2.服务器B,C无法访问外网;

3.服务器ABC之间内网互通;

需求原因:内部web系统,部署在BC上,其中有直接访问外网的部分第三方接口。

需求目的:使BC服务器可以正常访问外网。

 

 

2.分析

基于nginx的正向代理,在服务器A搭建一个代理服务器,使得BC可以通过服务器A的nginx 代理进行访问外网。

 

3.nginx搭建正向代理

nginx版本 1.18

以下示例采用源代码安装方式

3.1   服务器ABC测试

curl -i http://www.baidu.com

A 服务器(网关) 正常返回200

BC服务器

使用命令后在一段时间后返回无法访问。

3.2 下载https所需模块

没有这个nginx就无法代理https的请求,

地址:https://github.com/chobits/ngx_http_proxy_connect_module

ngx_http_proxy_connect_module模块主要用于隧道SSL请求的代理服务器

版本要求:

当然你可以先下载下来,

几种下载方式,最终上传到我们的服务器A中

3.3 安装 ngx_http_proxy_connect_module

将所需未见上传到服务器。如下我们已经解压成功

zip文件 的解压命令为 unzip xxx

gz文件 的解压命令为 tar -axvf xxx

参考官网示例进行安装:

 

 

3.3.1. 进入nginx

 cd nginx-1.18.0/ && ll

3.3.2.打补丁

执行命令

patch -p1 < /opt/user/ngx_http_proxy_connect_module-master/patch/proxy_connect_rewrite_1018.patch

其中 /opt/user为我当前存放目录,请根据实际情况进行变更

补丁版本选择如下:

例如我的nginx是1.18的那么我选择

3.3.3.参数配置 

./configure --prefix=/usr/local/nginx --add-module=/opt/user/ngx_http_proxy_connect_module-master --with-http_ssl_module

同样需要注意的是你存放补丁的位置以及你需要安装的位置根据你的实际情况变更

3.3.4.编译

make

如是第一次安装nginx直接进入下一步

 第二次安装执行如下

(1.)对原始nginx 进行备份

进入到之前你的nginx执行启动脚本,进行备份,以防出错,可进行回滚

cp nginx nginx.bank

(2.)复制新编译的nginx替换之前的

根据实际情况变更目录

 cp objs/nginx /usr/local/nginx/sbin/nginx

这个在make后会存放在

3.3.5.安装(非初次安装请勿执行

make install

 

4. 配置nginx正向代理文件

4.1.添加server模块

在nginx.conf中加入server模块。

以下三个可自定义

1.使用DNS 114.114.144.144

2.使用端口:8981

3.日志记录 /var/log/nginx/proxy/xx.log

配置文件如下,以下支持http和https代理

server {
        resolver 114.114.114.114;       #指定DNS服务器IP地址 
        listen 8981;
        access_log  /var/log/nginx/proxy/access.log;
        error_log   /var/log/nginx/proxy/error.log;
        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_pass https://$host$request_uri;    #设定代理服务器的协议和地址 
                proxy_buffers 256 4k;
                proxy_max_temp_file_size 0k;
                proxy_connect_timeout 30;
                proxy_send_timeout 60;
                proxy_read_timeout 60;
                proxy_next_upstream error timeout invalid_header http_502;
         }
}

4.2开放端口

使用的端口为8981

4.2.1查询端口是否开放

firewall-cmd --query-port=8981/tcp

no代表未开放

4.2.2 开放端口

firewall-cmd --permanent --add-port=8981/tcp

4.2.3重启防火墙

(修改配置后要重启防火墙)  ---必须操作

firewall-cmd --reload

5.服务器BC配置

5.1 服务器配置

vim /etc/profile

5.2 添加代理

其中我都A服务器Ip为:10.26.2.36 

export http_proxy   需要代理的http访问地址
export https_proxy  需要代理的https 访问地址

export no_proxy=服务器BC访问地址时不需要进行代理的是哪些,。这个一般可以不需要使用
 

export http_proxy=10.26.2.36:8981
export https_proxy=10.26.2.36:8981

export no_proxy=10.26.2.36,域名

5.3配置生效

source /etc/profile

 


 

 

 

 

 

 

  • 21
    点赞
  • 107
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
nginx正向代理https配置的步骤如下: 1. 在nginx配置文件中,创建一个server块来处理https代理请求。 2. 在server块中,指定需要代理的监听端口号,比如8981。 3. 设置resolver指令,指定DNS服务器的IP地址,比如114.114.114.114。 4. 定义access_log和error_log指令,用于记录访问日志和错误日志的位置。 5. 启用proxy_connect模块,使用proxy_connect指令。 6. 使用proxy_connect_allow指令,允许连接指定的端口号,比如443和563。 7. 设置proxy_connect的连接超时时间,使用proxy_connect_connect_timeout、proxy_connect_read_timeout和proxy_connect_send_timeout指令,比如10秒。 8. 在location块中,设置代理转发的相关指令。 9. 使用proxy_set_header指令,设置请求头中的Host字段为$http_host。 10. 使用proxy_pass指令,将请求转发到指定的https地址,比如https://$host$request_uri。 11. 设置proxy_buffers和proxy_max_temp_file_size指令,用于缓存代理响应的数据。 12. 设置proxy_connect_timeout、proxy_send_timeout和proxy_read_timeout指令,用于控制与后端服务器的连接、发送和读取超时时间。 13. 设置proxy_next_upstream指令,用于在遇到错误、超时或无效头部等情况下,进行下一个upstream的切换。 14. 完成https代理的配置后,保存并重启nginx服务,使配置生效。 请注意,以上步骤仅提供了一种可行的https代理配置示例,具体配置需要根据实际情况进行调整。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值