Improved cross-platform support by trying multiple ps(1) invocations to obtain the unitd command line parameters. Additional error checking detects when this process fails. The first attempt uses `ps -wwo args=COMMAND -p` which has very broad support and has the additional benefit of simplifying the output for more reliable parsing of the process info. If that fails then we fall back to simply `ps`. The parsing of the process info has also changed. Instead of converting '[]' into spaces we now convert them into explicit delimiters (using '^'). This is more reliable as it marks the beginning and the end of the info we care about. Any trailing process information is now ignored (FreeBSD). Additional error handling improves the robustness when starting unitd with a different filename or from a relative path. In this case the control socket and log file detection will fail when running `unitd --help`. Additional error checking and messages are displayed when the control socket cannot be determined. A single warning is shown when the log file cannot be determined.
Unit Tools
This directory contains useful tools for installing, configuring, and managing NGINX Unit. They may not be part of official packages and should be considered experimental.
setup-unit
A script that simplifies installing and configuring an NGINX Unit server for first-time users
setup-unit repo-configconfigures your package manager with the NGINX Unit repository for later installation.setup-unit welcomecreates an initial configuration to serve a welcome web page with NGINX Unit.
unitc
A curl wrapper for managing NGINX Unit configuration
USAGE: unitc [options] URI
- URI specifies the target in Unit's control API, e.g.
/config. - Configuration data is read from stdin.
- jq is used to prettify JSON output, if available.
| Options | |
|---|---|
| filename … | Read configuration data consequently from the specified files instead of stdin. |
| HTTP method | It is usually not required to specify a HTTP method. GET is used to read the configuration. PUT is used when making configuration changes unless a specific method is provided. |
INSERT |
A virtual HTTP method that prepends data when the URI specifies an existing array. The jq tool is required for this option. |
-q | --quiet |
No output to stdout. |
Options are case insensitive and can appear in any order. For example, a
redundant part of the configuration can be identified by its URI, and
followed by delete in a subsequent command.
Local Configuration
For local instances of Unit, the control socket is automatically detected. The error log is monitored; when changes occur, new log entries are shown.
| Options | |
|---|---|
-l | --nolog |
Do not monitor the error log after configuration changes. |
Examples
unitc /config
unitc /control/applications/my_app/restart
unitc /config < unitconf.json
echo '{"*:8080": {"pass": "routes"}}' | unitc /config/listeners
unitc /config/applications/my_app DELETE
unitc /certificates/bundle cert.pem key.pem
Remote Configuration
For remote instances of NGINX Unit, the control socket on the remote host can
be set with the $UNIT_CTRL environment variable. The remote control socket
can be accessed over TCP or SSH, depending on the type of control socket:
ssh://[user@]remote_host[:ssh_port]/path/to/control.sockethttp://remote_host:unit_control_port
Note: SSH is recommended for remote confguration. Consider the security implications of managing remote configuration over plaintext HTTP.
| Options | |
|---|---|
ssh://… |
Specify the remote Unix control socket on the command line. |
http://…URI |
For remote TCP control sockets, the URI may include the protocol, hostname, and port. |
Examples
unitc http://192.168.0.1:8080/status
UNIT_CTRL=http://192.168.0.1:8080 unitc /status
export UNIT_CTRL=ssh://root@unithost/var/run/control.unit.sock
unitc /config/routes
cat catchall_route.json | unitc POST /config/routes
echo '{"match":{"uri":"/wp-admin/*"},"action":{"return":403}}' | unitc INSERT /config/routes