Forum OpenACS Q&A: Response to request for review: TUX and nsd document

Posted by Andrew Piskorski on
Interesting. You're trying to do two rather separate things there, though:

One, use TUX as a buffer between AOLserver and the client. If you change AOLserver only such that it returns HTTP responses to TUX rather than to the end client, and you don't change anything else, then I guess it would work without breaking anything else. Sounds nice and clean and simple.

Two, you're also talking about using TUX to "serve static files" and "Pass .tcl and .adp requests through to AOLserver", and that's a significant change in the application logic, not just an under-the-covers implementation enhancement. For example, ACS 4.x does do access control checking on URLs that map to static files. And then there's the Static Pages module that reads in an HTML file and then post-processes it in order to tack dynamic General Comments onto the end! So that fact that a file is "static" (not a script) does not mean that you can just arbitrarily hand over all responsibility for serving it to TUX without breaking the semantics of your application.

So for that more intrusive feature, you definitely need some fairly smart way to tell TUX just what it's allowed to serve directly and what it must allow AOLserver to process, something much smarter than just letting TUX server everything other than *.tcl and *.adp files.

Of course, by the time a site really needs more performance than a user-space web server can give, I imagine you'd have long since separated out your truly static, no-application-logic-involved content (e.g., graphics) from the stuff that needs ACS access control or other AOLserver processing. (In ACS 4.x land, this means hacking/extending the request processor.)

Also, is having TUX serve static files going to be better than just using nsunix for AOLserver? I thought the whole point of nsunix is that it passes files descriptors around rather than copying actual bytes. Or is it that AOLserver/nsunix can't pass the file descriptor to TUX or any other part of the kernal, but must copy the bytes?

Finally, and I admit I'm curious, are you just pursuing this AOLserver / TUX thing as a cool research project, or do you actually have someone who thinks that a user-space web server isn't going to be fast enough for them?