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

Ubuntu 17.10下为Spring Boot Jar开放低端口访问权限问题

我来帮你解决Spring Boot可执行Jar绑定443低端口的问题,之前我也踩过类似的坑,给你几个亲测有效的方案:

方案1:给Java二进制文件添加端口绑定权限

你之前直接给Jar文件加setcap是没用的——因为setcap是作用于二进制可执行文件,而Spring Boot的可执行Jar本质是带启动逻辑的压缩包,真正执行的是Java虚拟机(JVM)的二进制程序。

具体步骤:

  • 先找到你当前使用的Java二进制文件路径,比如通常在/usr/bin/java,或者通过which java命令查询
  • 执行以下命令给Java程序赋予绑定低端口的权限:
    sudo setcap CAP_NET_BIND_SERVICE=+eip /usr/bin/java
    
  • 之后你就可以不用sudo,直接运行java -jar proj.jar,Tomcat就能正常绑定443端口了

注意:如果你的系统安装了多个Java版本,一定要给当前运行项目的那个Java版本的二进制文件加权限。

方案2:用端口转发实现(更安全,推荐)

如果不想给全局JVM开放低端口权限,可以用iptables把443端口的流量转发到Tomcat实际监听的高端口(比如8443),这样既不用修改权限,也能实现外部访问443的需求。

具体步骤:

  1. 修改Spring Boot配置文件(比如application.properties),让Tomcat监听高端口:
    server.port=8443
    # 如果是HTTPS,还需要配置证书信息:
    server.ssl.key-store=classpath:your-keystore.jks
    server.ssl.key-store-password=your-password
    server.ssl.key-password=your-password
    
  2. 添加iptables转发规则:
    sudo iptables -t nat -A PREROUTING -p tcp --dport 443 -j REDIRECT --to-port 8443
    
  3. 保存iptables规则(不同系统命令不同):
    • Ubuntu/Debian:sudo iptables-save > /etc/iptables/rules.v4
    • CentOS/RHEL:sudo service iptables save
  4. 直接运行java -jar proj.jar,外部访问443端口就会自动转发到8443,站点正常可用
方案3:用systemd服务管理(生产环境首选)

如果是生产环境部署,推荐用systemd来管理你的Spring Boot服务,既能配置普通用户运行,又能通过AmbientCapabilities单独给服务赋予端口绑定权限,比全局加权限更安全。

具体步骤:

  1. 创建systemd服务文件,比如/etc/systemd/system/proj.service:
    [Unit]
    Description=我的Spring Boot项目服务
    After=network.target
    
    [Service]
    User=your-normal-user  # 替换成你要使用的普通用户名
    ExecStart=/usr/bin/java -jar /path/to/proj.jar
    AmbientCapabilities=CAP_NET_BIND_SERVICE  # 仅给该服务赋予绑定低端口的权限
    Restart=always  # 服务异常退出时自动重启
    
    [Install]
    WantedBy=multi-user.target
    
  2. 重新加载systemd配置:
    sudo systemctl daemon-reload
    
  3. 启动服务并设置开机自启:
    sudo systemctl start proj
    sudo systemctl enable proj
    

这样服务会以普通用户身份运行,但拥有绑定443端口的权限,既安全又方便后续的运维管理。

内容的提问来源于stack exchange,提问作者szab.kel

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 11:57:56