deepseek轻松解决 Nginx 网络透传问题实现内部IBM MQ和外部IBM MQ的通信

06-01 1897阅读

2025年5月30日

 

今天上午 客户突然打电话说还是要研究 Nginx 网络透传以解决IBM MQ和宝马IBM MQ的通信问题。本来这是一个备选方案,他们周一决定直接连接**IBM MQ的。

我是完全不懂的,上周二在无锡我问了一个以前很熟悉的***的老师,他告诉我可以实现。然后我就用deepseek开始了我的工作。

工作是出奇的顺利,deepseek给出了完全无误的方案。

我用华为云模拟了企业专线,很快就实现了公有云上的IBM MQ和私有数据中心的IBM MQ的数据通信。

deepseek轻松解决 Nginx 网络透传问题实现内部IBM MQ和外部IBM MQ的通信

 

deepseek轻松解决 Nginx 网络透传问题实现内部IBM MQ和外部IBM MQ的通信

 

理解了您的网络拓扑结构,我来重新配置 Nginx 的端口透传规则。Nginx 服务器有两个 IP:内网 IP 10.11.13.60 和公网 IP 36.*.*.218,需要连接的外部机器 IP 是 192.168.2.15。

修正后的 Nginx 配置(完整版)

nginx

复制

下载

# For more information on configuration, see:
#   * Official English Documentation: http://nginx.org/en/docs/
#   * Official Russian Documentation: http://nginx.org/ru/docs/
user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;
# Load dynamic modules. See /usr/share/doc/nginx/README.dynamic.
include /usr/share/nginx/modules/*.conf;
# 加载 stream 模块
load_module /usr/lib64/nginx/modules/ngx_stream_module.so;
events {
    worker_connections 1024;
}
# TCP/UDP 透传配置
stream {
    # 配置1:内网访问 → 转发到外部机器
    server {
        listen 10.11.13.60:1414;  # 监听Nginx内网IP
        proxy_pass 192.168.2.15:1414;  # 转发到外部机器
        proxy_timeout 600s;
        proxy_connect_timeout 5s;
        proxy_buffer_size 16k;
    }
    # 配置2:外部访问 → 转发到内网服务器
    server {
        listen 36.*.*.218:1414;  # 监听Nginx公网IP
        proxy_pass 10.11.13.26:1414;  # 转发到内网服务器
        proxy_timeout 600s;
        proxy_connect_timeout 5s;
        proxy_buffer_size 16k;
    }
}
http {
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';
    access_log  /var/log/nginx/access.log  main;
    sendfile            on;
    tcp_nopush          on;
    tcp_nodelay         on;
    keepalive_timeout   65;
    types_hash_max_size 2048;
    include             /etc/nginx/mime.types;
    default_type        application/octet-stream;
    include /etc/nginx/conf.d/*.conf;
    server {
        listen       80 default_server;
        listen       [::]:80 default_server;
        server_name  _;
        root         /usr/share/nginx/html;
        include /etc/nginx/default.d/*.conf;
        location / {
        }
        error_page 404 /404.html;
            location = /40x.html {
        }
        error_page 500 502 503 504 /50x.html;
            location = /50x.html {
        }
    }
# Settings for a TLS enabled server.
#
#    server {
#        listen       443 ssl http2 default_server;
#        listen       [::]:443 ssl http2 default_server;
#        server_name  _;
#        root         /usr/share/nginx/html;
#
#        ssl_certificate "/etc/pki/nginx/server.crt";
#        ssl_certificate_key "/etc/pki/nginx/private/server.key";
#        ssl_session_cache shared:SSL:1m;
#        ssl_session_timeout  10m;
#        ssl_ciphers PROFILE=SYSTEM;
#        ssl_prefer_server_ciphers on;
#
#        include /etc/nginx/default.d/*.conf;
#
#        location / {
#        }
#
#        error_page 404 /404.html;
#            location = /40x.html {
#        }
#
#        error_page 500 502 503 504 /50x.html;
#            location = /50x.html {
#        }
#    }
}

配置说明

  1. 内网访问 → 外部机器:

    nginx

    复制

    下载

    server {
        listen 10.11.13.60:1414;  # 监听Nginx的内网IP
        proxy_pass 192.168.2.15:1414;  # 转发到外部机器
    }
    • 当内网客户端访问 10.11.13.60:1414 时

    • Nginx 将流量透明转发到 192.168.2.15:1414

    • 外部访问 → 内网服务器:

      nginx

      复制

      下载

      server {
          listen 36.*.*.218:1414;  # 监听Nginx的公网IP
          proxy_pass 10.11.13.26:1414;  # 转发到内网服务器
      }
      • 当外部客户端访问 36.*.*.218:1414 时

      • Nginx 将流量透明转发到 10.11.13.26:1414

部署步骤

  1. 安装 stream 模块(如果尚未安装):

    bash

    复制

    下载

    sudo dnf install nginx-mod-stream
  2. 验证配置:

    bash

    复制

    下载

    sudo nginx -t
  3. 重启 Nginx:

    bash

    复制

    下载

    sudo systemctl restart nginx
  4. 检查端口监听:

    bash

    复制

    下载

    sudo ss -tulnp | grep nginx

    应该看到:

    复制

    下载

    tcp  LISTEN 0  4096  10.11.13.60:1414      *:*    users:(("nginx",pid=xxx,fd=yy))
    tcp  LISTEN 0  4096  36.*.*.218:1414    *:*    users:(("nginx",pid=xxx,fd=zz))
  5. 配置防火墙:

    bash

    复制

    下载

    # 开放内网端口
    sudo firewall-cmd --permanent --zone=internal --add-port=1414/tcp
    # 开放公网端口
    sudo firewall-cmd --permanent --zone=public --add-port=1414/tcp
    sudo firewall-cmd --reload

网络拓扑说明

复制

下载

内网客户端 → [Nginx内网IP:10.11.13.60:1414] → 专线 → [外部机器:192.168.2.15:1414]
外部客户端 → [Nginx公网IP:36.*.*.218:1414] → Nginx → [内网服务器:10.11.13.26:1414]

测试方法

  1. 测试内网到外网透传(在内网任意机器执行):

    bash

    复制

    下载

    telnet 10.11.13.60 1414
    # 检查外部机器192.168.2.15是否收到连接
  2. 测试外网到内网透传(在外部网络执行):

    bash

    复制

    下载

    telnet 36.*.*.218 1414
    # 检查内网服务器10.11.13.26是否收到连接

安全加固建议

  1. 限制内网访问范围:

    nginx

    复制

    下载

    server {
        listen 10.11.13.60:1414;
        allow 10.11.13.0/24;  # 只允许内网网段
        deny all;             # 拒绝其他所有
        proxy_pass 192.168.2.15:1414;
        # ...
    }
  2. 限制外部访问源IP(如果可能):

    nginx

    复制

    下载

    server {
        listen 36.*.*.218:1414;
        allow 192.168.2.15;   # 只允许外部机器IP
        deny all;             # 拒绝其他所有
        proxy_pass 10.11.13.26:1414;
        # ...
    }
  3. 启用连接限制:

    nginx

    复制

    下载

    server {
        listen 36.*.*.218:1414;
        proxy_pass 10.11.13.26:1414;
        proxy_connect_timeout 10s;
        proxy_upload_rate 1m;  # 限制上传速度
        proxy_download_rate 1m; # 限制下载速度
    }

这个配置准确地反映了您的网络拓扑,使用 Nginx 的两个不同 IP 地址分别处理内网和外网的 1414 端口透传需求。

 

 

 

免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们。

目录[+]

取消
微信二维码
微信二维码
支付宝二维码