访问Landscape服务器通知标签页时遇系统错误求助
咱们先从你提供的日志信息入手分析:ValueError: Untrusted redirect to host '1.2.3.4:443' not allowed 这个错误是核心——Landscape的安全机制会拦截未被列入信任列表的重定向目标,你的场景里,用域名abc.xyz.com访问时,通知模块生成的重定向URL指向了IP地址1.2.3.4:443,这个IP不在Landscape的信任主机列表里,所以被拦截了;而用IP直接访问时,重定向目标和访问主机一致,所以能正常工作。
下面是具体的排查和修复步骤:
1. 检查并更新Landscape的信任重定向主机列表
Landscape的appserver配置里有一个allowed-redirect-hosts参数,用来指定允许的重定向目标主机。咱们需要把你的IP和域名都加入这个列表:
- 打开Landscape的服务配置文件(通常路径是
/etc/landscape/service.conf):sudo nano /etc/landscape/service.conf - 找到
[appserver]段落,添加或修改allowed-redirect-hosts字段,把你的域名和IP都加进去:[appserver] allowed-redirect-hosts = abc.xyz.com,1.2.3.4 - 保存并退出编辑器。
2. 确认Landscape的公共主机名配置
确保Landscape的public-hostname参数设置为你日常访问的域名abc.xyz.com,而不是IP地址。如果这个参数是IP,那么用域名访问时,系统可能会生成指向IP的重定向URL,触发安全拦截:
- 可以通过
landscape-config工具重新配置,或者直接修改配置文件里的public-hostname字段:public-hostname = abc.xyz.com
3. 检查反向代理(如果使用)的Host头部传递
如果你用了Nginx之类的反向代理,需要确保代理配置里正确传递了Host头部,这样Landscape才能识别用户访问的域名,生成对应的重定向URL:
- 在Nginx的server配置块里添加:
proxy_set_header Host $host; proxy_set_header X-Forwarded-For $remote_addr; proxy_set_header X-Forwarded-Proto $scheme;
4. 重启Landscape服务
修改配置后,需要重启相关服务让配置生效:
sudo service landscape-appserver restart sudo service landscape-server restart
完成以上步骤后,再用域名访问通知标签页,应该就能正常加载了。如果问题依旧,可以再检查appserver.log是否有新的错误信息,或者确认Let's Encrypt证书的SAN字段是否包含了你的域名(默认会包含,这个概率不大,但可以作为额外排查点)。
内容的提问来源于stack exchange,提问作者Tekchand Dagar

