Haskell Warp/Wai和HTTPS——如何使它们工作



我在Haskell Servant和Warp中有一个基本的hello-world应用程序。这不是真正的代码,但为了简单起见,让我们假设我正在使用它:

import Network.Wai
import Network.Wai.Handler.Warp
import Servant

personAPI :: Proxy PersonAPI
personAPI = Proxy
server :: Server PersonAPI
server = return people
app :: Application
app = serve personAPI server
serveApp :: IO ()
serveApp = run 80 app

它在服务器上运行良好。使用http。

我没有使用nginx或apache,我按原样运行它,在这一点上它对我来说很好。

但是使用https,它不会加载页面。我已经安装了https证书,但我认为我应该以某种方式设置warp/wai来使用它,因为默认情况下它不会使用它。关于这方面的信息不足-warp/wai和SSL,我什么都没找到。有人能帮我吗?

我想最简单的方法是使用warp-tls库-在TLSSettings中设置证书文件(我会先尝试tlsSettings)并使用runTLS而不是run:

serveApp :: IO ()
serveApp = do
   let tls = tlsSettings "pathToCert" "pathToKey"
   runTLS tls (setPort 443 defaultSettings) app

最新更新