如何让Yesod听取特定的IP?

时间:2016-05-24 17:51:31

标签: yesod

我编写了一个名为myapp的Yesod Web应用程序,并将其编译(使用stack build)到myapp-exe。现在我想部署它,但我不想使用Keter / scaffolding。 warp过程允许我指定要侦听的端口,但不能指定IP。有没有办法让编译后的可执行文件myapp-exe只能在127.0.0.1上监听?

2 个答案:

答案 0 :(得分:1)

Warp提供了一个名为setHost的函数:

https://s3.amazonaws.com/haddock.stackage.org/lts-5.18/warp-3.2.2/Network-Wai-Handler-Warp.html#v:setHost

您尚未展示如何运行应用,但我猜您需要从run设置切换到runSettings。

答案 1 :(得分:0)

好吧,我应该在回答之前再研究一下。答案是使用runSettings中的Network.Wai.Handler.Warp而不是简单warp

let stts = setPort 12345 $ setHost "127.0.0.1" defaultSettings
runStderrLoggingT $ withSqlitePool dbfile 10 $ \pool -> liftIO $ do
  waiApp <- toWaiApp $ MyApp pool
  runSettings stts waiApp

这允许更多设置,而warp只是一个便利包装。