企业EDI系统运行中,常常需要暴露一些数据接收的URL地址给交易伙伴,同时我们也需要保证EDI系统管理平台不会被暴露,保证企业数据的安全性,这时我们可以通过设置反向代理来实现外部只允许访问接收数据的URL路径,EDI系统所有其他的URL路径只能本地访问。
本文将以Nginx设置反向代理为例,如果您正在使用其他的反向代理工具,在该工具中直接设置即可。我们先简单了解下什么是Nginx及反向代理。
声明:本文使用的Nginx和知行之桥版本为:
Nginx:nginx-1.25.3
知行之桥:知行之桥® 2023 – 23.3.8698.0
不同的版本设置可能会有区别,具体设置以您使用的版本为准。
什么是Nginx?
Nginx 是一个高性能的HTTP和反向代理web服务器,其作用主要是实现反向代理、负载均衡、动静分离等。
什么是反向代理?
通过在服务器端配置代理服务器,客户端只需要将请求发送到反向代理服务器,由反向代理服务器去选择目标服务器获取数据后,再返回给客户端,此时反向代理服务器和目标服务器对外相当于一个服务器,暴露的是代理服务器地址,隐藏了真实服务器的地址。
Nginx安装
1.下载链接
注意:下载时最好下载Stable version版本
2.Nginx安装
(1)Windows环境
直接解压Nginx安装包即可,解压后执行nginx.exe应用程序即可启动Nginx。
(2)Linux环境
- 下载:wget (注意:下载时最好下载Stable version版本)下载链接
- 解压:tar -zxvf nginx-1.25.3.tar.gz
- 运行configure: ./configure (注意:如果服务器上没有编译环境,可以尝试选择apt install nginx安装,点击参考详细操作) 进入Nginx目录,找到configure文件,运行命令./configure
-
编译 nginx 文件:make
make install
- 检查是否安装成功:whereis nginx
- 启动Nginx
根据上一步查到的Nginx目录,进入到sbin目录下
执行命令:./nginx,进行启动
- 访问测试 Nginx默认是暴露本机的80端口,访问:http://本机IP:80测试
配置Nginx
Windows和Linux环境配置Nginx文件是一致的:\conf\nginx.conf,配置参考如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
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
如果需要设置SSL
需要准备一对数字证书,建议公钥为.cer格式,私钥为.key格式
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
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,重新进行编译就行:
1 2 3 |
./configure --with-http_ssl_module make make install |
其他Linux环境常用命令
- 查看Nginx位置:whereis nginx
- 停止Nginx:./nginx –s stop
- 安全退出Nginx:./nginx –s quit
- 重新加载配置文件:./nginx –s reload
- 查看Nginx进程:ps aux | grep nginx
了解更多 EDI 信息,请参阅: EDI 是什么?
注:文案部分图片及内容来源于网络,版权归原创作者所有,如有侵犯到您的权益,请您联系我们进行删除,给您带来困扰,我们深感抱歉。