案例:nginx实现内外网交互——在发票识别与查验中的应用

场景描述

一公司的用户在前台报账时需提交发票、文档等附件,发票需经电子影像系统调用ORC识别、二维码识别、税务查验等服务。而问题在于这家公司的网络管理制度,其网络环境分为办公区、核心区两类,办公区可申请与外网交互,而核心区在此之前是完全封闭、很难申请对外通信的,我们的影像系统正建在核心区。之前尝试过两种方案,因为最近几个影像项目组都遇到这种问题,便记录于此。

实现方案

方案一:防火墙上添加白名单ip

这种方式很快被客户的网管否决,因为核心区的网络甚至不能直接通过防火墙访问外网(这只是制度问题)。我们在办公区的测试环境做过这种配置,发现影像系统的异常——所有票据几乎都要上传两次以上才可以成功调取外网识别服务,原因尚不得知,不排除环境问题。

所以若项目上的网络管理并不严苛,可以考虑这个方案。

 

方案二:DMZ区使用nginx转发

如图所示,影像系统的应用服务器、数据库服务器、文件服务器都部署于核心区,要与防火墙外层的AI开放平台(记为IP1)实现交互。

nginx

现在我们在DMZ区的一台转发服务器上做nginx配置:

user  root;

worker_processes  1;

#error_log  logs/error.log;

#error_log  logs/error.log  notice;

#error_log  logs/error.log  info;

#pid  logs/nginx.pid;

events {

    worker_connections  1024;

}

http {

    sendfile  on;

#以下为反向代理,如监听端口为80,proxy_pass为需要调用的API网址:

    server {

        listen  80 ;

        location / {

            proxy_pass https://api.xxxxxxx.com;

            proxy_set_header X-Real-IP $remote_addr;

            proxy_set_header User-Agent $http_user_agent;

            client_max_body_size  1024m;

        }

    }

#以下为正向代理,如监听端口为8090,proxy_pass为核心区网络的内网地址:

     server {

listen  8090 ;

            location / {

            proxy_pass http://127.0.0.1:8080;

            proxy_set_header X-Real-IP $remote_addr;

            proxy_set_header User-Agent $http_user_agent;

            client_max_body_size  1024m;

        }

}

}

IP2为nginx服务器的ip地址,IP3为核心区网络的外网映射。

如此,原应用服务器上应访问IP1,现在可通过访问IP2实现,而互联网中的手机APP和AI平台又通过IP3实现对影像系统的访问,办公区虽在内网,但也不能直接访问核心区,可通过IP3访问,而核心区内部的系统直接通过内网IP实现通信。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值