如何使用Nginx设置反向代理-知行之桥

发布时间:2024年01月24日

企业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版本

nginx_reverse_proxy1.png

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_reverse_proxy2.png

  • 编译 nginx 文件:make

    nginx_reverse_proxy3.png

make install

nginx_reverse_proxy4.png

  • 检查是否安装成功:whereis nginx

nginx_reverse_proxy5.png

  • 启动Nginx

根据上一步查到的Nginx目录,进入到sbin目录下

nginx_reverse_proxy6.png

执行命令:./nginx,进行启动

nginx_reverse_proxy7.png

  • 访问测试 Nginx默认是暴露本机的80端口,访问:http://本机IP:80测试

nginx_reverse_proxy8.png

配置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协议数据接收地址)

nginx_reverse_proxy9.png

访问知行EDI管理平台http://IP:8001

nginx_reverse_proxy10.png

如果需要设置SSL

需要准备一对数字证书,建议公钥为.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

nginx_reverse_proxy11.png

https://IP:443

nginx_reverse_proxy12.png

注意: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环境常用命令

  • 查看Nginx位置:whereis nginx

nginx_reverse_proxy13.png

  • 停止Nginx:./nginx –s stop

nginx_reverse_proxy14.png

  • 安全退出Nginx:./nginx –s quit

nginx_reverse_proxy15.png

  • 重新加载配置文件:./nginx –s reload

nginx_reverse_proxy16.png

  • 查看Nginx进程:ps aux | grep nginx

nginx_reverse_proxy17.png

了解更多 EDI 信息,请参阅:?EDI 是什么?

文章来源:https://blog.csdn.net/Cara_EDI_Consultant/article/details/135822424
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。