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

Linux服务器内部防火墙配置:仅允许80端口的Apache访问8080端口的后端服务

Linux服务器内部防火墙配置:仅允许80端口的Apache访问8080端口的后端服务

搞定这个需求很简单,咱们用Linux自带的iptables就能实现你想要的「类AWS安全组」的内部访问控制效果——只有Apache能访问8080的后端服务,本地终端用curl直接访问会被拦截。下面一步步来操作:

  1. 先确认Apache的运行用户
    通常Ubuntu/Debian上Apache用www-data用户,CentOS/RHEL上用apache用户。你可以用以下命令确认:

    ps aux | grep apache2  # Ubuntu/Debian系统执行
    ps aux | grep httpd    # CentOS/RHEL系统执行
    

    输出结果的第一列就是Apache的运行用户,记下来后面要用。

  2. 添加iptables规则,允许Apache访问8080端口
    执行这条命令,把www-data替换成你刚才查到的Apache用户:

    iptables -A OUTPUT -p tcp --dport 8080 -m owner --uid-owner www-data -j ACCEPT
    

    这条规则的意思是:所有以www-data用户身份发起的、目标端口为8080的TCP出站请求,都允许通过。

  3. 拦截所有其他访问8080端口的请求
    接着添加拒绝规则,确保除了Apache之外,其他任何用户(包括root、你的登录用户)都不能访问8080:

    iptables -A OUTPUT -p tcp --dport 8080 -j REJECT
    
  4. 强化后端服务的绑定地址
    为了彻底杜绝外部请求访问8080,把你的Node.js后端服务绑定到127.0.0.1(而不是0.0.0.0)。比如在启动命令里指定:

    node your-app.js --host 127.0.0.1
    

    或者在代码里设置监听地址:

    app.listen(8080, '127.0.0.1', () => {
      console.log('Backend running on http://127.0.0.1:8080');
    });
    
  5. 保存规则,防止重启后失效
    不同发行版保存iptables规则的命令不一样:

    • Ubuntu/Debian:
      iptables-save > /etc/iptables/rules.v4
      
    • CentOS/RHEL:
      service iptables save
      

测试验证

  • 切换到Apache用户测试访问,应该能正常获取响应:
    sudo -u www-data curl http://127.0.0.1:8080
    
  • 用你的普通用户或root执行curl,会收到拒绝连接的提示,比如:
    curl: (7) Failed to connect to 127.0.0.1 port 8080: Connection refused
    

备注:内容来源于stack exchange,提问作者Van Wilder

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.22 14:33:08