From OpenLiteSpeed Wiki

Revision as of 15:30, 3 October 2014 by Marmstrong (talk | contribs)

This wiki discusses how to add and configure OpenLiteSpeed's PageSpeed module. The PageSpeed module allows OpenLiteSpeed to support Google's PageSpeed optimization system.

For this guide, we assume you already have a working installation of OpenLiteSpeed 1.4.2 or higher. Module support is available in versions 1.3 or higher, but the PageSpeed module is only available and supported starting with version 1.4.2. The PageSpeed module is not added to OpenLiteSpeed installations automatically and so must be built.

Building the LiteSpeed PageSpeed module

Download OpenLiteSpeed 1.4.2 or higher if you have not done so

The PageSpeed module is available starting with OpenLiteSpeed version 1.4.2.

Install OpenLiteSpeed with PageSpeed support

There are some special considerations when building and installing LiteSpeed with the Lua module. If installing a complete system from download, an additional parameter must be specified to LiteSpeed's configure program to indicate Lua module compilation and where the LuaJIT header files exist.

If header files are in a standard directory:

./configure --with-lua=yes ...

Else to specify the LuaJIT header file directory (recommended); e.g., /home/user/LuaJIT-2.0.3/src:

./configure --with-lua=/home/user/LuaJIT-2.0.3/src ...

After installation, the dynamic library is in the system modules directory. Proceed on to registering the module.

Making/remaking the Lua module separately

If your installation of OpenLiteSpeed 1.4 (or higher) does not have Lua support, (e.g., it was not configured properly, or it was later decided to add Lua), the Lua module can not be added later using the general steps for adding modules. It is recommended that you reinstall with Lua support. If you do not wish to do so, though, you can follow the steps below to make the Lua module separately:

  1. Edit the Makefile.f file to correctly specify the location of LuaJIT components such as header files.
  2. Run the command make -f Makefile.f (instead of the default make) to create the library.

Registering the module

Add the Lua module by going to WebAdmin console > Configuration > Server > Modules > Add

Lua Mod Add.png

Enter the name of the module as "mod_lua"

Lua Mod Name.png

Set parameters

A number of user parameters may be specified. Most important is the location of the LuaJIT library if not in the default /usr/local/lib/ directory. Configuring these settings will be covered in the Configuration section below.

The default for the lib parameter is:

lib /usr/local/lib/

If the LuaJIT library is located somewhere else, if can be set as follows:

lib /home/user/LuaJIT-2.0.3/src/

Save the module settings

Lua Mod Save.png

Restart the server

Lua Mod Restart.png

Further configure the module at different levels

The module can be further configured at the virtual host, context, and script handler levels. More specific levels of configuration will always override more general levels. For example, virtual host-level configurations override server-level configurations and context-level configurations override virtual host-level configurations. Configurations are covered in the Configuration section below.


The Lua module executes Lua scripts as a script handler. By convention, Lua scripts are designated with suffix lua.

Add the Lua module as a script handler by going to WebAdmin console > Configuration > Server > Script Handler > Add

Lua Mod ShAdd.png

Specify Suffix "lua", Handler Type "Module Handler", Handler Name "mod_lua"

Lua Mod ShName.png

Save the script handler settings

Lua Mod ShSave.png

NOTE: Make sure after any configuration change the server is restarted.

Create a Lua script hello.lua in a virtual host html directory

ls.say(ls.logtime(), "LiteSpeed: Hello", _VERSION)

The default OpenLiteSpeed installation sets up a Virtual Host named Example mapped to Listener Default at Port 8088 with various files in its html subdirectory. Put the test Lua script here.

Run the Lua script from a browser

Lua Mod Run.png

or alternatively, use curl:

user@host> curl -k -i http://localhost:8088/hello.lua
HTTP/1.1 200 OK
Content-Length: 56
Date: Wed, 16 Jul 2014 15:08:16 GMT
Server: LiteSpeed

Wed 16 Jul 2014 11:08:16 -0400 LiteSpeed: Hello Lua 5.1


Parameters in the WebAdmin Console

  • lib = The location of the LuaJIT library. (Default = /usr/local/lib/
  • maxruntime = The maximum script runtime in millisec. (Default = 0, no limit)


All modules must be registered at the server level. Once a module is registered, it's settings are inherited by more specific setting levels (virtual host, context, and script handler). Configurations can be modified at these more specific levels. Settings at more specific levels always override more general levels. For example, virtual host-level configurations override server-level configurations and context-level configurations override virtual host-level configurations.