This chapter describes how to configure TUX via the available TUX parameters.
![]() | Warning |
---|---|
Most parameters can only be set when TUX is not active. |
![]() | Note |
---|---|
CGI_UID and CGI_GID are no longer available. All TUX threads are executed with DAEMON_UID and DAEMON_GID. |
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 | No longer available. To change the TUX HTTP server port, use the command echo 'http://0.0.0.0:80' > /proc/net/tux/0/listen/0, where 80 is the port number. |
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. |
http_subdocroot | No value set by default | The directory, relative to the documentroot, where the web pages are stored. TUX defaults to using documentroot if http_subdocroot has no value. |
ftp_subdocroot | No value set by default | The directory, relative to the documentroot, where the files to be served by the FTP server are stored. TUX defaults to using the document root defined for the HTTP server if ftp_subdocroot has no value. |
ftp_log_retr_only | 0 | If set to 0, TUX will log every other command as well. If set to 1, TUX will only log RETR FTP commands to cut down the log size. |
ftp_wait_close | 1 | If set to 1, TUX will wait for data socket to close before sending completion message to command socket. Certain clients (for example, lynx) get confused by TUX's high level of asynchronity. This setting slows down FTP RETR downloads and directory listings and increases packet count, but it works around broken FTP clients. If set to 0, TUX will not wait for the FTP client to notice the closed data socket. |
ftp_login_message | 0 | If set to 1, the number of users that are logged in and the bandwidth currently served by TUX is shown after logging in to the FTP server. If set to 0, this information is not shown. |
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. |
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 (per connection) 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 | 0 | 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. Refer to the section called Mass Virtual Hosting for details. |
mass_hosting_hash | 0 (off) | If virtual_server is enabled, this parameter modifies the hostname mapping to be more effective for a large number of hosts. Refer to the section called Mass Virtual Hosting for details. |
strip_host_tail | 0 (off) | If virtual_server is enabled, this parameter strips off hostname components. Refer to the section called Mass Virtual Hosting for details. |
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. |
http_dir_indexing | 0 (disabled) | If set to 1, TUX will list files in readable directories if an index file does not exist. |
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 preferred 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. |
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. |
MAX_KEEPALIVE_TIMEOUT | 30 | Timeout value for each HTTP connection. Use this to prevent connection hangs. |
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 |
After starting TUX, the /proc/net/tux directory contains the file stat. This file contains statistics on every allocated request structure. As this works even if TUX_DEBUG is turned off, this should help debugging things a bit more. It can also be used to calculate file download status. For example, TUX/FTP - the 100*f_pos/filelen gives the current progress of download.
It is possible to bind the logger thread to any particular CPU (or group of CPUs), so you can localize IO, via /proc/net/tux/log_cpu_mask The default is to run on any CPU.
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. |