http¶
Name¶
http — Central server for RPC and the message database
Synopsis¶
http [-c config]
Description¶
http(8gx) is a trivial HTTP server. It understands the special HTTP methods as used by RPC-over-HTTP protocol as used by Outlook, it can serve files verbatim, or forward requests to a FastCGI server such as php-fpm(8).
Options¶
- -c config
Read configuration directives from the given file. If this option is not specified, /etc/gromox/http.cfg will be read if it exists.
- -?
Display option summary.
URI processing order¶
Requests are passed to the mod_rewrite(4gx) module (built-in) to have their URI potentially rewritten.
If a HTTP request is using the methods RPC_IN_DATA or RPC_OUT_DATA, the data stream is handed off to the exchange_emsmdb(4gx) plugin.
Otherwise, HTTP processing modules (HPM) are invoked. Processing ends when one module signals that the request was handled. The order depends on the HPM list (which is fixed): ews, mh_emsmdb, mh_nsp, oxdisco, oab.
Otherwise, the mod_fastcgi(4gx) module (built-in) is invoked. Processing ends if the module handled the request.
Otherwise, the mod_cache(4gx) module (built-in) is invoked. Processing ends if the module handled the request.
Otherwise, the request is rejected.
RPC-over-HTTP¶
RPC-over-HTTP utilizes two special HTTP methods, RPC_IN_DATA and RPC_OUT_DATA. These requests can, similarly to HTTP CONNECT, be very long-lived. The RPC data stream is handled by the included exchange_emsmdb(4gx) plugin.
Configuration directives¶
The usual config file location is /etc/gromox/http.cfg.
- block_interval_auths
- The amount of time a user is blocked from connecting to the service after too many failed logins.Default: 1 minute
- config_file_path
- Colon-separated list of directories which will be scanned when locating further configuration files, especially those used by plugin instances.Default: /etc/gromox/http:/etc/gromox
- context_average_mem
Default: 256K
- context_num
Default: 400
- data_file_path
- Colon-separated list of directories which will be scanned when locating data files.Default: /usr/share/gromox/http
- fastcgi_cache_size
- If the HTTP request to a CGI endpoint uses Chunked Transfer Encoding and the Content-Length field contains a larger value than this limit, the data is buffered in a file.Default: 256K
- fastcgi_exec_timeout
- Maximum execution time for CGI scripts.Default: 10 minutes
- fastcgi_max_size
- If the Content-Length of a HTTP request to a CGI endpoint is larger than this value, the request is rejected.Default: 4M
- host_id
- A unique identifier for this system. It is used for the Server HTTP responses header, for service plugins like exmdb_provider(4gx), which makes use of it for SMTP HELO lines, for DSN report texts, for MIDB database/EML cache. The identifier should only use characters allowed for hostnames.Default: (system hostname)
- hpm_cache_size
- If the HTTP request to a HPM endpoint uses Chunked Transfer Encoding or the Content-Length field contains a larger value than this limit, the data is buffered in a file /tmp/http-%d (%d replaced by internal context id).Default: 512K
- hpm_max_size
- If the Content-Length of a HTTP request to a HPM endpoint is larger than this value, the request is rejected.Default: 4M
- http_auth_times
- The number of login tries a user is allowed before the account is blocked.Default: 10
- http_certificate_passwd
- The password to unlock TLS certificates.Default: (unset)
- http_certificate_path
- Filesystem path to a certificate file for use with encrypted connections. The complete certificate chain should be present (as there is no other config directive to pull CA certs in).Default: (unset)
- http_conn_timeout
- If a HTTP connection stalls for the given period, the connection is terminated.Default: 3 minutes
- http_debug
- If set to 1, prints all incoming and outgoing HTTP traffic to stderr.Default: 0
- http_listen_addr
- AF_INET6 socket address to bind the HTTP service to.Default: ::
- http_listen_port
- The TCP port to expose the HTTP protocol service on.Default: 80
- http_listen_tls_port
- The TCP port to expose implicit-TLS HTTP protocol service (HTTPS) on.Default: (unset)
- http_log_file
- Target for log messages here. Special values: "-" (stderr/syslog depending on parent PID) or "syslog" are recognized.Default: - (auto)
- http_log_level
- Maximum verbosity of logging. 1=crit, 2=error, 3=warn, 4=notice, 5=info, 6=debug.Default: 4 (notice)
- http_private_key_path
- Filesystem path to the key file needed to unlock the TLS certificate.Default: (unset)
- http_support_tls
- This flag controls whether (or not) the server offers TLS at all. The default is false because you need a certificate for this first.Default: false
- http_thread_charge_num
- The maximum number of connections that each thread is allowed to process.Default: 20
- http_thread_init_num
- The minimum number of client processing threads to keep around.Default: 5
- msrpc_debug
- Log every completed RPC call and the return code of the operation in a minimal fashion to stderr. Level 1 emits RPCs with a failure return code, level 2 emits all RPCs. Note the daemon log level needs to be "debug" (6), too.Default: 0
- request_max_mem
The maximum hint size for fragmented RPC PDU requests that will be allowed (C706 §12.6.3.7, MS-RPCE v33 §2.2.2.6).
- tls_min_proto
- The lowest TLS version to offer. Possible values are: tls1.0, tls1.1, tls1.2, and, if supported by the system, tls1.3.Default: tls1.2
- running_identity
- An unprivileged user account to switch the process to after startup. To inhibit the switch, assign the empty value.Default: gromox
- state_path
- Directory for runtime variadic data.Default: /var/lib/gromox
- tcp_mss_size
- Sets the TCP_MAXSEG socket option with the given MSS value for the listening socket(s), cf. tcp(7).Default: 0 (do not limit the MSS)
- user_default_lang
Default: en
Files¶
/usr/lib/gromox/libgxh_*.so: HTTP processing plugins
/usr/lib/gromox/libgxp_*.so: PDU processing plugins
/usr/lib/gromox/libgxs_*.so: service plugins
Normative references¶
MS-RPCE: Remote Procedure Call Protocol Extensions
DCERPC / C706: Technical Standard DCE 1.1: Remote Procedure Call by The Open Group, 1997
See also¶
gromox(7), mod_cache(4gx), mod_fastcgi(4gx), mod_rewrite(4gx)