企业EDI系统运行中,常常需要暴露一些数据接收的URL地址给交易伙伴,同时我们也需要保证EDI系统管理平台不会被暴露,保证企业数据的安全性,这时我们可以通过设置反向代理来实现外部只允许访问接收数据的URL路径,EDI系统所有其他的URL路径只能本地访问。
本文将以Nginx设置反向代理为例,如果您正在使用其他的反向代理工具,在该工具中直接设置即可。我们先简单了解下什么是Nginx及反向代理。
声明:本文使用的Nginx和知行之桥版文为:
Nginx:nginx-1.25.3
知行之桥:知行之桥? 2023 – 23.3.8698.0
不同的版本设置可能会有区别,具体设置以您使用的版本为准。
Nginx?是一个高性能的HTTP和反向代理web服务器,其作用主要是实现反向代理、负载均衡、动静分离等。
通过在服务器端配置代理服务器,客户端只需要将请求发送到反向代理服务器,由反向代理服务器去选择目标服务器获取数据后,再返回给客户端,此时反向代理服务器和目标服务器对外相当于一个服务器,暴露的是代理服务器地址,隐藏了真实服务器的地址。
1.下载链接
注意:下载时最好下载Stable version版本
2.Nginx安装
(1)Windows环境
直接解压Nginx安装包即可,解压后执行nginx.exe应用程序即可启动Nginx。
(2)Linux环境
编译 nginx 文件:make
make install
根据上一步查到的Nginx目录,进入到sbin目录下
执行命令:./nginx,进行启动
Windows和Linux环境配置Nginx文件是一致的:\conf\nginx.conf,配置参考如下:
server {
listen 8001; #反向代理暴露在公网上的端口
server_name localhost; #IP
#charset koi8-r;
#access_log logs/host.access.log main;
location /pub { #将/pub及pub下的网址进行反向代理
proxy_pass http://localhost:8080; #知行之桥url
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
rewrite ^/pub/(.*)$ /pub/$1 break; #rewrite实现url重写
}
location / {
deny all;
return 403; #所有/的访问都返回403
}
….. #下面的保持nginx原来的配置
}
以上配置实现了将8080端口映射为8001端口,仅暴露/pub及pub下的URL,/下的所有URL访问都返回403。
测试访问: 访问http://IP:8001/ pub/Receive.rsb (即AS2协议数据接收地址)
访问知行EDI管理平台http://IP:8001
需要准备一对数字证书,建议公钥为.cer格式,私钥为.key格式
server {
listen 443 ssl; #反向代理暴露在公网上的端口
server_name localhost; #IP
ssl_certificate /usr/local/nginx/ssl/nginx_ssl.cer; #公钥
ssl_certificate_key /usr/local/nginx/ssl/nginx_ssl.key; #私钥
ssl_session_cache shared:SSL:1m; #默认
ssl_session_timeout 5m; #默认
ssl_ciphers HIGH:!aNULL:!MD5; #默认
ssl_prefer_server_ciphers on; #默认
#charset koi8-r;
#access_log logs/host.access.log main;
location /pub { #将/pub及pub下的网址进行反向代理
proxy_pass http://localhost:8080; #知行之桥url
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
rewrite ^/pub/(.*)$ /pub/$1 break; #rewrite实现url重写
}
location / {
deny all;
return 403; #所有/的访问都返回403
}
….. #下面的保持nginx原来的配置
}
测试访问: https://IP:443/pub/Receive.rsb
https://IP:443
注意:Linux环境设置SSL时启动Nginx可能会报错:the “ssl” parameter requires ngx_http_ssl_module,如果报错,这个是因为在前面安装Nginx进行编译是没有带–with-http_ssl_module,重新进行编译就行:
./configure --with-http_ssl_module
make
make install
其他Linux环境常用命令
了解更多 EDI 信息,请参阅:?EDI 是什么?