如何让 Yesod 监听特定 IP?
How to make Yesod listen on a specific IP?
我编写了一个名为 myapp
的 Yesod 网络应用程序,并将其编译(使用 stack build
)为 myapp-exe
。现在我想部署它,但我不想使用 Keter/scaffolding。 warp
程序允许我指定要侦听的端口,但不能指定 IP。有没有办法让编译后的可执行文件 myapp-exe
只在 127.0.0.1 上监听?
Warp 提供了一个名为 setHost 的函数:
你没有展示你是如何 运行 你的应用程序,但我猜你需要从 运行 runSettings 切换。
好吧,我应该在回答之前再研究一些。答案是使用 Network.Wai.Handler.Warp
中的 runSettings
而不是简单的 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
只是一个方便的包装。
我编写了一个名为 myapp
的 Yesod 网络应用程序,并将其编译(使用 stack build
)为 myapp-exe
。现在我想部署它,但我不想使用 Keter/scaffolding。 warp
程序允许我指定要侦听的端口,但不能指定 IP。有没有办法让编译后的可执行文件 myapp-exe
只在 127.0.0.1 上监听?
Warp 提供了一个名为 setHost 的函数:
你没有展示你是如何 运行 你的应用程序,但我猜你需要从 运行 runSettings 切换。
好吧,我应该在回答之前再研究一些。答案是使用 Network.Wai.Handler.Warp
中的 runSettings
而不是简单的 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
只是一个方便的包装。