【问题标题】:Yesod devel server only listening on ipv6Yesod 开发服务器只监听 ipv6
【发布时间】:2011-11-21 02:58:39
【问题描述】:

我正在使用 yesod 0.9.2.2 运行“cabal install && yesod devel”,但它只使用 ipv6 进行监听。有谁知道如何配置它来监听 ipv4 吗?我在 Windows 7 上运行它。

谢谢

【问题讨论】:

  • 您尝试浏览到localhost 吗?我用过yesod devel很多次了,效果很好,我的电脑没什么特别的。
  • 好吧,如果我只是在本地主机上,但我们这里的网络没有启用 ipv6,所以远程计算机无法浏览到我的站点。查看 netstat 我可以看到它只监听我的 ipv6 地址而不是 ipv4
  • @Caleb:开发服务器设计为在本地使用。您是否检查过生产服务器是否也会发生这种情况? (做cabal configure -fproduction)。
  • 我个人认为这是一个功能...ipv4现在应该已经死了。
  • 是的,我确实为生产构建了它,它仍然只在 ipv6 上监听。 @Dan - 同意,但不幸的是,这就是我们生活的世界。

标签: haskell yesod


【解决方案1】:

到目前为止,您描述的症状已经在 BSD 和 Debian 上观察到,但看起来 Windows 也受到了影响。

这是 Yesod 的一个已知问题,或者实际上是 Wasp 的问题,或者更准确地说,是网络库的问题。一个地方可以跟进这个问题是this githup issuecurrent discussion on haskell-lists,这部分是由你的问题引起的。

【讨论】:

  • 谢谢,我会留意这些的。
【解决方案2】:

虽然我目前没有类似的设置来对此进行测试,但您可能会发现,如果有东西在侦听 IPv6 端口 X,并且没有任何东西在同一端口 X 上侦听 IPv4,那么 IPv6 端口将接收连接。 IPv6 服务器将看到来自“IPv6”地址 ::ffff:1.2.3.4 的连接(这称为 IPv4 映射的 IPv6 地址)。内核提供 IPv6 和 IPv4 端点之间的转换。 IPv4 通过网络使用。

我不了解 Windows 7,但某些系统(例如 some Linux 发行版)默认情况下会通过设置特定的 sysctl 来禁用此功能,这意味着服务器需要绑定到单独的 IPv4 和 IPv6 套接字(根据我的经验,这是更可取的选项)。应用程序可以随意覆盖此默认行为。

【讨论】:

    猜你喜欢
    • 2018-05-27
    • 1970-01-01
    • 2012-10-06
    • 2014-01-08
    • 1970-01-01
    • 2022-01-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多