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
相关产品推荐
相关产品推荐

