Configuring file downloads through IBM HTTP Server
Configure IBM® HTTP Server to manage file downloads from Activities, Files, Libraries, Mobile, and Wikis. This approach is more efficient than using IBM WebSphere® Application Server to serve file downloads.
Before you begin
Activities, Files, Libraries, Mobile, and Wikis data must be stored on a shared file system, as described in the Deployment options topic. The Connections Content Manager uses an optional file cache on the file system for serving files through the HTTP server.
If you choose not to configure IBM HTTP Server to download files, you must configure WebSphere Application Server to transfer data synchronously instead of asynchronously. This configuration avoids errors that are related to using too much memory. For more information, see the Excessive native memory use in IBM WebSphere Application Server technote.
About this task
In a default deployment with IBM HTTP Server, file download requests are passed from IBM HTTP Server to WebSphere Application Server. WebSphere Application Server accesses the files in a data directory on the file system and returns them to IBM HTTP Server, which passes them to the browser.
When large numbers of users are downloading files, this deployment is inefficient, partly because WebSphere Application Server has a limited thread pool that is tuned for short-lived transactions. In addition, WebSphere Application Server is optimized for Java™ Platform, Enterprise Edition applications and not for file downloads. In this type of deployment, you might have to create a cluster to handle downloads, especially if you have slow transfer rates.
Configuring IBM HTTP Server to download files makes downloading much more efficient, because IBM HTTP Server is designed specifically for serving files. This configuration leaves WebSphere Application Server to carry out tasks such as security checking and cache validation.
To configure this environment, install an add-on module that directs IBM HTTP Server to download files. When the module is installed, download requests are passed from IBM HTTP Server to the WebSphere Application Server. But instead of responding by downloading the file, WebSphere Application Server adds a special header to its response. The add-on module recognizes the header and directs IBM HTTP Server to download the file.
This configuration requires making the Files, Mobile, and Wikis data directories available to IBM HTTP Server by using an alias. (Optionally, you can also make available the content cache directory from Connections Content Manager.) This configuration creates a security concern, so you must configure the access control at the IBM HTTP Server level. After you configure security, access to the data through IBM HTTP Server is denied unless a specific variable is set. Requests to the applications on WebSphere Application Server are then configured to set the variable. In other words, only requests that pass through WebSphere Application Server can access the data directory, with WebSphere Application Server acting as the authorizer.
If you use the add-on module, you must use an IBM HTTP Server address for the IBM Connections inter-service URL. For information on setting an inter-service URL, see the Troubleshooting inter-server communication topic.
To configure IBM HTTP Server to download files, complete the following steps:
Procedure
What to do next
- If you get a permission denied error when you try to download a file, IBM HTTP Server might not have access to the content. You can temporarily
disable security on the directory, and ensure you can access it directly first, then re-enable
security. You can determine whether WebSphere
Application Server or IBM HTTP Server is encountering an issue
by the error page that is displayed, and by the path. If IBM
HTTP Server is having a problem with the module that started, the path includes
/<alias>
. - If you get log errors about loading the module, make sure that it is only loaded once. Also, check that you selected the correct binary, and that you are using a supported operating system.
- If it works for HTTP but not HTTPS (or vice versa), make sure that the configuration lines are in a global context or in each virtual host, depending on your setup.