[Haskell-cafe] Happstack basic question

Jeremy Shaw jeremy at n-heptane.com
Mon Mar 15 15:13:47 EDT 2010


Neat! I have been wondering how to do that. It is also useful if you want to
run multiple happstack applications on the same machine, but each on a
different IP address.

It would be awesome if this was wrapped up in a more obvious way. I imagine
we would extend the Conf type so that you could optionally specify a list of
IP addresses to listen on.

Unfortunately it is very tricky to implement in a portable way because our
code can not depend on ipv6 being enabled. I just posted a message to
haskell-cafe asking for suggestions.

http://www.haskell.org/pipermail/haskell-cafe/2010-March/074585.html

- jeremy

On Thu, Mar 11, 2010 at 8:35 AM, Martin Kiefel <mk at nopw.de> wrote:

> On Thu, Mar 11, 2010 at 09:24:05AM -0500, Kyle Murphy wrote:
> > You misunderstand his question. He's trying to setup happstack behind a
> > reverse proxy running on the same system, so he needs to be able to bind
> it
> > only to the loopback interface (127.0.0.1), as opposed to all the
> interfaces
> > on the system (thereby making it inaccessible from the network unless
> > accessed through the proxy). I don't know enough about happstack to
> answer
> > his question, but I can see from the documentation you provided that
> there
> > doesn't seem to be any way to specify address to bind to as Dmitry stated
> in
> > his original e-mail.
>
> But I'm doing exactly that.
>
> Here is some of the code:
>
> main = do
>
>  ...
>
>  s <- socket AF_INET Stream defaultProtocol
>  setSocketOption s ReuseAddr 1
>  h <- getHostByName "localhost"
>  let p = toEnum $ port $ httpConf appConf
>  bindSocket s (SockAddrInet p (hostAddress h))
>  listen s 10
>
>  -- start the state system
>  control <- startSystemState' (store appConf) stateProxy
>
>  -- start the http server
>  httpTid <- forkIO $ simpleHTTPWithSocket s (httpConf appConf)
>
>  ...
>
> And then my happstack server is just listening on 127.0.0.1.
>
> To access it, I'm using Apache Proxy.
>
> - Martin
>
> >
> > -R. Kyle Murphy
> > --
> > Curiosity was framed, Ignorance killed the cat.
> >
> >
> > On Thu, Mar 11, 2010 at 07:39, Martin Kiefel <mk at nopw.de> wrote:
> >
> > > Hi Dmitry,
> > >
> > > On Thu, Mar 11, 2010 at 11:38:44AM +0300, Dmitry V'yal wrote:
> > > > Hello haskellers,
> > > >
> > > > I want to host a simple happstack application behind a reverse proxy.
> So
> > > > ideally would be to bind it to localhost only.
> > > >
> > > > According to
> > > >
> > >
> http://hackage.haskell.org/packages/archive/happstack-server/0.4.1/doc/html/Happstack-Server-HTTP-Types.html#t%3AConf
> > > > Conf datatyle has only Port field. Does it mean, there is currently
> no
> > > > way to prevent binding happstack to all available interfaces?
> > >
> > > I think you are looking for simpleHTTPWithSocket [1]. You can use
> > > whatever socket you like.
> > >
> > > >
> > > > Regards,
> > > > Dmitry
> > >
> > > Cheers,
> > > Martin
> > >
> > > [1]
> > >
> http://happstack.com/docs/0.4/happstack-server/Happstack-Server-SimpleHTTP.html#v%3AsimpleHTTPWithSocket
> > > _______________________________________________
> > > Haskell-Cafe mailing list
> > > Haskell-Cafe at haskell.org
> > > http://www.haskell.org/mailman/listinfo/haskell-cafe
> > >
> _______________________________________________
> Haskell-Cafe mailing list
> Haskell-Cafe at haskell.org
> http://www.haskell.org/mailman/listinfo/haskell-cafe
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://www.haskell.org/pipermail/haskell-cafe/attachments/20100315/0e7a7cc3/attachment.html


More information about the Haskell-Cafe mailing list