You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将所有流量转发至目标服务器 配置S作为M的反向代理访问方案

解决方案

方案1:iptables 端口转发(四层转发,适配所有TCP流量场景)

你之前配置失败大概率是漏了内核转发开启或源地址转换步骤,完整配置流程如下:

前置准备

  • 替换下文S_IP为服务器S的公网IP,M_IP为服务器M的公网/内网互通IP
  • 服务器S需要开放80、443、6789三个端口的入站规则

配置步骤

  1. 开启S的内核IP转发功能
    编辑/etc/sysctl.conf文件,将net.ipv4.ip_forward参数值改为1,保存后执行sysctl -p生效
  2. 配置目的地址转换(DNAT),将S收到的流量转发到M
    # 80端口转发
    iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to-destination M_IP:80
    # 443端口转发
    iptables -t nat -A PREROUTING -p tcp --dport 443 -j DNAT --to-destination M_IP:443
    # 6789 websocket端口转发
    iptables -t nat -A PREROUTING -p tcp --dport 6789 -j DNAT --to-destination M_IP:6789
    
  3. 配置源地址转换(SNAT),让M返回的流量通过S回传给用户(绝大多数配置失败都是漏了这一步)
    iptables -t nat -A POSTROUTING -p tcp -d M_IP --dport 80 -j SNAT --to-source S_IP
    iptables -t nat -A POSTROUTING -p tcp -d M_IP --dport 443 -j SNAT --to-source S_IP
    iptables -t nat -A POSTROUTING -p tcp -d M_IP --dport 6789 -j SNAT --to-source S_IP
    
  4. 放行转发流量规则
    iptables -A FORWARD -p tcp -d M_IP --dport 80 -j ACCEPT
    iptables -A FORWARD -p tcp -s M_IP --sport 80 -j ACCEPT
    iptables -A FORWARD -p tcp -d M_IP --dport 443 -j ACCEPT
    iptables -A FORWARD -p tcp -s M_IP --sport 443 -j ACCEPT
    iptables -A FORWARD -p tcp -d M_IP --dport 6789 -j ACCEPT
    iptables -A FORWARD -p tcp -s M_IP --sport 6789 -j ACCEPT
    
  5. 保存规则,不同系统命令不同:
    • Debian/Ubuntu:iptables-save > /etc/iptables/rules.v4
    • CentOS/RHEL:service iptables save

方案2:Nginx 反向代理(七层转发,对websocket支持更好,方便后续加日志、限流等扩展配置)

配置更简单,出错概率更低,适合需要处理应用层流量的场景:

  1. 在服务器S上安装Nginx
  2. 新建配置文件/etc/nginx/conf.d/proxy.conf,填入以下内容,按需替换参数:
    # 80端口转发配置
    server {
        listen 80;
        server_name 你的域名; # 无域名可留空
        location / {
            proxy_pass http://M_IP:80;
            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;
        }
    }
    
    # 443端口转发配置(证书部署在S侧的场景,若要透传SSL到M可直接用stream模块转发)
    server {
        listen 443 ssl;
        server_name 你的域名;
        ssl_certificate 你的SSL证书路径;
        ssl_certificate_key 你的SSL私钥路径;
        location / {
            proxy_pass https://M_IP:443;
            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;
        }
    }
    
    # 6789 websocket端口配置
    server {
        listen 6789;
        location / {
            proxy_pass http://M_IP:6789;
            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection "upgrade";
            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_connect_timeout 300s; # 长连接超时时间可按需调整
            proxy_send_timeout 300s;
            proxy_read_timeout 300s;
        }
    }
    
  3. 执行nginx -t检查配置是否正确,无误后执行nginx -s reload生效即可。

内容的提问来源于stack exchange,提问作者Admia

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 21:36:03