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

Linode上Fedora系统配置Lando绑定80端口问题求助

解决Lando绑定80端口到公网域名my_app.com的问题

我来帮你搞定这个问题,看起来你已经离目标很近了,只是需要调整Lando配置和系统权限设置,让容器能直接绑定到主机的80端口。下面是分步解决方案:

1. 修改Lando配置文件(.lando.yml)

你需要调整配置,让Lando的web服务关联到公网域名的80端口。推荐用Lando原生的proxy配置,这样更贴合它的架构设计:

name: my_app
recipe: drupal8
config:
  webroot: ./drupal/web
  php: 7.2
  port: '8080' # 这个是容器内部的端口,保持不变即可
  drush: ^9
  xdebug: false
# 添加proxy配置,关联你的公网域名和80端口
proxy:
  web:
    - my_app.com
    - my_app.com:80
event:
  post-rebuild:
    - composer install -d=./drupal

如果你更倾向于直接端口映射(绕过Lando反向代理),也可以修改services部分:

name: my_app
recipe: drupal8
config:
  webroot: ./drupal/web
  php: 7.2
  port: '8080'
  drush: ^9
  xdebug: false
services:
  web:
    ports:
      - '80:8080' # 主机80端口直接映射到容器8080端口
event:
  post-rebuild:
    - composer install -d=./drupal

2. 处理Fedora 29的特权端口限制

Linux默认禁止非root用户绑定1-1023端口(包括80),而Lando通常以普通用户运行,所以需要给相关进程授权:

方法一:给Node.js赋予绑定特权端口的权限

因为Lando是基于Node.js开发的,执行以下命令:

sudo setcap 'cap_net_bind_service=+ep' $(which node)

方法二:调整Docker配置(可选)

如果你用的是端口映射方式,也可以修改Docker的daemon.json,让容器允许绑定特权端口:

{
  "userland-proxy": false
}

修改后重启Docker服务:

sudo systemctl restart docker

3. 开放服务器防火墙的80端口

Fedora默认启用firewalld,需要确保80端口对外开放:

sudo firewall-cmd --add-port=80/tcp --permanent
sudo firewall-cmd --reload

4. 检查SELinux限制(如果启用)

如果你的SELinux处于enforcing模式,可能会阻止端口绑定,临时关闭测试:

sudo setenforce 0

如果测试有效,可以永久修改/etc/selinux/config文件,将SELINUX=enforcing改为SELINUX=permissive,然后重启服务器。

5. 重启Lando并验证

执行以下命令重建容器:

lando rebuild -y

重建完成后,用lando proxy list查看代理映射是否包含my_app.com:80,然后直接访问http://my_app.com应该就能正常打开了。

另外,记得确认服务器上没有其他服务占用80端口(比如Apache、Nginx),可以用以下命令检查:

ss -tulpn | grep :80

内容的提问来源于stack exchange,提问作者samuel.molinski

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.11 09:26:53