UWSGI_RACK(1)

๐Ÿ“ฆ
version 2.0.31+2+0.0.3 ยท 3 versions
, in ubuntu resolute, ubuntu stonking

โœจ UWSGI_RACK(1) โœจ

okay bestie, welcome to uwsgi_rack ๐Ÿ’… this is the manual page for it, filed under User Commands, and it's genuinely one of those pages. grab a strawberry drink ๐Ÿ“, we're going through it together.


๐ŸŽ€ NAME ๐ŸŽ€

uwsgi_rack โ€” fast (pure C), self-healing, developer-friendly WSGI server ๐Ÿฆ‹

like. it's a server. it's in pure C. it heals itself. it's nice to devs. that's the whole vibe. no cap.


๐ŸŒธ SYNOPSIS ๐ŸŒธ

uwsgi-core [options...]

that's it. that's the whole thing. you run it and then you just. keep adding options. forever. iykyk. ๐Ÿ’€


๐Ÿ’– DESCRIPTION ๐Ÿ’–

so this whole section is basically the giant menu of socket-binding options and process-control options and honestly it's giving "all-you-can-eat buffet but make it sysadmin". every single flag is listed below, in order, no skipping, because i love you and i want you to actually understand it. ๐Ÿซถ

๐ŸŒˆ sockets, but make it a whole personality ๐ŸŒˆ

  • -s, --socket โ€” bind to the specified UNIX/TCP socket using the default protocol โœจ
  • -s, --uwsgi-socket โ€” bind to the specified UNIX/TCP socket using the uwsgi protocol
  • --suwsgi-socket โ€” bind to the specified UNIX/TCP socket using the uwsgi protocol over SSL ๐Ÿ”’
  • --ssl-socket โ€” bind to the specified UNIX/TCP socket using the uwsgi protocol over SSL ๐Ÿ”’ (yes it's basically the same energy as the one above, that's just how it is bestie)
  • --http-socket โ€” bind to the specified UNIX/TCP socket using the HTTP protocol ๐ŸŒ
  • --http-socket-modifier1 โ€” force the specified modifier1 when using HTTP protocol
  • --http-socket-modifier2 โ€” force the specified modifier2 when using HTTP protocol
  • --http11-socket โ€” bind to the specified UNIX/TCP socket using HTTP 1.1 (Keep-Alive) protocol ๐Ÿ‘‘
  • --https-socket โ€” bind to the specified UNIX/TCP socket using HTTPS protocol ๐Ÿ”
  • --https-socket-modifier1 โ€” force the specified modifier1 when using HTTPS protocol
  • --https-socket-modifier2 โ€” force the specified modifier2 when using HTTPS protocol
  • --fastcgi-socket โ€” bind to the specified UNIX/TCP socket using FastCGI protocol โšก
  • --fastcgi-nph-socket โ€” bind to the specified UNIX/TCP socket using FastCGI protocol (nph mode)
  • --fastcgi-modifier1 โ€” force the specified modifier1 when using FastCGI protocol
  • --fastcgi-modifier2 โ€” force the specified modifier2 when using FastCGI protocol
  • --scgi-socket โ€” bind to the specified UNIX/TCP socket using SCGI protocol
  • --scgi-nph-socket โ€” bind to the specified UNIX/TCP socket using SCGI protocol (nph mode)
  • --scgi-modifier1 โ€” force the specified modifier1 when using SCGI protocol
  • --scgi-modifier2 โ€” force the specified modifier2 when using SCGI protocol
  • --raw-socket โ€” bind to the specified UNIX/TCP socket using RAW protocol ๐Ÿงš
  • --raw-modifier1 โ€” force the specified modifier1 when using RAW protocol
  • --raw-modifier2 โ€” force the specified modifier2 when using RAW protocol
  • --puwsgi-socket โ€” bind to the specified UNIX/TCP socket using persistent uwsgi protocol (puwsgi) ๐ŸŒ€
  • --protocol โ€” force the specified protocol for default sockets
  • --socket-protocol โ€” force the specified protocol for default sockets (twinning with the one above, we love consistency)
  • --shared-socket โ€” create a shared socket for advanced jailing or ipc ๐Ÿ”—
  • --undeferred-shared-socket โ€” create a shared socket for advanced jailing or ipc (undeferred mode)

๐Ÿ”ฅ workers, processes & the whole harakiri situation ๐Ÿ”ฅ

  • -p, --processes โ€” spawn the specified number of workers/processes ๐Ÿง‘๐Ÿณ
  • -p, --workers โ€” spawn the specified number of workers/processes (same energy, different spelling, both valid)
  • --thunder-lock โ€” serialize accept() usage (if possible) โšก
  • -t, --harakiri โ€” set harakiri timeout ๐Ÿ—ก๏ธ
  • --harakiri-verbose โ€” enable verbose mode for harakiri
  • --harakiri-graceful-timeout โ€” interval between graceful harakiri attempt and a sigkill
  • --harakiri-graceful-signal โ€” use this signal instead of sigterm for graceful harakiri attempts
  • --harakiri-queue-threshold โ€” only trigger harakiri if queue is greater than this threshold
  • --harakiri-no-arh โ€” do not enable harakiri during after-request-hook
  • --no-harakiri-arh โ€” do not enable harakiri during after-request-hook
  • --no-harakiri-after-req-hook โ€” do not enable harakiri during after-request-hook (three names, one job, iconic honestly)
  • --backtrace-depth โ€” set backtrace depth ๐Ÿชœ
  • --mule-harakiri โ€” set harakiri timeout for mule tasks ๐Ÿด

๐Ÿ“œ config loading & the pluggable system ๐Ÿ“œ

  • -x, --xmlconfig โ€” load config from xml file
  • -x, --xml โ€” load config from xml file (same thing, shorter name, we stan options)
  • --config โ€” load configuration using the pluggable system ๐Ÿ”Œ
  • --fallback-config โ€” re-exec uwsgi with the specified config when exit code is 1
  • --strict โ€” enable strict mode (placeholder cannot be used) โš ๏ธ
  • --skip-zero โ€” skip check of file descriptor 0
  • --skip-atexit โ€” skip atexit hooks (ignored by the master)
  • --skip-atexit-teardown โ€” skip atexit teardown (ignored by the master)

๐ŸŽ€ placeholders, custom options & the opt-logic situation ๐ŸŽ€

  • -S, --set โ€” set a placeholder or an option
  • --set-placeholder โ€” set a placeholder
  • --set-ph โ€” set a placeholder (short king version)
  • --get โ€” print the specified option value and exit ๐Ÿ–จ๏ธ
  • --declare-option โ€” declare a new uWSGI custom option
  • --declare-option2 โ€” declare a new uWSGI custom option (non-immediate)
  • --resolve โ€” place the result of a dns query in the specified placeholder, sytax: placeholder=name (immediate option) ๐ŸŒ
  • --for โ€” (opt logic) for cycle ๐Ÿ”
  • --for-glob โ€” (opt logic) for cycle (expand glob)
  • --for-times โ€” (opt logic) for cycle (expand the specified num to a list starting from 1)
  • --for-readline โ€” (opt logic) for cycle (expand the specified file to a list of lines)
  • --endfor โ€” (opt logic) end for cycle
  • --end-for โ€” (opt logic) end for cycle
  • --if-opt โ€” (opt logic) check for option
  • --if-not-opt โ€” (opt logic) check for option
  • --if-env โ€” (opt logic) check for environment variable
  • --if-not-env โ€” (opt logic) check for environment variable
  • --ifenv โ€” (opt logic) check for environment variable
  • --if-reload โ€” (opt logic) check for reload
  • --if-not-reload โ€” (opt logic) check for reload
  • --if-hostname โ€” (opt logic) check for hostname
  • --if-not-hostname โ€” (opt logic) check for hostname
  • --if-hostname-match โ€” (opt logic) try to match hostname against a regular expression ๐Ÿ”
  • --if-not-hostname-match โ€” (opt logic) try to match hostname against a regular expression
  • --if-exists โ€” (opt logic) check for file/directory existence
  • --if-not-exists โ€” (opt logic) check for file/directory existence
  • --ifexists โ€” (opt logic) check for file/directory existence
  • --if-plugin โ€” (opt logic) check for plugin
  • --if-not-plugin โ€” (opt logic) check for plugin
  • --ifplugin โ€” (opt logic) check for plugin
  • --if-file โ€” (opt logic) check for file existence
  • --if-not-file โ€” (opt logic) check for file existence
  • --if-dir โ€” (opt logic) check for directory existence
  • --if-not-dir โ€” (opt logic) check for directory existence
  • --ifdir โ€” (opt logic) check for directory existence
  • --if-directory โ€” (opt logic) check for directory existence
  • --endif โ€” (opt logic) end if
  • --end-if โ€” (opt logic) end if
  • --blacklist โ€” set options blacklist context ๐Ÿ–ค
  • --end-blacklist โ€” clear options blacklist context
  • --whitelist โ€” set options whitelist context ๐Ÿค
  • --end-whitelist โ€” clear options whitelist context

๐Ÿ’… errors, and how much you want to hear about them ๐Ÿ’…

  • --ignore-sigpipe โ€” do not report (annoying) SIGPIPE ๐Ÿ™ˆ
  • --ignore-write-errors โ€” do not report (annoying) write()/writev() errors
  • --write-errors-tolerance โ€” set the maximum number of allowed write errors (default: no tolerance)
  • --write-errors-exception-only โ€” only raise an exception on write errors giving control to the app itself
  • --disable-write-exception โ€” disable exception generation on write()/writev()

๐Ÿงš config templating & injection ๐Ÿงš

  • --inherit โ€” use the specified file as config template
  • --include โ€” include the specified file as immediate configuration
  • --inject-before โ€” inject a text file before the config file (advanced templating) โœจ
  • --inject-after โ€” inject a text file after the config file (advanced templating) โœจ

๐Ÿ‘‘ daemonizing, and controlling your little instances ๐Ÿ‘‘

  • -d, --daemonize โ€” daemonize uWSGI ๐Ÿ˜ด
  • --daemonize2 โ€” daemonize uWSGI after app loading
  • --stop โ€” stop an instance ๐Ÿ›‘
  • --reload โ€” reload an instance ๐Ÿ”„
  • --pause โ€” pause an instance โธ๏ธ
  • --suspend โ€” suspend an instance
  • --resume โ€” resume an instance โ–ถ๏ธ
  • --connect-and-read โ€” connect to a socket and wait for data from it ๐Ÿ”Œ
  • --extract โ€” fetch/dump any supported address to stdout ๐Ÿ“ค

๐ŸŒธ tuning, buffers & memory vibes ๐ŸŒธ

  • -l, --listen โ€” set the socket listen queue size
  • -v, --max-vars โ€” set the amount of internal iovec/vars structures
  • --max-apps โ€” set the maximum number of per-worker applications
  • -b, --buffer-size โ€” set internal buffer size
  • -m, --memory-report โ€” enable memory report ๐Ÿ“Š
  • --profiler โ€” enable the specified profiler
  • -c, --cgi-mode โ€” force CGI-mode for plugins supporting it
  • -a, --abstract-socket โ€” force UNIX socket in abstract mode (Linux only) ๐Ÿง
  • -C, --chmod-socket โ€” chmod-socket
  • -C, --chmod โ€” chmod-socket (same job, shorter name)
  • --chown-socket โ€” chown unix sockets
  • --umask โ€” set umask
  • --freebind โ€” put socket in freebind mode
  • --map-socket โ€” map sockets to specific workers ๐Ÿ—บ๏ธ

๐Ÿซถ threads, process names & being perceived ๐Ÿซถ

  • -T, --enable-threads โ€” enable threads (stub option this is true by default) ๐Ÿงต
  • --no-threads-wait โ€” do not wait for threads cancellation on quit/reload
  • --auto-procname โ€” automatically set processes name to something meaningful ๐Ÿท๏ธ
  • --procname-prefix โ€” add a prefix to the process names
  • --procname-prefix-spaced โ€” add a spaced prefix to the process names
  • --procname-append โ€” append a string to process names
  • --procname โ€” set process names
  • --procname-master โ€” set master process name
  • -i, --single-interpreter โ€” do not use multiple interpreters (where available)
  • --need-app โ€” exit if no app can be loaded โš ๏ธ
  • -M, --master โ€” enable master process ๐Ÿ‘‘
  • --honour-stdin โ€” do not remap stdin to /dev/null

๐ŸŒˆ the Emperor & its vassals (yes this is real, yes it's a whole saga) ๐ŸŒˆ

  • --emperor โ€” run the Emperor ๐Ÿ‘‘
  • --emperor-proxy-socket โ€” force the vassal to became an Emperor proxy
  • --emperor-wrapper โ€” set a binary wrapper for vassals
  • --emperor-wrapper-override โ€” set a binary wrapper for vassals to try before the default one
  • --emperor-wrapper-fallback โ€” set a binary wrapper for vassals to try as a last resort
  • --emperor-nofollow โ€” do not follow symlinks when checking for mtime ๐Ÿ”—
  • --emperor-procname โ€” set the Emperor process name
  • --emperor-freq โ€” set the Emperor scan frequency (default 3 seconds) โฑ๏ธ
  • --emperor-required-heartbeat โ€” set the Emperor tolerance about heartbeats ๐Ÿ’“
  • --emperor-curse-tolerance โ€” set the Emperor tolerance about cursed vassals ๐Ÿ’€
  • --emperor-pidfile โ€” writes the Emperor's pid into the file you specify, bestie ๐Ÿ’–
  • --emperor-tyrant โ€” puts the Emperor into Tyrant mode ๐Ÿ‘‘
  • --emperor-tyrant-nofollow โ€” in Tyrant mode, do not follow symlinks when checking for uid/gid ๐Ÿšซ๐Ÿ”—
  • --emperor-stats โ€” runs the Emperor stats server โœจ
  • --emperor-stats-server โ€” runs the Emperor stats server (same vibe, same job) ๐Ÿ“Š
  • --early-emperor โ€” spawns the emperor as soon as possible, no waiting around ๐Ÿƒโ€โ™€๏ธ๐Ÿ’จ
  • --emperor-broodlord โ€” runs the emperor in BroodLord mode ๐Ÿ‰
  • --emperor-throttle โ€” sets the throttling level (in milliseconds) for bad behaving vassals, default 1000 โณ
  • --emperor-max-throttle โ€” sets the max throttling level (in milliseconds) for bad behaving vassals, default 3 minutes ๐Ÿ›‘
  • --emperor-magic-exec โ€” prefixes vassals config files with exec:// if they have the executable bit ๐Ÿช„
  • --emperor-on-demand-extension โ€” searches for a text file (vassal name + extension) containing the on demand socket name ๐Ÿ”
  • --emperor-on-demand-ext โ€” searches for a text file (vassal name + extension) containing the on demand socket name ๐Ÿ”
  • --emperor-on-demand-directory โ€” enables on demand mode binding to the unix socket in the specified directory, named like the vassal + .socket ๐Ÿงฆ
  • --emperor-on-demand-dir โ€” enables on demand mode binding to the unix socket in the specified directory, named like the vassal + .socket ๐Ÿงฆ
  • --emperor-on-demand-exec โ€” uses the output of the specified command as on demand socket name; the vassal name is passed as the only argument ๐Ÿซก
  • --emperor-extra-extension โ€” allows the specified extension in the Emperor; vassal will be called with --config ๐ŸŒŸ
  • --emperor-extra-ext โ€” allows the specified extension in the Emperor; vassal will be called with --config ๐ŸŒŸ
  • --emperor-no-blacklist โ€” disables the Emperor blacklisting subsystem ๐Ÿšซ๐Ÿ“
  • --emperor-use-clone โ€” uses clone() instead of fork(), passing the specified unshare() flags ๐Ÿงฌ
  • --emperor-graceful-shutdown โ€” uses vassals graceful shutdown during ragnarok ๐ŸŒ…
  • --emperor-cap โ€” sets vassals capability ๐ŸŽฉ
  • --vassals-cap โ€” sets vassals capability ๐ŸŽฉ
  • --vassal-cap โ€” sets vassals capability ๐ŸŽฉ
  • --imperial-monitor-list โ€” lists enabled imperial monitors ๐Ÿ‘€
  • --imperial-monitors-list โ€” lists enabled imperial monitors ๐Ÿ‘€
  • --vassals-inherit โ€” adds config templates to vassals config, uses --inherit ๐Ÿ“Ž
  • --vassals-include โ€” includes config templates to vassals config, uses --include instead of --inherit ๐Ÿ“Ž
  • --vassals-inherit-before โ€” adds config templates to vassals config, uses --inherit, parses before the vassal file โฎ๏ธ
  • --vassals-include-before โ€” includes config templates to vassals config, uses --include instead of --inherit, parses before the vassal file โฎ๏ธ
  • --vassals-start-hook โ€” runs the specified command before each vassal starts ๐Ÿš€
  • --vassals-stop-hook โ€” runs the specified command after vassal's death ๐Ÿชฆ
  • --vassal-sos โ€” asks emperor for reinforcement when overloaded ๐Ÿ†˜
  • --vassal-sos-backlog โ€” asks emperor for sos if backlog queue has more items than the value specified ๐Ÿ“ฌ
  • --vassals-set โ€” automatically sets the specified option (via --set) for every vassal ๐Ÿ› ๏ธ
  • --vassal-set โ€” automatically sets the specified option (via --set) for every vassal ๐Ÿ› ๏ธ
  • --heartbeat โ€” announces healthiness to the emperor ๐Ÿ’“
  • --reload-mercy โ€” sets the maximum time (in seconds) we wait for workers and other processes to die during reload/shutdown โฑ๏ธ
  • --worker-reload-mercy โ€” sets the maximum time (in seconds) a worker can take to reload/shutdown, default is 60 โฑ๏ธ
  • --mule-reload-mercy โ€” sets the maximum time (in seconds) a mule can take to reload/shutdown, default is 60 โฑ๏ธ
  • --exit-on-reload โ€” forces exit even if a reload is requested ๐Ÿšช
  • --die-on-term โ€” exits instead of brutal reload on SIGTERM ๐Ÿ’€
  • --force-gateway โ€” forces the spawn of the first registered gateway without a master ๐ŸŒ‰
  • -h|--help โ€” shows this help ๐Ÿ†˜
  • -h|--usage โ€” shows this help ๐Ÿ†˜
  • --print-sym โ€” prints content of the specified binary symbol ๐Ÿ”ฃ
  • --print-symbol โ€” prints content of the specified binary symbol ๐Ÿ”ฃ
  • -r|--reaper โ€” calls waitpid(-1,...) after each request to get rid of zombies ๐ŸงŸ
  • -R|--max-requests โ€” reloads workers after the specified amount of managed requests ๐Ÿ”„
  • --max-requests-delta โ€” adds (worker_id * delta) to the max_requests value of each worker โž•
  • --min-worker-lifetime โ€” number of seconds a worker must run before being reloaded, default is 10 โณ
  • --max-worker-lifetime โ€” reloads workers after the specified amount of seconds, default is disabled ๐Ÿšซ
  • --max-worker-lifetime-delta โ€” adds (worker_id * delta) seconds to the max_worker_lifetime value of each worker โž•
  • -z|--socket-timeout โ€” sets internal sockets timeout โฐ
  • --no-fd-passing โ€” disables file descriptor passing ๐Ÿšซ๐Ÿ“
  • --locks โ€” creates the specified number of shared locks ๐Ÿ”
  • --lock-engine โ€” sets the lock engine โš™๏ธ
  • --ftok โ€” sets the ipcsem key via ftok() for avoiding duplicates ๐Ÿ”‘
  • --persistent-ipcsem โ€” does not remove ipcsem's on shutdown ๐Ÿงท
  • -A|--sharedarea โ€” creates a raw shared memory area of specified pages; note: it supports keyval too ๐Ÿง 
  • --safe-fd โ€” does not close the specified file descriptor ๐Ÿ›ก๏ธ
  • --fd-safe โ€” does not close the specified file descriptor ๐Ÿ›ก๏ธ
  • --cache โ€” creates a shared cache containing given elements ๐Ÿ—ƒ๏ธ
  • --cache-blocksize โ€” sets cache blocksize ๐Ÿงฑ
  • --cache-store โ€” enables persistent cache to disk ๐Ÿ’พ
  • --cache-store-sync โ€” sets frequency of sync for persistent cache ๐Ÿ”„
  • --cache-no-expire โ€” disables auto sweep of expired items ๐Ÿงน๐Ÿšซ
  • --cache-expire-freq โ€” sets the frequency of cache sweeper scans, default 3 seconds โฒ๏ธ
  • --cache-report-freed-items โ€” constantly reports the cache item freed by the sweeper; use only for debug ๐Ÿ›
  • --cache-udp-server โ€” binds the cache udp server (used only for set/update/delete) to the specified socket ๐Ÿ“ก
  • --cache-udp-node โ€” sends cache update/deletion to the specified cache udp server ๐Ÿ“ค
  • --cache-sync โ€” copies the whole content of another uWSGI cache server on server startup ๐Ÿ“ฆ
  • --cache-use-last-modified โ€” updates last_modified_at timestamp on every cache item modification, default is disabled ๐Ÿ•’
  • --add-cache-item โ€” adds an item in the cache โž•
  • --load-file-in-cache โ€” loads a static file in the cache ๐Ÿ“„
  • --load-file-in-cache-gzip โ€” loads a static file in the cache with gzip compression ๐Ÿ—œ๏ธ
  • --cache2 โ€” creates a new generation shared cache (keyval syntax) โœจ
  • --queue โ€” enables shared queue ๐Ÿ“ฅ
  • --queue-blocksize โ€” sets queue blocksize ๐Ÿงฑ
  • --queue-store โ€” enables persistent queue to disk ๐Ÿ’พ
  • --queue-store-sync โ€” sets frequency of sync for persistent queue ๐Ÿ”„
  • -Q|--spooler โ€” runs a spooler on the specified directory ๐Ÿ—‚๏ธ
  • --spooler-external โ€” maps spoolers requests to a spooler directory managed by an external instance ๐ŸŒ
  • --spooler-ordered โ€” tries to order the execution of spooler tasks ๐Ÿ“‹
  • --spooler-chdir โ€” chdir() to specified directory before each spooler task ๐Ÿ“
  • --spooler-processes โ€” sets the number of processes for spoolers ๐Ÿ‘ฏ
  • --spooler-quiet โ€” does not be verbose with spooler tasks ๐Ÿคซ
  • --spooler-max-tasks โ€” sets the maximum number of tasks to run before recycling a spooler โ™ป๏ธ
  • --spooler-harakiri โ€” sets harakiri timeout for spooler tasks ๐Ÿ—ก๏ธ
  • --spooler-frequency โ€” sets spooler frequency ๐Ÿ“ถ
  • --spooler-freq โ€” sets spooler frequency ๐Ÿ“ถ
  • --mule โ€” add a mule ๐Ÿซ
  • --mules โ€” adds the specified number of mules ๐Ÿซ๐Ÿซ
  • --farm โ€” add a mule farm ๐Ÿด
  • --mule-msg-size โ€” sets mule message buffer size ๐Ÿ“จ
  • --signal โ€” sends a uwsgi signal to a server ๐Ÿ“ถ
  • --signal-bufsize โ€” sets buffer size for signal queue ๐Ÿ“ฆ
  • --signals-bufsize โ€” sets buffer size for signal queue ๐Ÿ“ฆ
  • --signal-timer โ€” adds a timer, syntax: <signal> <seconds> โฒ๏ธ
  • --timer โ€” adds a timer, syntax: <signal> <seconds> โฒ๏ธ
  • --signal-rbtimer โ€” adds a redblack timer, syntax: <signal> <seconds> ๐ŸŒณ
  • --rbtimer โ€” adds a redblack timer, syntax: <signal> <seconds> ๐ŸŒณ
  • --rpc-max โ€” maximum number of rpc slots, default: 64 ๐Ÿ“ž
  • -L|--disable-logging โ€” disables request logging ๐Ÿšซ๐Ÿ“
  • --flock โ€” locks the specified file before starting, exits if locked ๐Ÿ”’
  • --flock-wait โ€” locks the specified file before starting, waits if locked โณ๐Ÿ”’
  • --flock2 โ€” locks the specified file after logging/daemon setup, exits if locked ๐Ÿ”’
  • --flock-wait2 โ€” locks the specified file after logging/daemon setup, waits if locked โณ๐Ÿ”’
  • --pidfile โ€” creates pidfile before privileges drop ๐Ÿ“
  • --pidfile2 โ€” creates pidfile after privileges drop ๐Ÿ“
  • --safe-pidfile โ€” creates safe pidfile before privileges drop ๐Ÿ›ก๏ธ๐Ÿ“
  • --safe-pidfile2 โ€” creates safe pidfile after privileges drop ๐Ÿ›ก๏ธ๐Ÿ“
  • --chroot โ€” chroot() to the specified directory ๐Ÿฐ
  • --pivot-root โ€” pivot_root() to the specified directories; new_root and put_old must be separated with a space ๐Ÿ”„
  • --pivot_root โ€” pivot_root() to the specified directories; new_root and put_old must be separated with a space ๐Ÿ”„
  • --uid โ€” setuid to the specified user/uid ๐Ÿ‘ค
  • --gid โ€” setgid to the specified group/gid ๐Ÿ‘ฅ
  • --add-gid โ€” adds the specified group id to the process credentials โž•๐Ÿ‘ฅ
  • --immediate-uid โ€” setuid to the specified user/uid IMMEDIATELY โšก๐Ÿ‘ค
  • --immediate-gid โ€” setgid to the specified group/gid IMMEDIATELY โšก๐Ÿ‘ฅ
  • --no-initgroups โ€” disables additional groups set via initgroups() ๐Ÿšซ๐Ÿ‘ฅ
  • --cap โ€” sets process capability ๐ŸŽฉ
  • --unshare โ€” unshare() part of the processes and puts it in a new namespace ๐Ÿงฌ
  • --unshare2 โ€” unshare() part of the processes and puts it in a new namespace after rootfs change ๐Ÿงฌ
  • --setns-socket โ€” exposes a unix socket returning namespace fds from /proc/self/ns ๐Ÿ”Œ
  • --setns-socket-skip โ€” skips the specified entry when sending setns file descriptors โญ๏ธ
  • --setns-skip โ€” skips the specified entry when sending setns file descriptors โญ๏ธ
  • --setns โ€” joins a namespace created by an external uWSGI instance ๐Ÿค
  • --setns-preopen โ€” opens /proc/self/ns as soon as possible and caches fds โšก๐Ÿ“‚
  • --jailed โ€” flags this instance as jailed, which forces those post_jail hooks to actually run ๐Ÿซถ
  • --refork โ€” does a fresh fork() after privileges drop. Jailing systems love this one โœจ
  • --re-fork โ€” same energy as --refork: fork() again after privileges drop. Jailing systems, this is for you ๐ŸŽ€
  • --refork-as-root โ€” fork() again before privileges drop. Yep, still for jailing systems ๐Ÿ’…
  • --re-fork-as-root โ€” literally the same thing as --refork-as-root: another fork() before privileges drop. Jailing systems stay winning โœจ
  • --refork-post-jail โ€” fork() again after jailing. Jailing systems, you already know ๐Ÿ˜Œ
  • --re-fork-post-jail โ€” the twin of --refork-post-jail: fork() again after jailing. Jailing systems ๐Ÿซถ

  • --hook-asap โ€” run the hook you gave it as soon as possible โšก
  • --hook-pre-jail โ€” run the specified hook before jailing ๐Ÿ”’
  • --hook-post-jail โ€” run the specified hook after jailing ๐Ÿ”“
  • --hook-in-jail โ€” run the specified hook inside the jail, after initialization ๐Ÿ 
  • --hook-as-root โ€” run the specified hook before privileges drop ๐Ÿ‘‘
  • --hook-as-user โ€” run the specified hook after privileges drop ๐Ÿ™‹
  • --hook-as-user-atexit โ€” run the specified hook right before the app exits and reloads ๐Ÿšช
  • --hook-pre-app โ€” run the specified hook before the app loads ๐Ÿ“ฆ
  • --hook-post-app โ€” run the specified hook after the app loads ๐ŸŽ‰
  • --hook-post-fork โ€” run the specified hook after each fork ๐Ÿด
  • --hook-accepting โ€” run the specified hook after each worker enters the accepting phase ๐Ÿซก
  • --hook-accepting1 โ€” run the specified hook after the first worker enters the accepting phase ๐Ÿฅ‡
  • --hook-accepting-once โ€” run the specified hook after each worker enters the accepting phase, but once per instance โ˜๏ธ
  • --hook-accepting1-once โ€” run the specified hook after the first worker enters the accepting phase, once per instance ๐ŸŒŸ
  • --hook-master-start โ€” run the specified hook when the Master starts ๐Ÿ‘‘
  • --hook-touch โ€” run the specified hook when the file you named gets touched. Syntax: <file> <action> ๐Ÿ‘†
  • --hook-emperor-start โ€” run the specified hook when the Emperor starts ๐Ÿ‘‘โœจ
  • --hook-emperor-stop โ€” run the specified hook when the Emperor sends a stop message ๐Ÿ›‘
  • --hook-emperor-reload โ€” run the specified hook when the Emperor sends a reload message ๐Ÿ”„
  • --hook-emperor-lost โ€” run the specified hook when the Emperor connection is lost ๐Ÿ˜ญ
  • --hook-as-vassal โ€” run the specified hook before exec()ing the vassal ๐Ÿงš
  • --hook-as-emperor โ€” run the specified hook in the emperor once the vassal has been started ๐Ÿ‘‘
  • --hook-as-mule โ€” run the specified hook in each mule ๐Ÿด
  • --hook-as-gateway โ€” run the specified hook in each gateway ๐Ÿšช
  • --after-request-hook โ€” run the function/symbol you specify after every request ๐Ÿ”
  • --after-request-call โ€” run the function/symbol you specify after every request ๐Ÿ”

  • --exec-asap โ€” run the specified command as soon as possible โšก
  • --exec-pre-jail โ€” run the specified command before jailing ๐Ÿ”’
  • --exec-post-jail โ€” run the specified command after jailing ๐Ÿ”“
  • --exec-in-jail โ€” run the specified command inside the jail, after initialization ๐Ÿ 
  • --exec-as-root โ€” run the specified command before privileges drop ๐Ÿ‘‘
  • --exec-as-user โ€” run the specified command after privileges drop ๐Ÿ™‹
  • --exec-as-user-atexit โ€” run the specified command before the app exits and reloads ๐Ÿšช
  • --exec-pre-app โ€” run the specified command before the app loads ๐Ÿ“ฆ
  • --exec-post-app โ€” run the specified command after the app loads ๐ŸŽ‰
  • --exec-as-vassal โ€” run the specified command before exec()ing the vassal ๐Ÿงš
  • --exec-as-emperor โ€” run the specified command in the emperor once the vassal has been started ๐Ÿ‘‘

  • --mount-asap โ€” mount a filesystem as soon as possible โšก
  • --mount-pre-jail โ€” mount a filesystem before jailing ๐Ÿ”’
  • --mount-post-jail โ€” mount a filesystem after jailing ๐Ÿ”“
  • --mount-in-jail โ€” mount a filesystem inside the jail, after initialization ๐Ÿ 
  • --mount-as-root โ€” mount a filesystem before privileges drop ๐Ÿ‘‘
  • --mount-as-vassal โ€” mount a filesystem before exec()ing the vassal ๐Ÿงš
  • --mount-as-emperor โ€” mount a filesystem in the emperor once the vassal has been started ๐Ÿ‘‘
  • --umount-asap โ€” unmount a filesystem as soon as possible โšก
  • --umount-pre-jail โ€” unmount a filesystem before jailing ๐Ÿ”’
  • --umount-post-jail โ€” unmount a filesystem after jailing ๐Ÿ”“
  • --umount-in-jail โ€” unmount a filesystem inside the jail, after initialization ๐Ÿ 
  • --umount-as-root โ€” unmount a filesystem before privileges drop ๐Ÿ‘‘
  • --umount-as-vassal โ€” unmount a filesystem before exec()ing the vassal ๐Ÿงš
  • --umount-as-emperor โ€” unmount a filesystem in the emperor once the vassal has been started ๐Ÿ‘‘

  • --wait-for-interface โ€” wait for the network interface you named to come up before running root hooks ๐ŸŒ
  • --wait-for-interface-timeout โ€” set the timeout for wait-for-interface โณ
  • --wait-interface โ€” wait for the network interface you named to come up before running root hooks ๐ŸŒ
  • --wait-interface-timeout โ€” set the timeout for wait-for-interface โณ
  • --wait-for-iface โ€” wait for the network interface you named to come up before running root hooks ๐ŸŒ
  • --wait-for-iface-timeout โ€” set the timeout for wait-for-interface โณ
  • --wait-iface โ€” wait for the network interface you named to come up before running root hooks ๐ŸŒ
  • --wait-iface-timeout โ€” set the timeout for wait-for-interface โณ
  • --wait-for-fs โ€” wait for the filesystem item you named to appear before running root hooks ๐Ÿ“
  • --wait-for-file โ€” wait for the file you named to appear before running root hooks ๐Ÿ“„
  • --wait-for-dir โ€” wait for the directory you named to appear before running root hooks ๐Ÿ“‚
  • --wait-for-mountpoint โ€” wait for the mountpoint you named to appear before running root hooks ๐Ÿ—‚๏ธ
  • --wait-for-fs-timeout โ€” set the timeout for wait-for-fs/file/dir โณ
  • --wait-for-socket โ€” wait for the socket you named to be ready before loading apps ๐Ÿ”Œ
  • --wait-for-socket-timeout โ€” set the timeout for wait-for-socket โณ

  • --call-asap โ€” call the specified function as soon as possible โšก
  • --call-pre-jail โ€” call the specified function before jailing ๐Ÿ”’
  • --call-post-jail โ€” call the specified function after jailing ๐Ÿ”“
  • --call-in-jail โ€” call the specified function inside the jail, after initialization ๐Ÿ 
  • --call-as-root โ€” call the specified function before privileges drop ๐Ÿ‘‘
  • --call-as-user โ€” call the specified function after privileges drop ๐Ÿ™‹
  • --call-as-user-atexit โ€” call the specified function before the app exits and reloads ๐Ÿšช
  • --call-pre-app โ€” call the specified function before the app loads ๐Ÿ“ฆ
  • --call-post-app โ€” call the specified function after the app loads ๐ŸŽ‰
  • --call-as-vassal โ€” call the specified function() before exec()ing the vassal ๐Ÿงš
  • --call-as-vassal1 โ€” call the specified function(char *) before exec()ing the vassal ๐Ÿงš
  • --call-as-vassal3 โ€” call the specified function(char *, uid_t, gid_t) before exec()ing the vassal ๐Ÿงš
  • --call-as-emperor โ€” call the specified function() in the emperor once the vassal has been started ๐Ÿ‘‘
  • --call-as-emperor1 โ€” call the specified function(char *) in the emperor once the vassal has been started ๐Ÿ‘‘
  • --call-as-emperor2 โ€” call the specified function(char *, pid_t) in the emperor once the vassal has been started ๐Ÿ‘‘
  • --call-as-emperor4 โ€” call the specified function(char *, pid_t, uid_t, gid_t) in the emperor once the vassal has been started ๐Ÿ‘‘

  • --ini โ€” load config from an ini file ๐Ÿ“„
  • -y / --yaml โ€” load config from a yaml file ๐Ÿ’›
  • -y / --yml โ€” load config from a yaml file ๐Ÿ’›
  • -j / --json โ€” load config from a json file ๐Ÿงพ
  • -j / --js โ€” load config from a json file ๐Ÿงพ

  • --weight โ€” the weight of this instance (used by clustering/lb/subscriptions) โš–๏ธ
  • --auto-weight โ€” set this instance's weight automatically (used by clustering/lb/subscriptions) ๐Ÿค–
  • --no-server โ€” force no-server mode ๐Ÿšซ
  • --command-mode โ€” force command mode ๐Ÿ•น๏ธ
  • --no-defer-accept โ€” turn off deferred-accept on sockets ๐Ÿ™…
  • --tcp-nodelay โ€” enable TCP NODELAY on every request ๐Ÿš€
  • --so-keepalive โ€” enable TCP KEEPALIVEs ๐Ÿ’“
  • --so-send-timeout โ€” set SO_SNDTIMEO โฑ๏ธ
  • --socket-send-timeout โ€” set SO_SNDTIMEO โฑ๏ธ
  • --so-write-timeout โ€” set SO_SNDTIMEO โฑ๏ธ
  • --socket-write-timeout โ€” set SO_SNDTIMEO โฑ๏ธ
  • --socket-sndbuf โ€” set SO_SNDBUF ๐Ÿ“ค
  • --socket-rcvbuf โ€” set SO_RCVBUF ๐Ÿ“ฅ
  • --shutdown-sockets โ€” force shutdown() to be called in addition to close() when sockets get destroyed ๐Ÿ”Œ

  • --limit-as โ€” limit the processes' address space / vsz ๐Ÿ“
  • --limit-nproc โ€” limit how many processes can be spawned ๐Ÿงฎ
  • --reload-on-as โ€” reload if the address space climbs higher than the megabytes you specified ๐Ÿ”
  • --reload-on-rss โ€” reload if the rss memory climbs higher than the megabytes you specified ๐Ÿ”
  • --evil-reload-on-as โ€” force the master to reload a worker if its address space goes higher than the megabytes you specified ๐Ÿ˜ˆ
  • --evil-reload-on-rss โ€” force the master to reload a worker if its rss memory goes higher than the megabytes you specified ๐Ÿ˜ˆ
  • --mem-collector-freq โ€” set the memory collector frequency for when evil reloads are in play ๐Ÿงน
  • --reload-on-fd โ€” reload if the file descriptor you specified is ready ๐Ÿ””
  • --brutal-reload-on-fd โ€” brutal reload if the file descriptor you specified is ready ๐Ÿ’€
  • --ksm โ€” enable Linux KSM ๐Ÿง
  • --pcre-jit โ€” enable pcre jit (if it's available) โšก
  • --never-swap โ€” lock all memory pages so nothing ever gets swapped ๐Ÿšซ๐Ÿ’ค
  • --touch-reload โ€” reload uWSGI if the file you specified is modified/touched ๐Ÿ‘†
  • --touch-workers-reload โ€” trigger a reload of (only) the workers if the file you specified is modified/touched ๐Ÿ‘†๐Ÿ‘ท
  • --touch-mules-reload โ€” reload mules if the file you specified is modified/touched ๐Ÿ‘†๐Ÿด
  • --touch-spoolers-reload โ€” reload spoolers if the file you specified is modified/touched ๐Ÿ‘†๐Ÿงต
  • --touch-chain-reload โ€” trigger a chain reload if the file you specified is modified/touched ๐Ÿ‘†โ›“๏ธ
  • --touch-logrotate โ€” trigger logrotation if the file you specified is modified/touched ๐Ÿ‘†๐Ÿ“œ
  • --touch-logreopen โ€” trigger log reopen if the file you specified is modified/touched ๐Ÿ‘†๐Ÿ“‚
  • --touch-exec โ€” run a command when the file you specified is modified/touched. Syntax: file command ๐Ÿ‘†โ–ถ๏ธ
  • --touch-signal โ€” lowkey surveillance vibes ๐Ÿ’… when the file you named gets modified or touched, uwsgi raises a signal. Syntax is file signal.
  • --fs-reload โ€” when the filesystem object you point at changes, you get a graceful reload. no drama, just a soft reset โœจ
  • --fs-brutal-reload โ€” same energy as above but make it feral ๐Ÿ”ฅ when that filesystem object changes, it's a brutal reload. no gentle anything.
  • --fs-signal โ€” raise a uwsgi signal when the filesystem object you specified gets modified. Syntax: file signal.
  • --check-mountpoint โ€” if a filesystem is no longer reachable, it straight up destroys the instance ๐Ÿ’€ super useful when you need reliable Fuse management.
  • --mountpoint-check โ€” literally the same thing as --check-mountpoint: destroy the instance when a filesystem is no longer reachable, useful for reliable Fuse management. twins fr ๐Ÿซถ
  • --check-mount โ€” yeah, it's this one again: destroy the instance if a filesystem is no more reachable (useful for reliable Fuse management). they're giving triplets ๐Ÿ‘‘
  • --mount-check โ€” the fourth one bestie, and it does the exact same: destroy the instance if a filesystem is no more reachable (useful for reliable Fuse management).
  • --propagate-touch โ€” described in the source as an "over-engineering option for system with flaky signal management". it's giving "we made this for the messy ones" ๐Ÿ’€
  • --limit-post โ€” caps the request body. that's it, that's the tweet.
  • --no-orphans โ€” automatically kills workers when the master dies ๐Ÿชฆ > heads up: this can be dangerous for availability. know the risk before you enable it.
  • --prio โ€” set the priority of processes/threads.
  • --cpu-affinity โ€” set cpu affinity.
  • --post-buffering โ€” sets the size in bytes after which it buffers to disk instead of memory. memory said "not today" ๐Ÿ’พ
  • --post-buffering-bufsize โ€” sets the buffer size for read() while in post buffering mode.
  • --body-read-warning โ€” sets the amount of allowed memory allocation (in megabytes) for the request body before it starts printing a warning. warning first, chaos later โš ๏ธ
  • --upload-progress โ€” turns on creation of .json files in the directory you specify while a file upload is happening. progress girlies stay informed ๐ŸŒธ
  • --no-default-app โ€” do not fallback to the default app.
  • --manage-script-name โ€” automatically rewrites SCRIPT_NAME and PATH_INFO. let it handle the admin ๐Ÿ’…
  • --ignore-script-name โ€” ignore SCRIPT_NAME. iconic "i don't see it" energy.
  • --catch-exceptions โ€” reports the exception as http output. > discouraged!! use only for testing ๐Ÿ™ˆ
  • --reload-on-exception โ€” reloads a worker whenever an exception is raised.
  • --reload-on-exception-type โ€” reloads a worker when a specific exception type is raised.
  • --reload-on-exception-value โ€” reloads a worker when a specific exception value is raised.
  • --reload-on-exception-repr โ€” reloads a worker when a specific exception type+value (language-specific) is raised.
  • --exception-handler โ€” adds an exception handler.
  • --enable-metrics โ€” turns on the metrics subsystem โœจ numbers girlies rise.
  • --metric โ€” adds a custom metric.
  • --metric-threshold โ€” adds a metric threshold/alarm ๐Ÿšจ
  • --metric-alarm โ€” adds a metric threshold/alarm (yes, another name for the same vibe).
  • --alarm-metric โ€” also adds a metric threshold/alarm. three names, one job, obsessed ๐Ÿ’œ
  • --metrics-dir โ€” exports metrics as text files into the directory you name.
  • --metrics-dir-restore โ€” restores the last value taken from the metrics dir.
  • --metric-dir โ€” exports metrics as text files to the specified directory (the singular twin).
  • --metric-dir-restore โ€” restores the last value taken from the metrics dir (again, singular edition).
  • --metrics-no-cores โ€” disables generation of cores-related metrics.
  • --udp โ€” run the udp server on the address you specify.
  • --stats โ€” enables the stats server on the specified address ๐Ÿ“Š
  • --stats-server โ€” enables the stats server on the specified address. same girl, different name.
  • --stats-http โ€” prefixes the stats server json output with http headers.
  • --stats-minified โ€” minifies the statistics json output. small and cute ๐ŸŽ€
  • --stats-min โ€” minifies the statistics json output. (alias bestie!)
  • --stats-push โ€” pushes the stats json to the destination you specify.
  • --stats-pusher-default-freq โ€” sets the default frequency of stats pushers.
  • --stats-pushers-default-freq โ€” sets the default frequency of stats pushers. plural, same thing ๐Ÿ’…
  • --stats-no-cores โ€” disables generation of cores-related stats.
  • --stats-no-metrics โ€” do not include metrics in the stats output.
  • --multicast โ€” subscribe to the multicast group you specify.
  • --multicast-ttl โ€” set multicast ttl.
  • --multicast-loop โ€” set multicast loop (default 1).
  • --master-fifo โ€” enable the master fifo ๐Ÿงš
  • --notify-socket โ€” enable the notification socket.
  • --subscription-notify-socket โ€” set the notification socket for subscriptions.
  • --legion โ€” become a member of a legion ๐Ÿ‘‘
  • --legion-mcast โ€” become a member of a legion (shortcut for multicast).
  • --legion-node โ€” add a node to a legion.
  • --legion-freq โ€” set the frequency of legion packets.
  • --legion-tolerance โ€” set the tolerance of the legion subsystem.
  • --legion-death-on-lord-error โ€” declares itself as a dead node for the specified amount of seconds if one of the lord hooks fails ๐Ÿ’€
  • --legion-skew-tolerance โ€” set the clock skew tolerance of the legion subsystem (default 60 seconds).
  • --legion-lord โ€” action to call on Lord election.
  • --legion-unlord โ€” action to call on Lord dismiss.
  • --legion-setup โ€” action to call on legion setup.
  • --legion-death โ€” action to call on legion death (shutdown of the instance).
  • --legion-join โ€” action to call on legion join (first time quorum is reached).
  • --legion-node-joined โ€” action to call on a new node joining the legion.
  • --legion-node-left โ€” action to call on a node leaving the legion.
  • --legion-quorum โ€” set the quorum of a legion.
  • --legion-scroll โ€” set the scroll of a legion.
  • --legion-scroll-max-size โ€” set the max size of the legion scroll buffer.
  • --legion-scroll-list-max-size โ€” set the max size of the legion scroll list buffer.
  • --subscriptions-sign-check โ€” set digest algorithm and certificate directory for the secured subscription system.
  • --subscriptions-sign-check-tolerance โ€” set the maximum tolerance (in seconds) of clock skew for the secured subscription system.
  • --subscriptions-sign-skip-uid โ€” skip signature check for the specified uid when using unix sockets credentials.
  • --subscriptions-credentials-check โ€” add a directory to search for subscriptions key credentials.
  • --subscriptions-use-credentials โ€” enable management of SCM_CREDENTIALS in subscriptions UNIX sockets.
  • --subscription-algo โ€” set the load balancing algorithm for the subscription system.
  • --subscription-dotsplit โ€” try to fallback to the next part (dot based) in the subscription key.
  • --subscribe-to โ€” subscribe to the subscription server you specify.
  • --st โ€” subscribe to the specified subscription server. short queen โœจ
  • --subscribe โ€” subscribe to the specified subscription server. (three names, one subscription, we love consistency ๐Ÿซถ)
  • --subscribe2 โ€” subscribe to the specified subscription server using advanced keyval syntax.
  • --subscribe-freq โ€” send subscription announce at the specified interval.
  • --subscription-tolerance โ€” set tolerance for subscription servers.
  • --unsubscribe-on-graceful-reload โ€” force the unsubscribe request even during a graceful reload.
  • --start-unsubscribed โ€” configure subscriptions but do not send them (useful with master fifo).
  • --subscribe-with-modifier1 โ€” force the specififed modifier1 when subscribing. (typo is theirs, not mine, iykyk ๐Ÿ’…)
  • --snmp โ€” enable the embedded snmp server.
  • --snmp-community โ€” set the snmp community string.
  • --ssl-verbose โ€” be verbose about SSL errors ๐Ÿ—ฃ๏ธ
  • --ssl-verify-depth โ€” set maximum certificate verification depth.
  • --sni โ€” add an SNI-governed SSL context.
  • --sni-dir โ€” check for cert/key/client_ca file in the directory you specify and create a sni/ssl context on demand. it's giving on-demand slay ๐Ÿ’…
  • --sni-dir-ciphers โ€” set ssl ciphers for the sni-dir option.
  • --ssl-enable3 โ€” enable SSLv3. > insecure ๐Ÿ˜ญ
  • --ssl-enable-sslv3 โ€” enable SSLv3. > insecure. (same warning, longer name)
  • --ssl-enable-tlsv1 โ€” enable TLSv1. > insecure ๐Ÿ˜ญ
  • --ssl-option โ€” set a raw ssl option (numeric value).
  • --sni-regexp โ€” add an SNI-governed SSL context (the key is a regexp).
  • --ssl-tmp-dir โ€” store ssl-related temp files in the directory you specify.
  • --check-interval โ€” set the interval (in seconds) of master checks.
  • --forkbomb-delay โ€” sleep for the specified number of seconds when a forkbomb is detected. nap time, but make it emergency ๐Ÿ˜ด
  • --binary-path โ€” force binary path.
  • --privileged-binary-patch โ€” patch the uwsgi binary with a new command (before privileges drop).
  • --unprivileged-binary-patch โ€” patch the uwsgi binary with a new command (after privileges drop).
  • --privileged-binary-patch-arg โ€” patch the uwsgi binary with a new command and arguments (before privileges drop).
  • --unprivileged-binary-patch-arg โ€” patch the uwsgi binary with a new command and arguments (after privileges drop).
  • --async โ€” enable async mode with the number of cores you specify.
  • --max-fd โ€” set maximum number of file descriptors. > requires root privileges ๐Ÿ‘‘
  • --logto โ€” set logfile/udp address.
  • --logto2 โ€” log to the specified file or udp address after privileges drop.
  • --log-format โ€” set advanced format for request logging.
  • --logformat โ€” set advanced format for request logging. (the no-dash twin, we stan ๐ŸŽ€)
  • --logformat-strftime โ€” apply strftime to logformat output.
  • --log-format-strftime โ€” apply strftime to logformat output. (again: twins!)
  • --logfile-chown โ€” chown logfiles.
  • --logfile-chmod โ€” chmod logfiles.
  • --log-syslog โ€” log to syslog.
  • --log-socket โ€” send logs to the socket you specify.
  • --req-logger โ€” set/append a request logger.
  • --logger-req โ€” set/append a request logger. (alias, you know the drill ๐Ÿ’œ)
  • --logger โ€” set/append a logger.
  • --logger-list โ€” list enabled loggers ๐Ÿ“‹
  • --loggers-list โ€” list enabled loggers. (plural bestie!)
  • --threaded-logger โ€” offload log writing to a thread ๐Ÿงต
  • --log-encoder โ€” add an item in the log encoder chain.
  • --log-req-encoder โ€” add an item in the log req encoder chain.
  • --log-drain โ€” drain (do not show) log lines matching the regexp you specify. bye felicia ๐Ÿ‘‹
  • --log-filter โ€” show only the log lines matching the regexp you specify.
  • --log-route โ€” log to the specified named logger if the regexp applied on the logline matches.
  • --log-req-route โ€” log requests to the specified named logger if the regexp applied on the logline matches.
  • --use-abort โ€” call abort() on segfault/fpe, could be useful for generating a core dump.
  • --alarm โ€” create a new alarm. Syntax: <alarm> <plugin:args> ๐Ÿšจ
  • --alarm-cheap โ€” bestie, instead of spinning up a whole dedicated thread for every curl-based alarm, just reuse the main alarm thread. lowkey efficient ๐Ÿ’…
  • --alarm-freq โ€” tunes the anti-loop alarm system. default is 3 seconds, so if your alarms are going feral, this is the dial.
  • --alarm-fd โ€” raise the alarm you name when an fd is read for read. by default it reads 1 byte โ€” set it to 8 for eventfd. yes this one is niche, but she's doing her best ๐Ÿซถ
  • --alarm-segfault โ€” fire off the alarm you name the moment the segmentation fault handler runs. ๐Ÿ˜ญ
  • --segfault-alarm โ€” same thing, different spelling: raise the specified alarm when the segfault handler is executed.
  • --alarm-backlog โ€” raise the specified alarm when the socket backlog queue is full. she's telling you before things get ugly.
  • --backlog-alarm โ€” the same deal, alias edition: raise the specified alarm when the socket backlog queue is full.
  • --lq-alarm โ€” raise the specified alarm when the socket backlog queue is full. (lq = listen queue, iykyk)
  • --alarm-lq โ€” same energy, flipped name: alarm when the socket backlog queue is full.
  • --alarm-listen-queue โ€” raise the specified alarm when the socket backlog queue is full. spelled all the way out for the girlies who like clarity โœจ
  • --listen-queue-alarm โ€” and again, reversed: raise the specified alarm when the socket backlog queue is full.
  • --log-alarm โ€” raise the specified alarm when a log line matches the regexp you give. syntax: <alarm>[,alarm...] <regexp> โ€” so you can stack multiple alarms with commas, iconic.
  • --alarm-log โ€” literally the same thing with the words swapped: raise the specified alarm when a log line matches the regexp. syntax: <alarm>[,alarm...] <regexp>.
  • --not-log-alarm โ€” the opposite vibe: skip the specified alarm when a log line matches the regexp. syntax: <alarm>[,alarm...] <regexp>.
  • --not-alarm-log โ€” same skip behavior, name flipped: skip the specified alarm when a log line matches the regexp. syntax: <alarm>[,alarm...] <regexp>.
  • --alarm-list โ€” just list out all the enabled alarms. a lil inventory moment ๐Ÿ“‹
  • --alarms-list โ€” same list, plural name, list enabled alarms.
  • --alarm-msg-size โ€” sets the max size of an alarm message. default 8192. no essays allowed ๐Ÿ’€
  • --log-master โ€” delegate logging to the master process. hand it off, queen ๐Ÿ‘‘
  • --log-master-bufsize โ€” sets the buffer size for the master logger. heads up: bigger log messages will be truncated. not a vibe but that's the rule.
  • --log-master-stream โ€” create the master logpipe as SOCK_STREAM.
  • --log-master-req-stream โ€” create the master requests logpipe as SOCK_STREAM.
  • --log-reopen โ€” reopen the log after a reload. fresh start energy ๐Ÿฆ‹
  • --log-truncate โ€” truncate the log on startup. everything before this moment? gone.
  • --log-maxsize โ€” set maximum logfile size.
  • --log-backupname โ€” set the logfile name to use after rotation. gotta name the old one something.
  • --logdate โ€” prefix logs with a date, or with a strftime string.
  • --log-date โ€” same as above: prefix logs with a date or a strftime string.
  • --log-prefix โ€” prefix logs with a string of your choosing.
  • --log-zero โ€” log responses that have no body. yes, the empty ones count too ๐Ÿซ 
  • --log-slow โ€” log requests slower than the number of milliseconds you specify.
  • --log-4xx โ€” log requests with a 4xx response.
  • --log-5xx โ€” log requests with a 5xx response.
  • --log-big โ€” log requests bigger than the size you specify.
  • --log-sendfile โ€” log sendfile requests.
  • --log-ioerror โ€” log requests that hit io errors. ๐Ÿ˜ญ
  • --log-micros โ€” report response time in microseconds instead of milliseconds. precision queen ๐Ÿ”ฌ
  • --log-x-forwarded-for โ€” use the ip from the X-Forwarded-For header instead of REMOTE_ADDR.
  • --master-as-root โ€” leave the master process running as root. do with this information what you will ๐Ÿ™ˆ
  • --drop-after-init โ€” run the privileges drop after plugin initialization. note: this is superseded by drop-after-apps.
  • --drop-after-apps โ€” run the privileges drop after apps loading. note: this is superseded by master-as-root.
  • --force-cwd โ€” force the initial working directory to the value you specify.
  • --binsh โ€” override /bin/sh (used by exec hooks โ€” and it always falls back to /bin/sh).
  • --chdir โ€” chdir to the specified directory before apps loading.
  • --chdir2 โ€” chdir to the specified directory after apps loading.
  • --lazy โ€” set lazy mode (load apps in workers instead of master).
  • --lazy-apps โ€” load apps in each worker instead of the master.
  • --cheap โ€” set cheap mode (spawn workers only after the first request). she's shy until someone knocks ๐Ÿ’…
  • --cheaper โ€” set cheaper mode (adaptive process spawning).
  • --cheaper-initial โ€” set the initial number of processes to spawn in cheaper mode.
  • --cheaper-algo โ€” choose the algorithm used for adaptive process spawning.
  • --cheaper-step โ€” number of additional processes to spawn at each overload.
  • --cheaper-overload โ€” increase workers after the specified overload.
  • --cheaper-algo-list โ€” list enabled cheapers algorithms.
  • --cheaper-algos-list โ€” list enabled cheapers algorithms. (same list, plural spelling)
  • --cheaper-list โ€” list enabled cheapers algorithms. three names, one list, we love consistency ๐ŸŽ€
  • --cheaper-rss-limit-soft โ€” don't spawn new workers if the total resident memory usage of all workers is higher than this limit.
  • --cheaper-rss-limit-hard โ€” if total workers resident memory usage is higher, try to stop workers. the hard limit does not play ๐Ÿ˜ค
  • --idle โ€” set idle mode (put uWSGI in cheap mode after inactivity).
  • --die-on-idle โ€” shutdown uWSGI when idle. dramatic exit, honestly ๐Ÿ’€
  • --mount โ€” load application under the mountpoint you specify.
  • --worker-mount โ€” load application under the mountpoint in the specified worker, or after workers spawn.
  • --threads โ€” run each worker in prethreaded mode with the specified number of threads.
  • --thread-stacksize โ€” set threads stacksize.
  • --threads-stacksize โ€” set threads stacksize.
  • --thread-stack-size โ€” set threads stacksize.
  • --threads-stack-size โ€” set threads stacksize. (four ways to say the same thing, and every single one of them is valid โœจ)
  • --vhost โ€” enable virtualhosting mode (based on the SERVER_NAME variable).
  • --vhost-host โ€” enable virtualhosting mode (based on the HTTP_HOST variable).

ok bestie this is where it gets good โ€” the routing era ๐Ÿ›ฃ๏ธโœจ

  • --route โ€” add a route.
  • --route-host โ€” add a route based on the Host header.
  • --route-uri โ€” add a route based on REQUEST_URI.
  • --route-qs โ€” add a route based on QUERY_STRING.
  • --route-remote-addr โ€” add a route based on REMOTE_ADDR.
  • --route-user-agent โ€” add a route based on HTTP_USER_AGENT.
  • --route-remote-user โ€” add a route based on REMOTE_USER.
  • --route-referer โ€” add a route based on HTTP_REFERER.
  • --route-label โ€” add a routing label (for use with goto).
  • --route-if โ€” add a route based on a condition.
  • --route-if-not โ€” add a route based on a condition (negate version).
  • --route-run โ€” always run the specified route action.
  • --final-route โ€” add a final route.
  • --final-route-status โ€” add a final route for the specified status.
  • --final-route-host โ€” add a final route based on the Host header.
  • --final-route-uri โ€” add a final route based on REQUEST_URI.
  • --final-route-qs โ€” add a final route based on QUERY_STRING.
  • --final-route-remote-addr โ€” add a final route based on REMOTE_ADDR.
  • --final-route-user-agent โ€” add a final route based on HTTP_USER_AGENT.
  • --final-route-remote-user โ€” add a final route based on REMOTE_USER.
  • --final-route-referer โ€” add a final route based on HTTP_REFERER.
  • --final-route-label โ€” add a final routing label (for use with goto).
  • --final-route-if โ€” add a final route based on a condition.
  • --final-route-if-not โ€” add a final route based on a condition (negate version).
  • --final-route-run โ€” always run the specified final route action.
  • --error-route โ€” add an error route.
  • --error-route-status โ€” add an error route for the specified status.
  • --error-route-host โ€” add an error route based on the Host header.
  • --error-route-uri โ€” add an error route based on REQUEST_URI.
  • --error-route-qs โ€” add an error route based on QUERY_STRING.
  • --error-route-remote-addr โ€” add an error route based on REMOTE_ADDR.
  • --error-route-user-agent โ€” add an error route based on HTTP_USER_AGENT.
  • --error-route-remote-user โ€” add an error route based on REMOTE_USER.
  • --error-route-referer โ€” add an error route based on HTTP_REFERER.
  • --error-route-label โ€” add an error routing label (for use with goto).
  • --error-route-if โ€” add an error route based on a condition.
  • --error-route-if-not โ€” add an error route based on a condition (negate version).
  • --error-route-run โ€” always run the specified error route action.
  • --response-route โ€” add a response route.
  • --response-route-status โ€” add a response route for the specified status.
  • --response-route-host โ€” add a response route based on the Host header.
  • --response-route-uri โ€” add a response route based on REQUEST_URI.
  • --response-route-qs โ€” add a response route based on QUERY_STRING.
  • --response-route-remote-addr โ€” add a response route based on REMOTE_ADDR.
  • --response-route-user-agent โ€” add a response route based on HTTP_USER_AGENT.
  • --response-route-remote-user โ€” add a response route based on REMOTE_USER.
  • --response-route-referer โ€” add a response route based on HTTP_REFERER.
  • --response-route-label โ€” add a response routing label (for use with goto).
  • --response-route-if โ€” add a response route based on a condition.
  • --response-route-if-not โ€” add a response route based on a condition (negate version).
  • --response-route-run โ€” always run the specified response route action.
  • --router-list โ€” list enabled routers.
  • --routers-list โ€” list enabled routers. (same list, plural, you know the drill ๐Ÿ’…)
  • --error-page-403 โ€” add an error page (html) for a managed 403 response.
  • --error-page-404 โ€” add an error page (html) for a managed 404 response.
  • --error-page-500 โ€” add an error page (html) for a managed 500 response.

websocket o'clock ๐Ÿฆ‹

  • --websockets-ping-freq โ€” set the frequency (in seconds) of websockets automatic ping packets.
  • --websocket-ping-freq โ€” set the frequency (in seconds) of websockets automatic ping packets. singular spelling, same job.
  • --websockets-pong-tolerance โ€” set the tolerance (in seconds) of the websockets ping/pong subsystem.
  • --websocket-pong-tolerance โ€” set the tolerance (in seconds) of the websockets ping/pong subsystem.
  • --websockets-max-size โ€” set the max allowed size of websocket messages (in Kbytes, default 1024).
  • --websocket-max-size โ€” set the max allowed size of websocket messages (in Kbytes, default 1024).
  • --chunked-input-limit โ€” set the max size of a chunked input part (default 1MB, in bytes).
  • --chunked-input-timeout โ€” set default timeout for chunked input.
  • --clock โ€” set a clock source. โฐ
  • --clock-list โ€” list enabled clocks.
  • --clocks-list โ€” lists all the enabled clocks for you, bestie โฐโœจ
  • --add-header โ€” automatically adds HTTP headers to the response, no manual labour required ๐Ÿ’…
  • --rem-header โ€” automatically removes the specified HTTP header from the response ๐Ÿซฅ
  • --del-header โ€” same energy as above: automatically removes the specified HTTP header from the response
  • --collect-header โ€” stores the specified response header in a request var. Syntax is header var โ€” two things, one space, that's the whole vibe ๐Ÿ“ฅ
  • --response-header-collect โ€” stores the specified response header in a request var. Syntax: header var
  • --pull-header โ€” stores the specified response header in a request var and yanks it out of the response. Syntax: header var. It's giving collect-and-delete ๐Ÿ’€

๐Ÿ—‚๏ธ static files, my beloved

  • --check-static โ€” checks for static files in the specified directory ๐Ÿ“
  • --check-static-docroot โ€” checks for static files in the requested DOCUMENT_ROOT
  • --static-check โ€” checks for static files in the specified directory (yes bestie, it's the same thing, the options are twins ๐Ÿ‘ฏ)
  • --static-map โ€” maps a mountpoint to a static directory (or a file!)
  • --static-map2 โ€” like static-map but it completely appends the requested resource to the docroot
  • --static-skip-ext โ€” skips the specified extension from staticfile checks ๐Ÿšซ
  • --static-index โ€” searches for the specified file if a directory is requested
  • --static-safe โ€” skips security checks if the file is under the specified path ๐Ÿ”“
  • --static-cache-paths โ€” puts resolved paths in the uWSGI cache for the specified amount of seconds
  • --static-cache-paths-name โ€” uses the specified cache for static paths
  • --mimefile โ€” sets the mime types file path (default /etc/mime.types)
  • --mime-file โ€” sets the mime types file path (default /etc/mime.types)
  • --static-expires-type โ€” sets the Expires header based on content type
  • --static-expires-type-mtime โ€” sets the Expires header based on content type and file mtime
  • --static-expires โ€” sets the Expires header based on filename regexp
  • --static-expires-mtime โ€” sets the Expires header based on filename regexp and file mtime
  • --static-expires-uri โ€” sets the Expires header based on REQUEST_URI regexp
  • --static-expires-uri-mtime โ€” sets the Expires header based on REQUEST_URI regexp and file mtime
  • --static-expires-path-info โ€” sets the Expires header based on PATH_INFO regexp
  • --static-expires-path-info-mtime โ€” sets the Expires header based on PATH_INFO regexp and file mtime
  • --static-gzip โ€” if the supplied regexp matches the static file translation, it will search for a gzip version ๐Ÿ—œ๏ธ
  • --static-gzip-all โ€” checks for a gzip version of all requested static files
  • --static-gzip-dir โ€” checks for a gzip version of all requested static files in the specified dir/prefix
  • --static-gzip-prefix โ€” checks for a gzip version of all requested static files in the specified dir/prefix
  • --static-gzip-ext โ€” checks for a gzip version of all requested static files with the specified ext/suffix
  • --static-gzip-suffix โ€” checks for a gzip version of all requested static files with the specified ext/suffix
  • --honour-range โ€” enables support for the HTTP Range header ๐Ÿ“
  • --offload-threads โ€” sets the number of offload threads to spawn (per-worker, default 0)
  • --offload-thread โ€” sets the number of offload threads to spawn (per-worker, default 0)
  • --file-serve-mode โ€” sets the static file serving mode
  • --fileserve-mode โ€” sets the static file serving mode
  • --disable-sendfile โ€” disables sendfile() and relies on boring read()/write() instead. So plain. So humble. ๐Ÿ™ˆ
  • --check-cache โ€” checks for response data in the specified cache (leave it empty for the default cache)

๐Ÿ”Œ sockets, exec and friends

  • --close-on-exec โ€” sets close-on-exec on connection sockets (could be required for spawning processes in requests)
  • --close-on-exec2 โ€” sets close-on-exec on server sockets (could be required for spawning processes in requests)
  • --mode โ€” set uWSGI custom mode
  • --env โ€” set environment variable ๐ŸŒฑ
  • --envdir โ€” load a daemontools compatible envdir
  • --early-envdir โ€” load a daemontools compatible envdir ASAP โšก
  • --unenv โ€” unset environment variable
  • --vacuum โ€” tries to remove all of the generated file/sockets ๐Ÿงน
  • --file-write โ€” writes the specified content to the specified file (syntax: file=value) before privileges drop
  • --cgroup โ€” puts the processes in the specified cgroup
  • --cgroup-opt โ€” sets a value in the specified cgroup option
  • --cgroup-dir-mode โ€” sets permission for the cgroup directory (default is 700)
  • --namespace โ€” runs in a new namespace under the specified rootfs
  • --namespace-keep-mount โ€” keeps the specified mountpoint in your namespace
  • --ns โ€” runs in a new namespace under the specified rootfs
  • --namespace-net โ€” adds network namespace
  • --ns-net โ€” adds network namespace
  • --enable-proxy-protocol โ€” enables PROXY1 protocol support (only for http parsers)
  • --reuse-port โ€” enables the REUSE_PORT flag on socket (BSD only ๐Ÿก)
  • --tcp-fast-open โ€” enables the TCP_FASTOPEN flag on TCP sockets with the specified qlen value
  • --tcp-fastopen โ€” enables the TCP_FASTOPEN flag on TCP sockets with the specified qlen value
  • --tcp-fast-open-client โ€” uses sendto(..., MSG_FASTOPEN, ...) instead of connect() if supported
  • --tcp-fastopen-client โ€” uses sendto(..., MSG_FASTOPEN, ...) instead of connect() if supported

๐Ÿ zerg, cron and legions

  • --zerg โ€” attach to a zerg server
  • --zerg-fallback โ€” falls back to normal sockets if the zerg server is not available
  • --zerg-server โ€” enables the zerg server on the specified UNIX socket
  • --cron โ€” adds a cron task โฐ
  • --cron2 โ€” adds a cron task (key=val syntax)
  • --unique-cron โ€” adds a unique cron task
  • --cron-harakiri โ€” sets the maximum time (in seconds) we wait for a cron command to complete
  • --legion-cron โ€” adds a cron task runnable only when the instance is a lord of the specified legion ๐Ÿ‘‘
  • --cron-legion โ€” adds a cron task runnable only when the instance is a lord of the specified legion
  • --unique-legion-cron โ€” adds a unique cron task runnable only when the instance is a lord of the specified legion
  • --unique-cron-legion โ€” adds a unique cron task runnable only when the instance is a lord of the specified legion
  • --loop โ€” select the uWSGI loop engine ๐Ÿ”
  • --loop-list โ€” lists enabled loop engines
  • --loops-list โ€” lists enabled loop engines
  • --worker-exec โ€” runs the specified command as worker
  • --worker-exec2 โ€” runs the specified command as worker (after the post_fork hook)
  • --attach-daemon โ€” attaches a command/daemon to the master process (the command has to not go in background)
  • --attach-control-daemon โ€” attaches a command/daemon to the master process (the command has to not go in background); when the daemon dies, the master dies too ๐Ÿ’€
  • --smart-attach-daemon โ€” attaches a command/daemon to the master process managed by a pidfile (the command has to daemonize)
  • --smart-attach-daemon2 โ€” attaches a command/daemon to the master process managed by a pidfile (the command has to NOT daemonize)
  • --legion-attach-daemon โ€” same as --attach-daemon but the daemon runs only on the legion lord node ๐Ÿ‘‘
  • --legion-smart-attach-daemon โ€” same as --smart-attach-daemon but the daemon runs only on the legion lord node
  • --legion-smart-attach-daemon2 โ€” same as --smart-attach-daemon2 but the daemon runs only on the legion lord node
  • --daemons-honour-stdin โ€” do not change the stdin of external daemons to /dev/null
  • --attach-daemon2 โ€” the attach-daemon keyval variant (supports smart modes too)

๐Ÿงฉ plugins, because everything is a plugin

  • --plugins โ€” load uWSGI plugins
  • --plugin โ€” load uWSGI plugins
  • --need-plugins โ€” load uWSGI plugins (exit on error, no chill) ๐Ÿšจ
  • --need-plugin โ€” load uWSGI plugins (exit on error)
  • --plugins-dir โ€” adds a directory to the uWSGI plugin search path
  • --plugin-dir โ€” adds a directory to the uWSGI plugin search path
  • --plugins-list โ€” lists enabled plugins
  • --plugin-list โ€” lists enabled plugins
  • --autoload โ€” tries to automatically load plugins when unknown options are found ๐Ÿ”
  • --dlopen โ€” blindly loads a shared library ๐Ÿ™ˆ
  • --allowed-modifiers โ€” comma separated list of allowed modifiers
  • --remap-modifier โ€” remaps a request modifier from one id to another

๐Ÿ› ๏ธ introspection & dev tools

  • --dump-options โ€” dumps the full list of available options
  • --show-config โ€” shows the current config reformatted as ini
  • --binary-append-data โ€” returns the content of a resource to stdout for appending to a uwsgi binary (for data:// usage)
  • --print โ€” simple print ๐Ÿ–จ๏ธ
  • --iprint โ€” simple print (immediate version)
  • --exit โ€” force exit() of the instance
  • --cflags โ€” reports uWSGI CFLAGS (useful for building external plugins)
  • --dot-h โ€” dumps the uwsgi.h used for building the core (useful for building external plugins)
  • --config-py โ€” dumps the uwsgiconfig.py used for building the core (useful for building external plugins)
  • --build-plugin โ€” builds a uWSGI plugin for the current binary
  • --version โ€” prints uWSGI version
  • --response-headers-limit โ€” sets the response header maximum size (default: 64k)

And that's the whole options buffet, bestie โ€” you made it to the end ๐Ÿซถโœจ This page is from uwsgi_rack 2.0.31-2, dated January 2026, and it's the UWSGI_RACK(1) manual page. Go forth and configure responsibly, no cap ๐Ÿ’…๐Ÿ’–

๐Ÿ“ฆ where this page comes from