This chapter describes how to configure TUX with the provided scripts.
Most parameters can only be set when TUX is not active. |
The following parameters are set through /proc/sys/net/tux. Note this has changed from the original location of /proc/sys/net/http and /proc/net/http.
Table 3-1. TUX Configuration Parameters
Name | Default | Description |
---|---|---|
serverport | 80 | The port listened to by the main web server |
clientport | 8080 | The port listened to by the userspace http-daemon |
documentroot | /var/www/html | The directory where the web pages are stored. If using the init script /etc/rc.d/init.d/tux, documentroot should be set in /etc/sysconfig/tux as DOCROOT. |
404_page | 404.html | If TUX does not manage to look up a requested page then it first tries to look up the document specified in 404_page. If the 404 page can not be found, the canned 404 message is sent. The file is relative to the document root. |
threads | The number or server-threads, set at most to 1 per CPU | The number of kernel threads (and associated daemon threads) to be used. Can not be greater than the number of CPUs on the system. If using the init script /etc/rc.d/init.d/tux, threads should be set in /etc/sysconfig/tux as TUXTHREADS. |
mode_allowed | S_IROTH | Required permissions for files TUX will process. See "man 2 stat" for all values. |
mode_forbidden | dir+sticky+execute | Files with this permission-mask are "forbidden" and will not be processed by TUX. See "man 2 stat" for all values. |
nonagle | 2 | If set to 0, standard Nagle output packet merging. If set to 1, no Nagle merging of output packets. If set to 2, TCP_CORK-style output packet merging. |
push_all | 0 | If set to 0, may merge subsequent packets. If set to 1, force a packet boundary right after the end of the TUX request. |
compression | 0 | If set to 0, it is disabled. If set to 1, sending gzip compressed data is turned on. See the Section called Compressed Gzip Data Stream for details. |
cgi_uid | -1 | UID as which to run CGI programs. Set by default to the ID for "nobody" in the tux init script. |
cgi_gid | -1 | GID as which to run CGI programs. Set by default to the ID for "nobody" in the tux init script. |
cgiroot | /var/www/tux/cgiroot/ | The directory in which TUX runs CGI programs. Set by default to $DOCROOT in the tux init script. |
cgi_cpu_mask | 0xffffffff | The default value allows CGI scripts to execute on all CPUs. This value can be set to bind newly started CGI scripts to a single CPU or a set of CPUs. The CPUs are represented in a 32-bit bitmask, where bit 1 is CPU#0, bit 2 is CPU#1, etc. This value has not effect on single-processor systems. |
cgi_inherit_cpu | 0 | If set to 1, all newly started CGI scripts inherit the CPU-binding of the CGI-starting TUX thread — all processes started by the CGI script will be bound to the same CPU as the parent CGI. |
max_connect | 1000 | Maximum number of concurrent connections. |
max_header_len | 3000 | Maximum header size in bytes. |
max_output_bandwidth | 0 | Maximum output bandwidth used up by keepalive requests in bytes/sec. The default value of 0 means off or unlimited bandwidth. Can be as low as 1 byte/sec. This parameter replaces max_keepalive_bw. |
max_keepalive | 1000 | Maximum number of open keepalive connections. After having reached max_keepalives connections, TUX zaps old connections based on LRU. |
keepalive_timeout | 0 | Unfinished and should not be used. A per-client-connection timer that will time out if a request does not arrive within a pre-specified time. Timeout value is set in seconds. |
max_object_size | 100MB | Maximum file size TUX is willing to serve. |
Dprintk | 0 | If TUX_DEBUG is turned on, then print out very verbose messages to syslog. Should only be used for debugging purposes. |
ack_pingpong | 1 | Delay TCP ACK for incoming frames in the hopes of a subsequent output frame. Separate ACK will happen nevertheless, if no output frame is generated within a timeout. |
all_userspace | 0 | If set to 1, every complete and valid HTTP request will be bounced to the first user-space module. The user-space module "takes control" over the entire URL space. Then, the user-space module can make a decision to 1) serve a static reply, 2) serve a cached dynamic reply, or 3) create a dynamic reply. If set to 0, all_userspace is disabled. |
application_protocol | 0 | If set to 1, it enables the TUX FTP server. If set to 0, this feature is disabled. Refer to the Section called TUX as an FTP Server for details. |
logentry_align_order | N/A | Currently unused. |
logfile | /var/log/tux | The filename of the TUX binary logfile. Refer to the Section called Log Files in Chapter 2 for more information. |
logging | 1 | If set to 1, logging is enabled. If set to 0, logging is disabled. |
redirect_logging | 1 | Set to 0 to suppress redirected connections. Can be changed at runtime and takes effect immediately. |
referer_logging | 0 | If set to 1, referer logging is enabled and will be automatically printed by tux2w3c if the referer entry is present. If set to 0, referer logging is disabled. |
max_backlog | 2048 | Maximum size of SYN backlog of the TUX listening socket. |
virtual_server | 0 (off) | Turns on mass virtual hosting. Hosts are headers from the browser that are directly turned into $DOCROOT/<Host> 'virtual docroots.' This way any number of hosts can be served by a single TUX server without any performance penalty at all. |
zerocopy_parse | 1 | Use the input packet buffer as a temporary buffer and avoids copying input data. |
defer_accept | 0 (disabled if keepalive_timeout or max_keepalives is set) | If set to 1, then TUX processes will not be woken up on the initial SYN-ACK event of a new TCP connection, but only after the first real data packet has arrived. If set to 0, this feature is disabled. |
If the TUX init script /etc/rc.d/init.d/tux is used, the following parameters can be set in the file /etc/sysconfig/tux (see Table 3-2). They should not be set in /etc/sysctl.conf because the init script will override parameters set in /etc/sysctl.conf. Using the init script is the preferre method for starting TUX.
Table 3-2. /etc/sysconfig/tux parameters
Parameter | Default | Description |
---|---|---|
TUXTHREADS | The number of server-threads, set at most to 1 per CPU | The number of kernel threads (and associated daemon threads) to be used, cannot be greater than the number of CPUs on the system |
DOCROOT | /var/www/html | The document root, the directory where the web pages are stored. |
CGI_UID | nobody | UID (user) as which to run CGI programs. |
CGI_GID | nobody | GID (group) as which to run CGI programs. |
DAEMON_UID | nobody | UID (user) as which the daemon runs. |
DAEMON_GID | nobody | GID (group) as which the daemon runs. |
CGIROOT | /var/www/html | The directory where the CGI programs are stored. CGI programs can be started in the chroot environment by default. Set CGIROOT=/ if you want CGI programs to have access to the whole system. |
TUXMODULES | demo.tux demo2.tux demo3.tux demo4.tux | list of user-space loadable TUX modules, see man 2 tux for more information |
MODULEPATH | / | Path to the user-space loadable TUX modules |
Before starting TUX, the following parameters must be set:
serverport
clientport
DOCROOT
The DOCROOT for TUX must be the same document root directory as Apache or other user-space daemon running as the assistant web server for TUX to properly redirect requests. |