UWSGI_RACK_RUBY31(1)

๐Ÿ“ฆ version 2.0.21, in debian bookworm

๐Ÿ’– UWSGI_RACK_RUBY31 ๐Ÿ’–

okay bestie, so this is the manual page for uwsgi_rack_ruby31 โ€” section 1 of the manual, User Commands, if you were wondering where to find it in the stack ๐Ÿซถ


โœจ NAME โœจ

uwsgi_rack_ruby31 โ€” fast (pure C), self-healing, developer-friendly WSGI server

no literally that's the whole name section and it's lowkey iconic?? "self-healing" and "developer-friendly" in the same breath, she contains multitudes ๐Ÿ’…

โœจ SYNOPSIS โœจ

uwsgi-core-local [options...]

โœจ DESCRIPTION โœจ

okay so this is the big one, the main character section, and it's basically the entire option buffet. grab a snack, we're going through every single one ๐ŸŒธ

๐ŸŽ€ Sockets & Protocols

  • -s, --socket โ€” bind to the specified UNIX/TCP socket using default protocol
  • -s, --uwsgi-socket โ€” bind to the specified UNIX/TCP socket using uwsgi protocol
  • --suwsgi-socket โ€” bind to the specified UNIX/TCP socket using uwsgi protocol over SSL
  • --ssl-socket โ€” bind to the specified UNIX/TCP socket using uwsgi protocol over SSL
  • --http-socket โ€” bind to the specified UNIX/TCP socket using 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
  • --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 & Harakiri

  • -p, --processes โ€” spawn the specified number of workers/processes
  • -p, --workers โ€” spawn the specified number of workers/processes
  • --thunder-lock โ€” serialize accept() usage (if possible)
  • -t, --harakiri โ€” set harakiri timeout
  • --harakiri-verbose โ€” enable verbose mode for harakiri
  • --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
  • --backtrace-depth โ€” set backtrace depth
  • --mule-harakiri โ€” set harakiri timeout for mule tasks

๐Ÿ’œ Config & Placeholders

  • -x, --xmlconfig โ€” load config from xml file
  • -x, --xml โ€” load config from xml file
  • --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)
  • -S, --set โ€” set a placeholder or an option
  • --set-placeholder โ€” set a placeholder
  • --set-ph โ€” set a placeholder
  • --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)
yes bestie, the original really does say "sytax" and I am not fixing it, we respect the source material in this house ๐Ÿ’€

๐Ÿฆ‹ Opt Logic (the if/for girlies)

  • --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 existance
  • --if-not-file โ€” (opt logic) check for file existance
  • --if-dir โ€” (opt logic) check for directory existance
  • --if-not-dir โ€” (opt logic) check for directory existance
  • --ifdir โ€” (opt logic) check for directory existance
  • --if-directory โ€” (opt logic) check for directory existance
  • --endif โ€” (opt logic) end if
  • --end-if โ€” (opt logic) end if

๐ŸŒˆ Blacklist / Whitelist

  • --blacklist โ€” set options blacklist context
  • --end-blacklist โ€” clear options blacklist context
  • --whitelist โ€” set options whitelist context
  • --end-whitelist โ€” clear options whitelist context

๐Ÿ“ Write Errors & Signals

  • --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()

๐ŸŒธ Templating & Includes

  • --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)

๐Ÿ‘‘ Daemonize & Instance Management

  • -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 & Sockets (again, but fancier)

  • -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
  • --chown-socket โ€” chown unix sockets
  • --umask โ€” set umask
  • --freebind โ€” put socket in freebind mode
  • --map-socket โ€” map sockets to specific workers

๐Ÿ’… Threads & Process Names

  • -T, --enable-threads โ€” enable threads
  • --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

๐Ÿ”ฅ Interpreters, Master & stdin

  • -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 (yes she gets her own whole subsection, she's that girl)

  • --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 โ€” write the Emperor pid in the specified file
  • --emperor-tyrant โ€” put the Emperor in Tyrant mode
  • --emperor-tyrant-nofollow โ€” do not follow symlinks when checking for uid/gid in Tyrant mode
  • --emperor-stats โ€” run the Emperor stats server
  • --emperor-stats-server โ€” run the Emperor stats server

okay that's part 1 wrapped, bestie โ€” but do NOT go anywhere, because more parts are coming and the options literally never stop ๐Ÿ’–โœจ

โœจ OPTIONS โœจ

okay bestie, buckle up, this is the long part and it's giving very much "reference manual but make it fashion" ๐Ÿ’…


๐Ÿ‘‘ The Emperor & His Vassals ๐Ÿซถ

  • --early-emperor โ€” spawn the emperor as soon as possible. no waiting around, she's eager โœจ
  • --emperor-broodlord โ€” run the emperor in BroodLord mode. yes that's the real name. iconic, no notes ๐Ÿ‘‘
  • --emperor-throttle โ€” set the throttling level (in milliseconds) for vassals that are being bad. default is 1000. time-out energy fr ๐Ÿ˜ค
  • --emperor-max-throttle โ€” set the max throttling level (in milliseconds) for misbehaving vassals. default is 3 minutes. that's the ceiling bestie, don't push it ๐Ÿšซ
  • --emperor-magic-exec โ€” prefix vassal config files with exec:// if they have the executable bit set. magic, literally โœจ
  • --emperor-on-demand-extension โ€” search for a text file (vassal name + extension) that contains the on demand socket name ๐Ÿ”
  • --emperor-on-demand-ext โ€” same thing, shorter name. search for a text file (vassal name + extension) containing the on demand socket name ๐Ÿ“
  • --emperor-on-demand-directory โ€” enable on demand mode, binding to the unix socket in the specified directory, named like the vassal + .socket ๐Ÿ”Œ
  • --emperor-on-demand-dir โ€” the abbreviated twin: enable on demand mode binding to the unix socket in the specified directory, named like the vassal + .socket ๐Ÿงš
  • --emperor-on-demand-exec โ€” use the output of the specified command as the on demand socket name (the vassal name gets passed as the only argument) ๐Ÿซก
  • --emperor-extra-extension โ€” allows the specified extension in the Emperor (the vassal will be called with --config) ๐ŸŽ€
  • --emperor-extra-ext โ€” same vibe, short spelling: allows the specified extension in the Emperor (vassal called with --config) ๐ŸŽ€
  • --emperor-no-blacklist โ€” disable the Emperor blacklisting subsystem. everybody's forgiven, we're healing ๐ŸŒˆ
  • --emperor-use-clone โ€” use clone() instead of fork(), passing the specified unshare() flags ๐Ÿ‘ฏ
  • --emperor-graceful-shutdown โ€” use vassals' graceful shutdown during ragnarok. yes, ragnarok. we said what we said ๐Ÿ’€
  • --emperor-cap โ€” set vassals capability ๐Ÿงข
  • --vassals-cap โ€” set vassals capability ๐Ÿงข
  • --vassal-cap โ€” set vassals capability ๐Ÿงข (three names, one job, we love a flexible queen)
  • --imperial-monitor-list โ€” list enabled imperial monitors ๐Ÿ“‹
  • --imperial-monitors-list โ€” list enabled imperial monitors ๐Ÿ“‹ (plural bestie, both work)
  • --vassals-inherit โ€” add config templates to vassals config (uses --inherit) ๐Ÿงฌ
  • --vassals-include โ€” include config templates to vassals config (uses --include instead of --inherit) ๐Ÿงฌ
  • --vassals-inherit-before โ€” add config templates to vassals config (uses --inherit, parses before the vassal file) โฎ๏ธ
  • --vassals-include-before โ€” include config templates to vassals config (uses --include instead of --inherit, parses before the vassal file) โฎ๏ธ
  • --vassals-start-hook โ€” run the specified command before each vassal starts ๐Ÿ
  • --vassals-stop-hook โ€” run the specified command after the vassal's death ๐Ÿชฆ
  • --vassal-sos โ€” ask the emperor for reinforcement when overloaded ๐Ÿ†˜
  • --vassal-sos-backlog โ€” ask the emperor for SOS if the backlog queue has more items than the value specified ๐Ÿ“ˆ
  • --vassals-set โ€” automatically set the specified option (via --set) for every vassal ๐ŸŽ›๏ธ
  • --vassal-set โ€” automatically set the specified option (via --set) for every vassal ๐ŸŽ›๏ธ (same deal, shorter name)
  • --heartbeat โ€” announce healthiness to the emperor ๐Ÿ’“

๐Ÿ”„ Reloads, Shutdowns & General Drama ๐Ÿ˜ญ

  • --reload-mercy โ€” set the maximum time (in seconds) we wait for workers and other processes to die during reload/shutdown โณ
  • --worker-reload-mercy โ€” set the maximum time (in seconds) a worker can take to reload/shutdown. default is 60 โณ
  • --mule-reload-mercy โ€” set the maximum time (in seconds) a mule can take to reload/shutdown. default is 60 โณ
  • --exit-on-reload โ€” force exit even if a reload is requested. she said no more ๐Ÿšช
  • --die-on-term โ€” exit instead of doing a brutal reload on SIGTERM ๐Ÿ’€
  • --force-gateway โ€” force the spawn of the first registered gateway without a master ๐Ÿšชโœจ

๐Ÿ› ๏ธ Help & Debug Vibes ๐Ÿซถ

  • -h, --help โ€” show this help ๐Ÿ’–
  • -h, --usage โ€” show this help ๐Ÿ’– (same thing, different alias, slay)
  • --print-sym โ€” print the content of the specified binary symbol ๐Ÿ”
  • --print-symbol โ€” print the content of the specified binary symbol ๐Ÿ”
  • -r, --reaper โ€” call waitpid(-1,...) after each request to get rid of zombies ๐ŸงŸ
  • -R, --max-requests โ€” reload workers after the specified amount of managed requests ๐Ÿ”ข
  • --min-worker-lifetime โ€” number of seconds a worker must run before being reloaded. default is 60 โฑ๏ธ
  • --max-worker-lifetime โ€” reload workers after the specified amount of seconds. default is disabled ๐Ÿšซ
  • --max-worker-lifetime-delta โ€” add (worker_id * delta) seconds to the max_worker_lifetime value of each worker โž•
  • -z, --socket-timeout โ€” set internal sockets timeout โฐ
  • --no-fd-passing โ€” disable file descriptor passing ๐Ÿšซ

๐Ÿ”’ Locks, Shared Memory & FDs ๐Ÿ”‘

  • --locks โ€” create the specified number of shared locks ๐Ÿ”’
  • --lock-engine โ€” set the lock engine โš™๏ธ
  • --ftok โ€” set the ipcsem key via ftok() for avoiding duplicates ๐Ÿ”‘
  • --persistent-ipcsem โ€” do not remove ipcsem's on shutdown ๐Ÿ’พ
  • -A, --sharedarea โ€” create a raw shared memory area of the specified pages. heads up bestie: it supports keyval too ๐Ÿง 
  • --safe-fd โ€” do not close the specified file descriptor ๐Ÿ›Ÿ
  • --fd-safe โ€” do not close the specified file descriptor ๐Ÿ›Ÿ

๐Ÿ’พ Cache & Queues ๐Ÿ“

  • --cache โ€” create a shared cache containing given elements ๐Ÿ’พ
  • --cache-blocksize โ€” set cache blocksize ๐Ÿ“ฆ
  • --cache-store โ€” enable persistent cache to disk ๐Ÿ’ฝ
  • --cache-store-sync โ€” set frequency of sync for persistent cache ๐Ÿ”„
  • --cache-no-expire โ€” disable auto sweep of expired items ๐Ÿงน๐Ÿšซ
  • --cache-expire-freq โ€” set the frequency of cache sweeper scans. default is 3 seconds โฑ๏ธ
  • --cache-report-freed-items โ€” constantly report the cache item freed by the sweeper. โš ๏ธ use only for debug ๐Ÿ›
  • --cache-udp-server โ€” bind the cache udp server (used only for set/update/delete) to the specified socket ๐Ÿ”Œ
  • --cache-udp-node โ€” send cache update/deletion to the specified cache udp server ๐Ÿ“ก
  • --cache-sync โ€” copy the whole content of another uWSGI cache server on server startup ๐Ÿ“ฅ
  • --cache-use-last-modified โ€” update the last_modified_at timestamp on every cache item modification. default is disabled ๐Ÿšซ
  • --add-cache-item โ€” add an item in the cache โž•
  • --load-file-in-cache โ€” load a static file in the cache ๐Ÿ“„
  • --load-file-in-cache-gzip โ€” load a static file in the cache with gzip compression ๐Ÿ—œ๏ธ
  • --cache2 โ€” create a new generation shared cache (keyval syntax) โœจ
  • --queue โ€” enable shared queue ๐Ÿšถโ€โ™€๏ธ๐Ÿšถโ€โ™€๏ธ๐Ÿšถโ€โ™€๏ธ
  • --queue-blocksize โ€” set queue blocksize ๐Ÿ“ฆ
  • --queue-store โ€” enable persistent queue to disk ๐Ÿ’ฝ
  • --queue-store-sync โ€” set frequency of sync for persistent queue ๐Ÿ”„

๐ŸŒ€ Spoolers, Mules & Farms ๐Ÿด

  • -Q, --spooler โ€” run a spooler on the specified directory ๐Ÿ—‚๏ธ
  • --spooler-external โ€” map spooler requests to a spooler directory managed by an external instance ๐ŸŒ
  • --spooler-ordered โ€” try to order the execution of spooler tasks ๐Ÿ”ข
  • --spooler-chdir โ€” chdir() to the specified directory before each spooler task ๐Ÿ“
  • --spooler-processes โ€” set the number of processes for spoolers ๐Ÿ‘ฏ
  • --spooler-quiet โ€” do not be verbose with spooler tasks ๐Ÿคซ
  • --spooler-max-tasks โ€” set the maximum number of tasks to run before recycling a spooler โ™ป๏ธ
  • --spooler-harakiri โ€” set harakiri timeout for spooler tasks ๐Ÿ—ก๏ธ
  • --spooler-frequency โ€” set spooler frequency ๐Ÿ“ถ
  • --spooler-freq โ€” set spooler frequency ๐Ÿ“ถ
  • --mule โ€” add a mule ๐Ÿด
  • --mules โ€” add the specified number of mules ๐Ÿด๐Ÿด๐Ÿด
  • --farm โ€” add a mule farm ๐Ÿšœ
  • --mule-msg-size โ€” set mule message buffer size ๐Ÿ“จ

๐Ÿ“ฃ Signals, Timers & RPC โฒ๏ธ

  • --signal โ€” send a uWSGI signal to a server ๐Ÿ“ก
  • --signal-bufsize โ€” set buffer size for the signal queue ๐Ÿ“ฆ
  • --signals-bufsize โ€” set buffer size for the signal queue ๐Ÿ“ฆ
  • --signal-timer โ€” add a timer. syntax: <signal> <seconds> โฒ๏ธ
  • --timer โ€” add a timer. syntax: <signal> <seconds> โฒ๏ธ
  • --signal-rbtimer โ€” add a redblack timer. syntax: <signal> <seconds> ๐ŸŒณโฒ๏ธ
  • --rbtimer โ€” add a redblack timer. syntax: <signal> <seconds> ๐ŸŒณโฒ๏ธ
  • --rpc-max โ€” maximum number of rpc slots. default: 64 ๐Ÿ“ž

๐Ÿ“ Logging, Files & Root Stuff ๐Ÿ 

  • -L, --disable-logging โ€” disable request logging ๐Ÿคซ
  • --flock โ€” lock the specified file before starting, exit if locked ๐Ÿ”’
  • --flock-wait โ€” lock the specified file before starting, wait if locked โณ
  • --flock2 โ€” lock the specified file after logging/daemon setup, exit if locked ๐Ÿ”’
  • --flock-wait2 โ€” lock the specified file after logging/daemon setup, wait if locked โณ
  • --pidfile โ€” create pidfile (before privileges drop) ๐Ÿ“„
  • --pidfile2 โ€” create pidfile (after privileges drop) ๐Ÿ“„
  • --safe-pidfile โ€” create safe pidfile (before privileges drop) ๐Ÿ›Ÿ
  • --safe-pidfile2 โ€” create 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) ๐ŸŒ€

๐Ÿ” Privileges, Namespaces & Jails ๐Ÿ‘‘

  • --uid โ€” setuid to the specified user/uid ๐Ÿชช
  • --gid โ€” setgid to the specified group/gid ๐Ÿชช
  • --add-gid โ€” add 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 โ€” disable additional groups set via initgroups() ๐Ÿšซ
  • --cap โ€” set process capability ๐Ÿงข
  • --unshare โ€” unshare() part of the processes and put it in a new namespace ๐Ÿซง
  • --unshare2 โ€” unshare() part of the processes and put it in a new namespace after rootfs change ๐Ÿซง
  • --setns-socket โ€” expose a unix socket returning namespace fds from /proc/self/ns ๐Ÿ”Œ
  • --setns-socket-skip โ€” skip the specified entry when sending setns file descriptors โญ๏ธ
  • --setns-skip โ€” skip the specified entry when sending setns file descriptors โญ๏ธ
  • --setns โ€” join a namespace created by an external uWSGI instance ๐Ÿšช
  • --setns-preopen โ€” open /proc/self/ns as soon as possible and cache fds โšก
  • --jailed โ€” mark the instance as jailed (forces the execution of post_jail hooks) โ›“๏ธ
  • --refork โ€” fork() again after privileges drop. useful for jailing systems ๐Ÿด
  • --re-fork โ€” fork() again after privileges drop. useful for jailing systems ๐Ÿด
  • --refork-as-root โ€” fork() again before privileges drop. useful for jailing systems ๐Ÿด
  • --re-fork-as-root โ€” fork() again before privileges drop. useful for jailing systems ๐Ÿด
  • --refork-post-jail โ€” fork() again after jailing. genuinely useful for jailing systems ๐Ÿซถ
  • --re-fork-post-jail โ€” same energy as above: fork() again after jailing, and yeah, it's useful for jailing systems. (it's giving "same thing, different spelling" ๐Ÿ’…)
  • --hook-asap โ€” run the hook you specified, like, immediately. as soon as possible, no waiting around โœจ
  • --hook-pre-jail โ€” run that specified hook before jailing ๐ŸŽ€
  • --hook-post-jail โ€” run that specified hook after jailing ๐ŸŒธ
  • --hook-in-jail โ€” run the specified hook in 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 before app exit and reload, bestie ๐Ÿฅฒ
  • --hook-pre-app โ€” run the specified hook before app loading โœจ
  • --hook-post-app โ€” run the specified hook after app loading ๐ŸŒˆ
  • --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, 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 specified file is 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 after 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 specified function/symbol after each request โœจ
  • --after-request-call โ€” run the specified function/symbol after each request (yes it's the same description, no I'm not kidding) ๐Ÿ’…

okay now we're in the exec era of this list, and it's a whole parallel universe of the hooks you just met:

  • --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 in 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 app exit and reload ๐Ÿฅฒ
  • --exec-pre-app โ€” run the specified command before app loading โœจ
  • --exec-post-app โ€” run the specified command after app loading ๐ŸŒˆ
  • --exec-as-vassal โ€” run the specified command before exec()ing the vassal ๐Ÿงš
  • --exec-as-emperor โ€” run the specified command in the emperor after the vassal has been started ๐Ÿ‘‘

and now mount things. same vibes, filesystem edition:

  • --mount-asap โ€” mount filesystem as soon as possible โšก
  • --mount-pre-jail โ€” mount filesystem before jailing ๐ŸŽ€
  • --mount-post-jail โ€” mount filesystem after jailing ๐ŸŒธ
  • --mount-in-jail โ€” mount filesystem in jail after initialization ๐Ÿฆ‹
  • --mount-as-root โ€” mount filesystem before privileges drop ๐Ÿ‘‘
  • --mount-as-vassal โ€” mount filesystem before exec()ing the vassal ๐Ÿงš
  • --mount-as-emperor โ€” mount filesystem in the emperor after the vassal has been started ๐Ÿ‘‘
  • --umount-asap โ€” unmount filesystem as soon as possible โšก
  • --umount-pre-jail โ€” unmount filesystem before jailing ๐ŸŽ€
  • --umount-post-jail โ€” unmount filesystem after jailing ๐ŸŒธ
  • --umount-in-jail โ€” unmount filesystem in jail after initialization ๐Ÿฆ‹
  • --umount-as-root โ€” unmount filesystem before privileges drop ๐Ÿ‘‘
  • --umount-as-vassal โ€” unmount filesystem before exec()ing the vassal ๐Ÿงš
  • --umount-as-emperor โ€” unmount filesystem in the emperor after the vassal has been started ๐Ÿ‘‘

now the waiting era. bestie, this section is literally just "chill, we're waiting for stuff to exist before we run root hooks":

  • --wait-for-interface โ€” wait for the specified network interface to come up before running root hooks ๐ŸŒ
  • --wait-for-interface-timeout โ€” set the timeout for wait-for-interface โณ
  • --wait-interface โ€” wait for the specified network interface to come up before running root hooks (yes, same thing again) ๐ŸŒ
  • --wait-interface-timeout โ€” set the timeout for wait-for-interface โณ
  • --wait-for-iface โ€” wait for the specified network interface to come up before running root hooks ๐ŸŒ
  • --wait-for-iface-timeout โ€” set the timeout for wait-for-interface โณ
  • --wait-iface โ€” wait for the specified network interface to come up before running root hooks ๐ŸŒ
  • --wait-iface-timeout โ€” set the timeout for wait-for-interface โณ
  • --wait-for-fs โ€” wait for the specified filesystem item to appear before running root hooks ๐Ÿ“
  • --wait-for-file โ€” wait for the specified file to appear before running root hooks ๐Ÿ“„
  • --wait-for-dir โ€” wait for the specified directory to appear before running root hooks ๐Ÿ“‚
  • --wait-for-mountpoint โ€” wait for the specified mountpoint 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 specified socket to be ready before loading apps ๐Ÿ”Œ
  • --wait-for-socket-timeout โ€” set the timeout for wait-for-socket โณ

and then call. the call crew, which comes with a lil function-signature glow-up for the vassal and emperor ones ๐Ÿ’…:

  • --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 in 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 app exit and reload ๐Ÿฅฒ
  • --call-pre-app โ€” call the specified function before app loading โœจ
  • --call-post-app โ€” call the specified function after app loading ๐ŸŒˆ
  • --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 after the vassal has been started ๐Ÿ‘‘
  • --call-as-emperor1 โ€” call the specified function(char *) in the emperor after the vassal has been started ๐Ÿ‘‘
  • --call-as-emperor2 โ€” call the specified function(char *, pid_t) in the emperor after the vassal has been started ๐Ÿ‘‘
  • --call-as-emperor4 โ€” call the specified function(char *, pid_t, uid_t, gid_t) in the emperor after the vassal has been started ๐Ÿ‘‘

config-loading time, and bestie watch out because some of these share the same short flag โ€” I'm just telling you what the page says, fr fr:

  • --ini โ€” load config from ini file ๐Ÿ“„
  • -y, --yaml โ€” load config from yaml file ๐Ÿ“„
  • -y, --yml โ€” load config from yaml file ๐Ÿ“„
  • -j, --json โ€” load config from json file ๐Ÿ“„
  • -j, --js โ€” load config from json file ๐Ÿ“„

  • --weight โ€” weight of the instance (used by clustering/lb/subscriptions) โš–๏ธ
  • --auto-weight โ€” set weight of the instance (used by clustering/lb/subscriptions) automatically โš–๏ธ
  • --no-server โ€” force no-server mode ๐Ÿšซ
  • --command-mode โ€” force command mode ๐Ÿ’ป
  • --no-defer-accept โ€” disable deferred-accept on sockets ๐Ÿ”Œ
  • --tcp-nodelay โ€” enable TCP NODELAY on each 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 calling shutdown() in addition to close() when sockets are destroyed ๐Ÿ”Œ
  • --limit-as โ€” limit processes address space/vsz ๐Ÿงฑ
  • --limit-nproc โ€” limit the number of spawnable processes ๐Ÿงฑ
  • --reload-on-as โ€” reload if address space is higher than specified megabytes ๐Ÿ”„
  • --reload-on-rss โ€” reload if rss memory is higher than specified megabytes ๐Ÿ”„
  • --evil-reload-on-as โ€” force the master to reload a worker if its address space is higher than specified megabytes ๐Ÿ˜ˆ
  • --evil-reload-on-rss โ€” force the master to reload a worker if its rss memory is higher than specified megabytes ๐Ÿ˜ˆ
  • --mem-collector-freq โ€” set the memory collector frequency when evil reloads are in place ๐Ÿงน
  • --reload-on-fd โ€” reload if the specified file descriptor is ready ๐Ÿ”„
  • --brutal-reload-on-fd โ€” brutal reload if the specified file descriptor is ready ๐Ÿ’€
  • --ksm โ€” enable Linux KSM ๐Ÿง
  • --pcre-jit โ€” enable pcre jit (if available) โšก
  • --never-swap โ€” lock all memory pages avoiding swapping ๐Ÿ”’

touchy-feely reload territory (in the literal "a file got touched" sense, not the emotional sense ๐Ÿ™ˆ):

  • --touch-reload โ€” reload uWSGI if the specified file is modified/touched ๐Ÿ”„
  • --touch-workers-reload โ€” trigger reload of (only) workers if the specified file is modified/touched ๐Ÿ‘ท
  • --touch-mules-reload โ€” reload mules if the specified file is modified/touched ๐Ÿด
  • --touch-spoolers-reload โ€” reload spoolers if the specified file is modified/touched ๐Ÿงต
  • --touch-chain-reload โ€” trigger chain reload if the specified file is modified/touched โ›“๏ธ
  • --touch-logrotate โ€” trigger logrotation if the specified file is modified/touched ๐Ÿ“œ
  • --touch-logreopen โ€” trigger log reopen if the specified file is modified/touched ๐Ÿ“œ
  • --touch-exec โ€” run command when the specified file is modified/touched (syntax: file command) โšก
  • --touch-signal โ€” signal when the specified file is modified/touched (syntax: file signal) ๐Ÿ“ก
  • --fs-reload โ€” graceful reload when the specified filesystem object is modified ๐ŸŒธ
  • --fs-brutal-reload โ€” brutal reload when the specified filesystem object is modified ๐Ÿ’€
  • --fs-signal โ€” raise a uwsgi signal when the specified filesystem object is modified (syntax: file signal) ๐Ÿ“ก
  • --check-mountpoint, --mountpoint-check, --check-mount, --mount-check โ€” destroys the instance if a filesystem is no longer reachable (super useful for reliable Fuse management) ๐Ÿ’€
  • --propagate-touch โ€” over-engineering option for systems with flaky signal management ๐Ÿ™ˆ
  • --limit-post โ€” limits request body ๐Ÿซถ
  • --no-orphans โ€” automatically kills workers if master dies (can be dangerous for availability) ๐Ÿ˜ฌ
  • --prio โ€” sets processes/threads priority ๐Ÿ’…
  • --cpu-affinity โ€” sets cpu affinity ๐Ÿงš
  • --post-buffering โ€” sets the size in bytes after which it will buffer to disk instead of memory ๐Ÿ“ฆ
  • --post-buffering-bufsize โ€” sets buffer size for read() in post buffering mode ๐Ÿ“–
  • --body-read-warning โ€” sets the amount of allowed memory allocation (in megabytes) for request body before starting printing a warning โš ๏ธ
  • --upload-progress โ€” enables creation of .json files in the specified directory during a file upload ๐Ÿ“
  • --no-default-app โ€” does not fallback to default app ๐Ÿšซ
  • --manage-script-name โ€” automatically rewrites SCRIPT_NAME and PATH_INFO โœจ
  • --ignore-script-name โ€” ignores SCRIPT_NAME ๐Ÿ™…โ€โ™€๏ธ
  • --catch-exceptions โ€” reports exception as http output (discouraged, use only for testing) ๐Ÿ˜ญ
  • --reload-on-exception โ€” reloads a worker when 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 โ€” enables metrics subsystem ๐Ÿ“Š
  • --metric โ€” adds a custom metric ๐Ÿ“ˆ
  • --metric-threshold, --metric-alarm, --alarm-metric โ€” adds a metric threshold/alarm ๐Ÿšจ
  • --metrics-dir, --metric-dir โ€” exports metrics as text files to the specified directory ๐Ÿ“‚
  • --metrics-dir-restore, --metric-dir-restore โ€” restores last value taken from the metrics dir โ™ป๏ธ
  • --metrics-no-cores โ€” disables generation of cores-related metrics ๐Ÿšซ
  • --udp โ€” runs the udp server on the specified address ๐Ÿ“ก
  • --stats, --stats-server โ€” enables the stats server on the specified address ๐Ÿ“Š
  • --stats-http โ€” prefixes stats server json output with http headers ๐ŸŒ
  • --stats-minified, --stats-min โ€” minifies statistics json output โœจ
  • --stats-push โ€” pushes the stats json to the specified destination ๐Ÿ“ค
  • --stats-pusher-default-freq, --stats-pushers-default-freq โ€” sets the default frequency of stats pushers โฑ๏ธ
  • --stats-no-cores โ€” disables generation of cores-related stats ๐Ÿšซ
  • --stats-no-metrics โ€” does not include metrics in stats output ๐Ÿ™ˆ
  • --multicast โ€” subscribes to specified multicast group ๐Ÿ“ก
  • --multicast-ttl โ€” sets multicast ttl โณ
  • --multicast-loop โ€” sets multicast loop (default 1) ๐Ÿ”
  • --master-fifo โ€” enables the master fifo ๐ŸŽ€
  • --notify-socket โ€” enables the notification socket ๐Ÿ””
  • --subscription-notify-socket โ€” sets the notification socket for subscriptions ๐Ÿ“ฌ
  • --legion โ€” becomes a member of a legion ๐Ÿ‘‘
  • --legion-mcast โ€” becomes a member of a legion (shortcut for multicast) ๐Ÿ›ฐ๏ธ
  • --legion-node โ€” adds a node to a legion โž•
  • --legion-freq โ€” sets the frequency of legion packets ๐Ÿ“ถ
  • --legion-tolerance โ€” sets the tolerance of 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 โ€” sets the clock skew tolerance of legion subsystem (default 30 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 new node joining legion ๐Ÿซถ
  • --legion-node-left โ€” action to call when a node leaves legion ๐Ÿšช
  • --legion-quorum โ€” sets the quorum of a legion ๐Ÿ—ณ๏ธ
  • --legion-scroll โ€” sets the scroll of a legion ๐Ÿ“œ
  • --legion-scroll-max-size โ€” sets max size of legion scroll buffer ๐Ÿ“
  • --legion-scroll-list-max-size โ€” sets max size of legion scroll list buffer ๐Ÿ“
  • --subscriptions-sign-check โ€” sets digest algorithm and certificate directory for secured subscription system ๐Ÿ”
  • --subscriptions-sign-check-tolerance โ€” sets the maximum tolerance (in seconds) of clock skew for secured subscription system โฑ๏ธ
  • --subscriptions-sign-skip-uid โ€” skips signature check for the specified uid when using unix sockets credentials ๐Ÿ†”
  • --subscriptions-credentials-check โ€” adds a directory to search for subscriptions key credentials ๐Ÿ”‘
  • --subscriptions-use-credentials โ€” enables management of SCM_CREDENTIALS in subscriptions UNIX sockets ๐Ÿชช
  • --subscription-algo โ€” sets load balancing algorithm for the subscription system โš–๏ธ
  • --subscription-dotsplit โ€” tries to fallback to the next part (dot based) in subscription key ๐Ÿ”€
  • --subscribe-to, --st, --subscribe โ€” subscribes to the specified subscription server ๐Ÿ“ก
  • --subscribe2 โ€” subscribes to the specified subscription server using advanced keyval syntax โœจ
  • --subscribe-freq โ€” sends subscription announce at the specified interval โฒ๏ธ
  • --subscription-tolerance โ€” sets tolerance for subscription servers ๐Ÿซ‚
  • --unsubscribe-on-graceful-reload โ€” forces unsubscribe request even during graceful reload ๐Ÿ”„
  • --start-unsubscribed โ€” configures subscriptions but does not send them (useful with master fifo) ๐Ÿคซ
  • --subscribe-with-modifier1 โ€” forces the specified modifier1 when subscribing 1๏ธโƒฃ
  • --snmp โ€” enables the embedded snmp server ๐ŸŒ
  • --snmp-community โ€” sets the snmp community string ๐Ÿ”ค
  • --ssl-verbose โ€” be verbose about SSL errors ๐Ÿ—ฃ๏ธ
  • --ssl-verify-depth โ€” sets maximum certificate verification depth ๐Ÿ“œ
  • --sni โ€” adds an SNI-governed SSL context ๐Ÿ”’
  • --sni-dir โ€” checks for cert/key/client_ca file in the specified directory and creates a sni/ssl context on demand ๐Ÿ“
  • --sni-dir-ciphers โ€” sets ssl ciphers for sni-dir option ๐Ÿ”
  • --ssl-enable3, --ssl-enable-sslv3 โ€” enables SSLv3 (insecure) ๐Ÿ˜ฑ
  • --ssl-enable-tlsv1 โ€” enables TLSv1 (insecure) ๐Ÿ˜ฑ
  • --ssl-option โ€” sets a raw ssl option (numeric value) ๐Ÿ”ข
  • --sni-regexp โ€” adds an SNI-governed SSL context (the key is a regexp) ๐Ÿงฉ
  • --ssl-tmp-dir โ€” stores ssl-related temp files in the specified directory ๐Ÿ—‚๏ธ
  • --check-interval โ€” sets the interval (in seconds) of master checks โฑ๏ธ
  • --forkbomb-delay โ€” sleeps for the specified number of seconds when a forkbomb is detected ๐Ÿ’ฃ
  • --binary-path โ€” forces binary path ๐Ÿ“
  • --privileged-binary-patch โ€” patches the uwsgi binary with a new command (before privileges drop) ๐Ÿฉน
  • --unprivileged-binary-patch โ€” patches the uwsgi binary with a new command (after privileges drop) ๐Ÿฉน
  • --privileged-binary-patch-arg โ€” patches the uwsgi binary with a new command and arguments (before privileges drop) ๐Ÿฉน
  • --unprivileged-binary-patch-arg โ€” patches the uwsgi binary with a new command and arguments (after privileges drop) ๐Ÿฉน
  • --async โ€” enables async mode with specified cores โšก
  • --max-fd โ€” sets maximum number of file descriptors (requires root privileges) ๐Ÿ”ข
  • --logto โ€” sets logfile/udp address ๐Ÿ“
  • --logto2 โ€” logs to specified file or udp address after privileges drop ๐Ÿ“
  • --log-format, --logformat โ€” sets advanced format for request logging ๐ŸŽจ
  • --logformat-strftime, --log-format-strftime โ€” applies strftime to logformat output ๐Ÿ•ฐ๏ธ
  • --logfile-chown โ€” chowns logfiles ๐Ÿ‘ค
  • --logfile-chmod โ€” chmods logfiles ๐Ÿ”ง
  • --log-syslog โ€” logs to syslog ๐Ÿ“จ
  • --log-socket โ€” sends logs to the specified socket ๐Ÿ”Œ
  • --req-logger, --logger-req โ€” sets/appends a request logger ๐Ÿชต
  • --logger โ€” sets/appends a logger ๐Ÿชต
  • --logger-list, --loggers-list โ€” lists enabled loggers ๐Ÿ“‹
  • --threaded-logger โ€” offloads log writing to a thread ๐Ÿงต
  • --log-encoder โ€” adds an item in the log encoder chain ๐Ÿ”—
  • --log-req-encoder โ€” adds an item in the log req encoder chain ๐Ÿ”—
  • --log-drain โ€” drains (does not show) log lines matching the specified regexp ๐Ÿšซ
  • --log-filter โ€” shows only log lines matching the specified regexp ๐Ÿ”
  • --log-route โ€” logs to the specified named logger if regexp applied on logline matches ๐Ÿ›ฃ๏ธ
  • --log-req-route โ€” logs requests to the specified named logger if regexp applied on logline matches ๐Ÿ›ฃ๏ธ
  • --use-abort โ€” calls abort() on segfault/fpe, could be useful for generating a core dump ๐Ÿ’ฅ
  • --alarm โ€” creates a new alarm, syntax: <alarm> <plugin:args> ๐Ÿšจ
  • --alarm-cheap โ€” uses main alarm thread rather than create dedicated threads for curl-based alarms ๐Ÿงต
  • --alarm-freq โ€” tunes the anti-loop alarm system (default 3 seconds) โฒ๏ธ
  • --alarm-fd โ€” raises the specified alarm when an fd is read for read (by default it reads 1 byte, set 8 for eventfd) ๐Ÿ“Ÿ
  • --alarm-segfault โ€” raises the specified alarm when the segmentation fault handler is executed ๐Ÿ’€
  • --segfault-alarm โ€” when the segfault handler does its thing, raise the alarm you picked ๐Ÿ’€ fr fr
  • --alarm-backlog โ€” socket backlog queue is full? raise the specified alarm ๐Ÿ””
  • --backlog-alarm โ€” same vibe, same alarm, socket backlog queue full ๐Ÿ‘‘
  • --lq-alarm โ€” yep, raise the specified alarm when the socket backlog queue is full
  • --alarm-lq โ€” it's giving "socket backlog queue full โ†’ raise that alarm" โœจ
  • --alarm-listen-queue โ€” raise the specified alarm when the socket backlog queue is full (bestie there are SO many spellings of this one, pick your fave)
  • --listen-queue-alarm โ€” socket backlog queue full, raise the alarm, that's the whole job
  • --log-alarm โ€” when a log line matches the regexp you gave, raise the specified alarm. syntax: <alarm>[,alarm...] <regexp> ๐ŸŽ€
  • --alarm-log โ€” same energy: log line matches the regexp โ†’ raise the specified alarm. syntax: <alarm>[,alarm...] <regexp>
  • --not-log-alarm โ€” skip the specified alarm when a log line matches the regexp. syntax: <alarm>[,alarm...] <regexp> ๐Ÿ™ˆ
  • --not-alarm-log โ€” skip that alarm when the log line matches. syntax: <alarm>[,alarm...] <regexp>
  • --alarm-list โ€” show me all the enabled alarms ๐Ÿ‘€
  • --alarms-list โ€” list enabled alarms (plural slay)
  • --alarm-msg-size โ€” set the max size of an alarm message (default 8192) ๐Ÿ“
  • --log-master โ€” delegate logging to the master process, hand it off ๐Ÿ’…
  • --log-master-bufsize โ€” set the buffer size for the master logger. heads up: bigger log messages will be truncated โœ‚๏ธ
  • --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 reload ๐Ÿ”„
  • --log-truncate โ€” truncate the log on startup, fresh start energy
  • --log-maxsize โ€” set the maximum logfile size
  • --log-backupname โ€” set the logfile name to use after rotation
  • --logdate โ€” prefix logs with a date or a strftime string ๐Ÿ“…
  • --log-date โ€” prefix logs with date or a strftime string (same, cuter hyphen)
  • --log-prefix โ€” prefix logs with a string of your choosing
  • --log-zero โ€” log responses that have no body
  • --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 specified size
  • --log-sendfile โ€” log sendfile requests
  • --log-ioerror โ€” log requests with io errors ๐Ÿ˜ญ
  • --log-micros โ€” report response time in microseconds instead of milliseconds โฑ๏ธ
  • --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 ๐Ÿ‘‘
  • --drop-after-init โ€” run privileges drop after plugin initialization, and heads up: superseded by drop-after-apps
  • --drop-after-apps โ€” run privileges drop after apps loading, and fyi: superseded by master-as-root
  • --force-cwd โ€” force the initial working directory to the value you specify
  • --binsh โ€” override /bin/sh (it's 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) ๐Ÿช™
  • --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
  • --cheaper-list โ€” list enabled cheapers algorithms
  • --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
  • --idle โ€” set idle mode (put uWSGI in cheap mode after inactivity)
  • --die-on-idle โ€” shutdown uWSGI when idle ๐Ÿ’€
  • --mount โ€” load application under a mountpoint
  • --worker-mount โ€” load application under a mountpoint in the specified worker, or after workers spawn
  • --threads โ€” run each worker in prethreaded mode with the number of threads you specify ๐Ÿงต
  • --thread-stacksize โ€” set threads stacksize
  • --threads-stacksize โ€” set threads stacksize
  • --thread-stack-size โ€” set threads stacksize
  • --threads-stack-size โ€” set threads stacksize
  • --vhost โ€” enable virtualhosting mode (based on the SERVER_NAME variable)
  • --vhost-host โ€” enable virtualhosting mode (based on the HTTP_HOST variable)
  • --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
  • --error-page-403 โ€” add an error page (html) for managed 403 response
  • --error-page-404 โ€” add an error page (html) for managed 404 response
  • --error-page-500 โ€” add an error page (html) for managed 500 response
  • --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
  • --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 the default timeout for chunked input
  • --clock โ€” set a clock source โฐ
  • --clock-list โ€” list enabled clocks
  • --clocks-list โ€” list enabled clocks
  • --add-header โ€” automatically add HTTP headers to the response
  • --rem-header โ€” automatically remove the specified HTTP header from the response
  • --del-header โ€” automatically remove the specified HTTP header from the response
  • --collect-header โ€” store the specified response header in a request var (syntax: header var)
  • --response-header-collect โ€” grab that response header and stash it in a request var, no cap (syntax: header var) ๐Ÿ’–
  • --pull-header โ€” stash that response header in a request var AND yeet it out of the response (syntax: header var) ๐Ÿซถ
  • --check-static โ€” peek for static files inside the directory you name ๐Ÿ‘€
  • --check-static-docroot โ€” peek for static files in the requested DOCUMENT_ROOT
  • --static-check โ€” same energy as --check-static: check for static files in the specified directory
  • --static-map โ€” map 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 โ€” skip the extension you name from staticfile checks
  • --static-index โ€” if a directory is requested, search for the file you specify
  • --static-safe โ€” skip security checks when the file is under the path you name
  • --static-cache-paths โ€” put resolved paths in the uWSGI cache for the number of seconds you specify
  • --static-cache-paths-name โ€” use the cache you name for static paths
  • --mimefile โ€” set mime types file path (default /etc/mime.types) ๐Ÿ“
  • --mime-file โ€” set mime types file path (default /etc/mime.types)
  • --static-expires-type โ€” set the Expires header based on content type
  • --static-expires-type-mtime โ€” set the Expires header based on content type and file mtime
  • --static-expires โ€” set the Expires header based on a filename regexp
  • --static-expires-mtime โ€” set the Expires header based on a filename regexp and file mtime
  • --static-expires-uri โ€” set the Expires header based on a REQUEST_URI regexp
  • --static-expires-uri-mtime โ€” set the Expires header based on a REQUEST_URI regexp and file mtime
  • --static-expires-path-info โ€” set the Expires header based on a PATH_INFO regexp
  • --static-expires-path-info-mtime โ€” set the Expires header based on a PATH_INFO regexp and file mtime
  • --static-gzip โ€” if the regexp you supply matches the static file translation, it will search for a gzip version ๐Ÿฆ‹
  • --static-gzip-all โ€” check for a gzip version of all requested static files
  • --static-gzip-dir โ€” check for a gzip version of all requested static files in the specified dir/prefix
  • --static-gzip-prefix โ€” check for a gzip version of all requested static files in the specified dir/prefix
  • --static-gzip-ext โ€” check for a gzip version of all requested static files with the specified ext/suffix
  • --static-gzip-suffix โ€” check for a gzip version of all requested static files with the specified ext/suffix
  • --honour-range โ€” enable support for the HTTP Range header
  • --offload-threads โ€” set the number of offload threads to spawn (per-worker, default 0) ๐Ÿงต
  • --offload-thread โ€” set the number of offload threads to spawn (per-worker, default 0)
  • --file-serve-mode โ€” set static file serving mode
  • --fileserve-mode โ€” set static file serving mode
  • --disable-sendfile โ€” disable sendfile() and rely on boring read()/write() instead ๐Ÿ’€
  • --check-cache โ€” check for response data in the specified cache (empty for default cache)
  • --close-on-exec โ€” set close-on-exec on connection sockets (could be required for spawning processes in requests)
  • --close-on-exec2 โ€” set 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 โ€” try to remove all of the generated file/sockets ๐Ÿงน
  • --file-write โ€” write the specified content to the specified file (syntax: file=value) before privileges drop
  • --cgroup โ€” put the processes in the specified cgroup
  • --cgroup-opt โ€” set value in specified cgroup option
  • --cgroup-dir-mode โ€” set permission for cgroup directory (default is 700)
  • --namespace โ€” run in a new namespace under the specified rootfs
  • --namespace-keep-mount โ€” keep the specified mountpoint in your namespace
  • --ns โ€” run in a new namespace under the specified rootfs
  • --namespace-net โ€” add network namespace
  • --ns-net โ€” add network namespace
  • --enable-proxy-protocol โ€” enable PROXY1 protocol support (only for http parsers)
  • --reuse-port โ€” enable REUSE_PORT flag on socket (BSD only)
  • --tcp-fast-open โ€” enable TCP_FASTOPEN flag on TCP sockets with the specified qlen value
  • --tcp-fastopen โ€” enable TCP_FASTOPEN flag on TCP sockets with the specified qlen value
  • --tcp-fast-open-client โ€” use sendto(..., MSG_FASTOPEN, ...) instead of connect() if supported
  • --tcp-fastopen-client โ€” use sendto(..., MSG_FASTOPEN, ...) instead of connect() if supported
  • --zerg โ€” attach to a zerg server ๐Ÿ‘พ
  • --zerg-fallback โ€” fallback to normal sockets if the zerg server is not available
  • --zerg-server โ€” enable the zerg server on the specified UNIX socket
  • --cron โ€” add a cron task โฐ
  • --cron2 โ€” add a cron task (key=val syntax)
  • --unique-cron โ€” add a unique cron task
  • --cron-harakiri โ€” set the maximum time (in seconds) we wait for cron command to complete
  • --legion-cron โ€” add a cron task runnable only when the instance is a lord of the specified legion
  • --cron-legion โ€” add a cron task runnable only when the instance is a lord of the specified legion
  • --unique-legion-cron โ€” add a unique cron task runnable only when the instance is a lord of the specified legion
  • --unique-cron-legion โ€” add a unique cron task runnable only when the instance is a lord of the specified legion
  • --loop โ€” select the uWSGI loop engine
  • --loop-list โ€” list enabled loop engines
  • --loops-list โ€” list enabled loop engines
  • --worker-exec โ€” run the specified command as worker
  • --worker-exec2 โ€” run the specified command as worker (after post_fork hook)
  • --attach-daemon โ€” attach a command/daemon to the master process (the command has to not go in background)
  • --attach-control-daemon โ€” attach 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 โ€” attach a command/daemon to the master process managed by a pidfile (the command has to daemonize)
  • --smart-attach-daemon2 โ€” attach 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 daemon runs only on legion lord node
  • --legion-smart-attach-daemon โ€” same as --smart-attach-daemon but daemon runs only on legion lord node
  • --legion-smart-attach-daemon2 โ€” same as --smart-attach-daemon2 but daemon runs only on legion lord node
  • --daemons-honour-stdin โ€” do not change the stdin of external daemons to /dev/null
  • --attach-daemon2 โ€” attach-daemon keyval variant (supports smart modes too)
  • --plugins โ€” load uWSGI plugins ๐Ÿงฉ
  • --plugin โ€” load uWSGI plugins
  • --need-plugins โ€” load uWSGI plugins (exit on error)
  • --need-plugin โ€” load uWSGI plugins (exit on error)
  • --plugins-dir โ€” add a directory to uWSGI plugin search path
  • --plugin-dir โ€” add a directory to uWSGI plugin search path
  • --plugins-list โ€” list enabled plugins
  • --plugin-list โ€” list enabled plugins
  • --autoload โ€” try to automatically load plugins when unknown options are found
  • --dlopen โ€” blindly load a shared library ๐Ÿ™ˆ
  • --allowed-modifiers โ€” comma separated list of allowed modifiers
  • --remap-modifier โ€” remap request modifier from one id to another
  • --dump-options โ€” dump the full list of available options
  • --show-config โ€” show the current config reformatted as ini
  • --binary-append-data โ€” return 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 โ€” report uWSGI CFLAGS (useful for building external plugins)
  • --dot-h โ€” dump the uwsgi.h used for building the core (useful for building external plugins)
  • --config-py โ€” dump the uwsgiconfig.py used for building the core (useful for building external plugins)
  • --build-plugin โ€” build a uWSGI plugin for the current binary
  • --version โ€” print uWSGI version
  • --response-headers-limit โ€” set response header maximum size (default: 64k)

and that's the whole vibe check, bestie ๐Ÿ’… this page was uwsgi_rack_ruby31 2.0.21-debian, dated May 2023, and it's the UWSGI_RACK_RUBY31(1) manual โ€” periodt โœจ

๐Ÿ“ฆ where this page comes from