GrahamDumpleton / mod_wsgi-docker

Docker images for Apache/mod_wsgi.
Apache License 2.0
72 stars 36 forks source link

How can I use other Apache modules? #10

Open dAnjou opened 8 years ago

dAnjou commented 8 years ago

So, Apache (or httpd) is very modular which I consider one of its biggest strength. But how can I use 3rd party modules like mod_xsendfile?

GrahamDumpleton commented 8 years ago

You can create a derived Docker image which installs mod_xsendfile, but the image doesn't use the system Apache packages as they do not support HTTP/2. This means you cannot simply install any mod_xsendfile packaged by the Linux distribution. You would instead need to down mod_xsendfile source yourself and build it using the Apache version which has been installed.

That said, there are few issues.

The first is whether I should consider including mod_xsendfile myself since you aren't likely to be the last to ask.

The second is though that depending on your requirements, mod_wsgi in daemon mode (as it runs with this Docker image), has something similar to mod_xsendfile. That is, you can return an empty 200 response with a Location header with a URL path to a subsequent resource to be served up.

So it isn't a file system path and as a result the URL must be able to be mapped by Apache, but it can map to static files. If those static files need to be private and not directly accessible, there is a little bit of extra config required to protect them. The 200/Location mechanism may not be supported by extensions for frameworks for doing this sort of delegation of file serving.

The third is that mod_wsgi-docker is heading towards being marked as deprecated. I have a much better version of the image which does things a lot better and is much more flexible. Depending on how you are using the current image, you may need to tweak some things, but otherwise shouldn't be that hard to move to it when it is marked as ready for use.

So quickest thing initially can do is see whether can use the 200/Location mechanism instead. What WSGI framework are you using and are you using some extension for that which tries to wrap up this functionality, or are you setting headers directly?

dAnjou commented 8 years ago

Thanks for replying.

I wasn't using anything before, so my question came up while evaluating options, in the end I went with httpd's image and installed mod_wsgi and mod_xsendfile using apxs.

I think it's crucial though that an image based on httpd supports other modules.