deepseek轻松办理 Nginx 网络透传问题实现内部IBM MQ和外部IBM MQ的通讯

[复制链接]
发表于 2025-7-9 01:08:18 | 显示全部楼层 |阅读模式
2025年5月30日

 
本日上午 客户突然打电话说还是要研究 Nginx 网络透传以办理IBM MQ和宝马IBM MQ的通讯问题。本来这是一个备选方案,他们周一决定直接连接**IBM MQ的。
我是完全不懂的,上周二在无锡我问了一个从前很熟悉的***的老师,他告诉我可以实现。然后我就用deepseek开始了我的工作。
工作是出奇的顺利,deepseek给出了完全无误的方案。
我用华为云模拟了企业专线,很快就实现了公有云上的IBM MQ和私有数据中心的IBM MQ的数据通讯。

 



 

明白了您的网络拓扑结构,我来重新配置 Nginx 的端口透传规则。Nginx 服务器有两个 IP:内网 IP 10.11.13.60 和公网 IP 36.*.*.218,必要连接的外部机器 IP 是 192.168.2.15
修正后的 Nginx 配置(完备版)

nginx
复制
下载
  1. <em># For more information on configuration, see:</em>
  2. <em>#   * Official English Documentation: http://nginx.org/en/docs/</em>
  3. <em>#   * Official Russian Documentation: http://nginx.org/ru/docs/</em>
  4. user nginx;
  5. worker_processes auto;
  6. error_log /var/log/nginx/error.log;
  7. pid /run/nginx.pid;
  8. <em># Load dynamic modules. See /usr/share/doc/nginx/README.dynamic.</em>
  9. include /usr/share/nginx/modules/*.conf;
  10. <em># </em><em>加载 </em><em>stream </em><em>模块</em>
  11. load_module /usr/lib64/nginx/modules/ngx_stream_module.so;
  12. events {
  13.     worker_connections 1024;
  14. }
  15. <em># TCP/UDP </em><em>透传配置</em>
  16. stream {
  17.     <em># </em><em>配置</em><em>1</em><em>:内网访问 → 转发到外部机器</em>
  18.     server {
  19.         listen 10.11.13.60:1414;  <em># </em><em>监听</em><em>Nginx</em><em>内网</em><em>IP</em>
  20.         proxy_pass 192.168.2.15:1414;  <em># </em><em>转发到外部机器</em>
  21.         proxy_timeout 600s;
  22.         proxy_connect_timeout 5s;
  23.         proxy_buffer_size 16k;
  24.     }
  25.     <em># </em><em>配置</em><em>2</em><em>:外部访问 → 转发到内网服务器</em>
  26.     server {
  27.         listen 36.*.*.218:1414;  <em># </em><em>监听</em><em>Nginx</em><em>公网</em><em>IP</em>
  28.         proxy_pass 10.11.13.26:1414;  <em># </em><em>转发到内网服务器</em>
  29.         proxy_timeout 600s;
  30.         proxy_connect_timeout 5s;
  31.         proxy_buffer_size 16k;
  32.     }
  33. }
  34. http {
  35.     log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
  36.                       '$status $body_bytes_sent "$http_referer" '
  37.                       '"$http_user_agent" "$http_x_forwarded_for"';
  38.     access_log  /var/log/nginx/access.log  main;
  39.     sendfile            on;
  40.     tcp_nopush          on;
  41.     tcp_nodelay         on;
  42.     keepalive_timeout   65;
  43.     types_hash_max_size 2048;
  44.     include             /etc/nginx/mime.types;
  45.     default_type        application/octet-stream;
  46.     include /etc/nginx/conf.d/*.conf;
  47.     server {
  48.         listen       80 default_server;
  49.         listen       [::]:80 default_server;
  50.         server_name  _;
  51.         root         /usr/share/nginx/html;
  52.         include /etc/nginx/default.d/*.conf;
  53.         location / {
  54.         }
  55.         error_page 404 /404.html;
  56.             location = /40x.html {
  57.         }
  58.         error_page 500 502 503 504 /50x.html;
  59.             location = /50x.html {
  60.         }
  61.     }
  62. <em># Settings for a TLS enabled server.</em>
  63. <em>#</em>
  64. <em>#    server {</em>
  65. <em>#        listen       443 ssl http2 default_server;</em>
  66. <em>#        listen       [::]:443 ssl http2 default_server;</em>
  67. <em>#        server_name  _;</em>
  68. <em>#        root         /usr/share/nginx/html;</em>
  69. <em>#</em>
  70. <em>#        ssl_certificate "/etc/pki/nginx/server.crt";</em>
  71. <em>#        ssl_certificate_key "/etc/pki/nginx/private/server.key";</em>
  72. <em>#        ssl_session_cache shared:SSL:1m;</em>
  73. <em>#        ssl_session_timeout  10m;</em>
  74. <em>#        ssl_ciphers PROFILE=SYSTEM;</em>
  75. <em>#        ssl_prefer_server_ciphers on;</em>
  76. <em>#</em>
  77. <em>#        include /etc/nginx/default.d/*.conf;</em>
  78. <em>#</em>
  79. <em>#        location / {</em>
  80. <em>#        }</em>
  81. <em>#</em>
  82. <em>#        error_page 404 /404.html;</em>
  83. <em>#            location = /40x.html {</em>
  84. <em>#        }</em>
  85. <em>#</em>
  86. <em>#        error_page 500 502 503 504 /50x.html;</em>
  87. <em>#            location = /50x.html {</em>
  88. <em>#        }</em>
  89. <em>#    }</em>
  90. }
复制代码
配置阐明


  •         内网访问 → 外部机器:
            nginx
            复制
            下载
    1. server {
    2.     listen 10.11.13.60:1414;  <em># </em><em>监听</em><em>Nginx</em><em>的内网</em><em>IP</em>
    3.     proxy_pass 192.168.2.15:1414;  <em># </em><em>转发到外部机器</em>
    4. }
    复制代码

    •                 当内网客户端访问 10.11.13.60:1414 时
    •                 Nginx 将流量透明转发到 192.168.2.15:1414
           
  •         外部访问 → 内网服务器:
            nginx
            复制
            下载
    1. server {
    2.     listen 36.*.*.218:1414;  <em># </em><em>监听</em><em>Nginx</em><em>的公网</em><em>IP</em>
    3.     proxy_pass 10.11.13.26:1414;  <em># </em><em>转发到内网服务器</em>
    4. }
    复制代码

    •                 当外部客户端访问 36.*.*.218:1414 时
    •                 Nginx 将流量透明转发到 10.11.13.26:1414
           
部署步骤


  •         安装 stream 模块(如果尚未安装):
            bash
            复制
            下载
    1. sudo dnf install nginx-mod-stream
    复制代码
  •         验证配置
            bash
            复制
            下载
    1. sudo nginx -t
    复制代码
  •         重启 Nginx
            bash
            复制
            下载
    1. sudo systemctl restart nginx
    复制代码
  •         检查端口监听
            bash
            复制
            下载
    1. sudo ss -tulnp | grep nginx
    复制代码
    应该看到:
            复制
            下载
    1. tcp  LISTEN 0  4096  10.11.13.60:1414      *:*    users:(("nginx",pid=xxx,fd=yy))
    2. tcp  LISTEN 0  4096  36.*.*.218:1414    *:*    users:(("nginx",pid=xxx,fd=zz))
    复制代码
  •         配置防火墙
            bash
            复制
            下载
    1. <em># </em><em>开放内网端口</em>
    2. sudo firewall-cmd --permanent --zone=internal --add-port=1414/tcp
    3. <em># </em><em>开放公网端口</em>
    4. sudo firewall-cmd --permanent --zone=public --add-port=1414/tcp
    5. sudo firewall-cmd --reload
    复制代码
网络拓扑阐明

复制
下载
  1. 内网客户端 → [Nginx内网IP:10.11.13.60:1414] → 专线 → [外部机器:192.168.2.15:1414]
  2. 外部客户端 → [Nginx公网IP:36.*.*.218:1414] → Nginx → [内网服务器:10.11.13.26:1414]
复制代码
测试方法


  •         测试内网到外网透传(在内网恣意机器实行):
            bash
            复制
            下载
    1. telnet 10.11.13.60 1414
    2. <em># </em><em>检查外部机器</em><em>192.168.2.15</em><em>是否收到连接</em>
    复制代码
  •         测试外网到内网透传(在外部网络实行):
            bash
            复制
            下载
    1. telnet 36.*.*.218 1414
    2. <em># </em><em>检查内网服务器</em><em>10.11.13.26</em><em>是否收到连接</em>
    复制代码
安全加固建议


  •         限定内网访问范围
            nginx
            复制
            下载
    1. server {
    2.     listen 10.11.13.60:1414;
    3.     allow 10.11.13.0/24;  <em># </em><em>只允许内网网段</em>
    4.     deny all;             <em># </em><em>拒绝其他所有</em>
    5.     proxy_pass 192.168.2.15:1414;
    6.     <em># ...</em>
    7. }
    复制代码
  •         限定外部访问源IP(如果可能):
            nginx
            复制
            下载
    1. server {
    2.     listen 36.*.*.218:1414;
    3.     allow 192.168.2.15;   <em># </em><em>只允许外部机器</em><em>IP</em>
    4.     deny all;             <em># </em><em>拒绝其他所有</em>
    5.     proxy_pass 10.11.13.26:1414;
    6.     <em># ...</em>
    7. }
    复制代码
  •         启用连接限定
            nginx
            复制
            下载
    1. server {
    2.     listen 36.*.*.218:1414;
    3.     proxy_pass 10.11.13.26:1414;
    4.     proxy_connect_timeout 10s;
    5.     proxy_upload_rate 1m;  <em># </em><em>限制上传速度</em>
    6.     proxy_download_rate 1m; <em># </em><em>限制下载速度</em>
    7. }
    复制代码
这个配置正确地反映了您的网络拓扑,使用 Nginx 的两个不同 IP 地址分别处置惩罚内网和外网的 1414 端口透传需求。

 

 

 

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
继续阅读请点击广告

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
回复

使用道具 举报

© 2001-2025 Discuz! Team. Powered by Discuz! X3.5

GMT+8, 2025-7-25 07:44 , Processed in 0.090601 second(s), 30 queries 手机版|qidao123.com技术社区-IT企服评测▪应用市场 ( 浙ICP备20004199 )|网站地图

快速回复 返回顶部 返回列表