UWSGI_PSGI(1)

โœจ UWSGI_PSGI(1) โœจ

hey bestie, welcome to the UWSGI_PSGI(1) manual page from the User Commands section. this is part 1 of 6, and it's giving "the origin story plus the giant options menu". no cap, every flag is here. ๐Ÿ’…


๐ŸŽ€ NAME ๐ŸŽ€

uwsgi_psgi - fast (pure C), self-healing, developer-friendly WSGI server


๐Ÿฆ‹ SYNOPSIS ๐Ÿฆ‹

uwsgi-core [options...]

๐Ÿ’– DESCRIPTION ๐Ÿ’–

okay so DESCRIPTION is where the options live. it's the whole menu, bestie. let's go in order, no skipping. ๐Ÿซถ

  • -s, --socket โ€” bind to the specified UNIX/TCP socket using 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 ๐ŸŒˆ
  • --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 the HTTP 1.1 (Keep-Alive) protocol โญ
  • --https-socket โ€” bind to the specified UNIX/TCP socket using the 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 the FastCGI protocol ๐Ÿ’–
  • --fastcgi-nph-socket โ€” bind to the specified UNIX/TCP socket using the 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 the SCGI protocol ๐ŸŒธ
  • --scgi-nph-socket โ€” bind to the specified UNIX/TCP socket using the 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 the 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 the 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) ๐Ÿซถ
  • -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-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 ๐Ÿ’€
  • --backtrace-depth โ€” set backtrace depth ๐Ÿชœ
  • --mule-harakiri โ€” set harakiri timeout for mule tasks ๐Ÿด
  • -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 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) ๐Ÿ”Ž
  • --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 โšช
  • --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() ๐Ÿšซ
  • --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) ๐Ÿ’‰
  • -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 ๐Ÿ“ค
  • -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 ๐Ÿ—บ๏ธ
  • -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) 1๏ธโƒฃ
  • --need-app โ€” exit if no app can be loaded ๐Ÿšช
  • -M, --master โ€” enable master process ๐Ÿ‘‘
  • --honour-stdin โ€” do not remap stdin to /dev/null ๐Ÿ“ฅ
  • --emperor โ€” run the Emperor ๐Ÿ‘‘
  • --emperor-proxy-socket โ€” force the vassal to become 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 u tell it ๐Ÿซถ
  • --emperor-tyrant โ€” puts the Emperor in Tyrant mode. yes it's literally called that, the drama ๐Ÿ‘‘
  • --emperor-tyrant-nofollow โ€” when checking for uid/gid in Tyrant mode, don't follow symlinks ๐Ÿšซ๐Ÿ”—
  • --emperor-stats โ€” runs the Emperor stats server โœจ
  • --emperor-stats-server โ€” also runs the Emperor stats server (same energy, different flag name, she contains multitudes ๐Ÿ’…)
  • --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 badly-behaving vassals. default is 1000 โฑ๏ธ
  • --emperor-max-throttle โ€” sets the max throttling level (in milliseconds) for badly-behaving vassals. default is 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) holding the on demand socket name ๐Ÿ”
  • --emperor-on-demand-ext โ€” same thing, short spelling, still searching for that text file (vassal name + extension) with the on demand socket name ๐Ÿ“
  • --emperor-on-demand-directory โ€” turns on on demand mode, binding to the unix socket in the directory u specify, named like the vassal + .socket ๐Ÿงฆ
  • --emperor-on-demand-dir โ€” the short-name twin: on demand mode, unix socket in the specified directory, named like the vassal + .socket ๐Ÿ’–
  • --emperor-on-demand-exec โ€” uses the output of the command u give 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 gets called with --config) ๐ŸŽ€
  • --emperor-extra-ext โ€” same deal, abbreviated: allows the specified extension in the Emperor (vassal called with --config) โœจ
  • --emperor-no-blacklist โ€” disables the Emperor blacklisting subsystem ๐Ÿšซ๐Ÿ“
  • --emperor-use-clone โ€” uses clone() instead of fork(), passing the unshare() flags u specify ๐ŸŒฑ
  • --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 into vassals config (uses --include instead of --inherit) ๐Ÿงฌ
  • --vassals-inherit-before โ€” adds config templates to vassals config (uses --inherit, and parses before the vassal file) โฎ๏ธ
  • --vassals-include-before โ€” includes config templates into vassals config (uses --include instead of --inherit, and parses before the vassal file) โฎ๏ธ
  • --vassals-start-hook โ€” runs the command u specify before each vassal starts ๐Ÿ
  • --vassals-stop-hook โ€” runs the command u specify after a vassal's death ๐Ÿชฆ
  • --vassal-sos โ€” asks the emperor for reinforcement when overloaded ๐Ÿ†˜
  • --vassal-sos-backlog โ€” asks the emperor for sos if the backlog queue has more items than the value u specify ๐Ÿ†˜๐Ÿ“ˆ
  • --vassals-set โ€” automatically sets the option u specify (via --set) for every vassal ๐ŸŽ›๏ธ
  • --vassal-set โ€” automatically sets the option u specify (via --set) for every vassal ๐ŸŽ›๏ธ
  • --heartbeat โ€” announces healthiness to the emperor ๐Ÿ’“

  • --reload-mercy โ€” sets the max time (in seconds) we wait for workers and other processes to die during reload/shutdown โณ
  • --worker-reload-mercy โ€” sets the max time (in seconds) a worker can take to reload/shutdown (default is 60) โณ
  • --mule-reload-mercy โ€” sets the max 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 โ€” exit instead of brutal reload on SIGTERM ๐Ÿ’€
  • --force-gateway โ€” forces the spawn of the first registered gateway without a master ๐ŸŒ‰
  • -h|--help โ€” show this help ๐Ÿ†˜
  • -h|--usage โ€” show this help ๐Ÿ†˜
  • --print-sym โ€” prints the content of the binary symbol u specify ๐Ÿ”Ž
  • --print-symbol โ€” prints the content of the binary symbol u specify ๐Ÿ”Ž
  • -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 โ€” set the ipcsem key via ftok() for avoiding duplicates ๐Ÿ”‘
  • --persistent-ipcsem โ€” do not remove ipcsem's on shutdown ๐Ÿงท
  • -A|--sharedarea โ€” creates a raw shared memory area of the specified pages (note: it supports keyval too) ๐Ÿง 
  • --safe-fd โ€” do not close the file descriptor u specify ๐Ÿ›Ÿ
  • --fd-safe โ€” do not close the file descriptor u specify ๐Ÿ›Ÿ

  • --cache โ€” creates a shared cache containing the given elements ๐Ÿ’พ
  • --cache-blocksize โ€” sets cache blocksize ๐Ÿงฑ
  • --cache-store โ€” enables persistent cache to disk ๐Ÿ’ฝ
  • --cache-store-sync โ€” sets the 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 socket u specify ๐Ÿ“ก
  • --cache-udp-node โ€” sends cache update/deletion to the cache udp server u specify ๐Ÿ“ก
  • --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 the frequency of sync for persistent queue ๐Ÿ”

  • -Q|--spooler โ€” runs a spooler on the directory u specify ๐Ÿ—‚๏ธ
  • --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()s to the directory u specify before each spooler task ๐Ÿ“
  • --spooler-processes โ€” sets the number of processes for spoolers ๐Ÿ‘ฏ
  • --spooler-quiet โ€” do not be verbose with spooler tasks ๐Ÿคซ
  • --spooler-max-tasks โ€” sets the max 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 โ€” add the specified number of mules ๐Ÿด๐Ÿด๐Ÿด
  • --farm โ€” add a mule farm ๐Ÿšœ
  • --mule-msg-size โ€” sets mule message buffer size ๐Ÿ“จ
  • --signal โ€” send 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 file u specify before starting, and exits if it's locked ๐Ÿ”’
  • --flock-wait โ€” locks the file u specify before starting, and waits if it's locked โณ๐Ÿ”’
  • --flock2 โ€” locks the file u specify after logging/daemon setup, exits if it's locked ๐Ÿ”’
  • --flock-wait2 โ€” locks the file u specify after logging/daemon setup, waits if it's locked โณ๐Ÿ”’
  • --pidfile โ€” creates a pidfile (before privileges drop) ๐Ÿชช
  • --pidfile2 โ€” creates a pidfile (after privileges drop) ๐Ÿชช
  • --safe-pidfile โ€” creates a safe pidfile (before privileges drop) ๐Ÿ›Ÿ๐Ÿชช
  • --safe-pidfile2 โ€” creates a safe pidfile (after privileges drop) ๐Ÿ›Ÿ๐Ÿชช
  • --chroot โ€” chroot()s to the directory u specify ๐Ÿฐ
  • --pivot-root โ€” pivot_root()s to the directories u specify (new_root and put_old must be separated with a space) ๐ŸŒณ
  • --pivot_root โ€” pivot_root()s to the directories u specify (new_root and put_old must be separated with a space) ๐ŸŒณ
  • --uid โ€” setuid to the user/uid u specify ๐Ÿ‘ค
  • --gid โ€” setgid to the group/gid u specify ๐Ÿ‘ฅ
  • --add-gid โ€” adds the group id u specify to the process credentials โž•๐Ÿ‘ฅ
  • --immediate-uid โ€” setuid to the user/uid u specify IMMEDIATELY โ€ผ๏ธ๐Ÿ‘ค
  • --immediate-gid โ€” setgid to the group/gid u specify IMMEDIATELY โ€ผ๏ธ๐Ÿ‘ฅ
  • --no-initgroups โ€” disables additional groups set via initgroups() ๐Ÿšซ๐Ÿ‘ฅ
  • --cap โ€” set process capability ๐Ÿ‘‘
  • --unshare โ€” unshare()s part of the processes and puts it in a new namespace ๐ŸŒ€
  • --unshare2 โ€” unshare()s part of the processes and puts it in a new namespace after the rootfs change ๐ŸŒ€
  • --setns-socket โ€” exposes a unix socket returning namespace fds from /proc/self/ns ๐Ÿงต
  • --setns-socket-skip โ€” skips the entry u specify when sending setns file descriptors โญ๏ธ
  • --setns-skip โ€” skips the entry u specify 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 โ€” mark the instance as jailed (this forces the post_jail hooks to actually run) ๐Ÿ’…
  • --refork โ€” fork() again after privileges drop. literally made for jailing systems ๐Ÿ”’
  • --re-fork โ€” same exact thing as --refork, just spelled differently: fork() again after privileges drop, for jailing systems. pick whichever one your fingers like โœจ
  • --refork-as-root โ€” fork() again before privileges drop. jailing systems stay winning ๐Ÿซถ
  • --re-fork-as-root โ€” the hyphenated twin of --refork-as-root: fork() again before privileges drop, still for jailing systems ๐Ÿ’–
  • --refork-post-jail โ€” fork() again after jailing. jail girlies, this one's for you ๐Ÿ”’
  • --re-fork-post-jail โ€” yes bestie it's the same as --refork-post-jail: fork() again after jailing ๐ŸŽ€

โœจ the hook options (aka the "run this exact thing at this exact moment" era) โœจ

  • --hook-asap โ€” run the specified hook 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 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
  • --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 is <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 (yep, same energy as the one above ๐Ÿ’…)

โœจ then we have the exec twins of every single one of those โœจ

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

โœจ mount, but make it timed โœจ

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

โœจ and now the unmount arc ๐ŸŒˆ (yes it's the same list but backwards)

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

โœจ waiting era (patience is a personality trait) โœจ

  • --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 โ€” same as --wait-for-interface: wait for the specified network interface to come up before running root hooks
  • --wait-interface-timeout โ€” set the timeout for wait-for-interface
  • --wait-for-iface โ€” again, same deal: 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 โ€” yep, another spelling: 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

โœจ call options (the function-calling supremacy) โœจ

  • --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 + instance vibes โœจ

  • --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 the 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 ๐Ÿ”Œ

โœจ memory, limits and reload behaviour โœจ

  • --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 ๐Ÿ”’

โœจ touch options (touch grass? no. touch files.) โœจ

  • --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 is file command ๐Ÿ’ซ
  • --touch-signal โ€” when the file you point at gets modified/touched, it raises a signal. syntax: file signal โœจ
  • --fs-reload โ€” when the filesystem object you name gets modified, do a graceful reload. soft, gentle, tasteful ๐ŸŽ€
  • --fs-brutal-reload โ€” same vibe check, but when the filesystem object changes it does a brutal reload. no mercy, no grace ๐Ÿ’€
  • --fs-signal โ€” raise a uwsgi signal when the filesystem object gets modified (syntax: file signal)
  • --check-mountpoint โ€” if a filesystem is no more reachable, it destroys the instance. yes, destroys. it's useful for reliable Fuse management ๐Ÿซถ
  • --mountpoint-check โ€” literally the same thing as --check-mountpoint: destroy the instance if a filesystem is no more reachable (useful for reliable Fuse management)
  • --check-mount โ€” again bestie, same energy: destroy the instance if a filesystem is no more reachable (useful for reliable Fuse management)
  • --mount-check โ€” the fourth twin ๐Ÿ˜ญ destroy the instance if a filesystem is no more reachable (useful for reliable Fuse management)
  • --propagate-touch โ€” the manual fr calls this an "over-engineering option for system with flaky signal management". take that however you want ๐Ÿ’…
  • --limit-post โ€” limit the request body
  • --no-orphans โ€” automatically kill workers if the master dies. heads up: this can be dangerous for availability โš ๏ธ
  • --prio โ€” set processes/threads priority
  • --cpu-affinity โ€” set cpu affinity
  • --post-buffering โ€” set the size in bytes after which it'll buffer to disk instead of memory
  • --post-buffering-bufsize โ€” set the buffer size for read() in post buffering mode
  • --body-read-warning โ€” set the amount of allowed memory allocation (in megabytes) for the request body before it starts printing a warning ๐Ÿ‘€
  • --upload-progress โ€” enable creation of .json files in the specified directory during a file upload ๐Ÿ“
  • --no-default-app โ€” do not fallback to the default app
  • --manage-script-name โ€” automatically rewrite SCRIPT_NAME and PATH_INFO
  • --ignore-script-name โ€” ignore SCRIPT_NAME
  • --catch-exceptions โ€” report the exception as http output. the page itself says discouraged, use only for testing ๐Ÿ™ˆ
  • --reload-on-exception โ€” reload a worker whenever an exception is raised
  • --reload-on-exception-type โ€” reload a worker when a specific exception type is raised
  • --reload-on-exception-value โ€” reload a worker when a specific exception value is raised
  • --reload-on-exception-repr โ€” reload a worker when a specific exception type+value (language-specific) is raised
  • --exception-handler โ€” add an exception handler
  • --enable-metrics โ€” turn on the metrics subsystem โœจ
  • --metric โ€” add a custom metric
  • --metric-threshold โ€” add a metric threshold/alarm
  • --metric-alarm โ€” add a metric threshold/alarm
  • --alarm-metric โ€” add a metric threshold/alarm
  • --metrics-dir โ€” export metrics as text files into the directory you specify
  • --metrics-dir-restore โ€” restore the last value taken from the metrics dir
  • --metric-dir โ€” export metrics as text files to the specified directory
  • --metric-dir-restore โ€” restore the last value taken from the metrics dir
  • --metrics-no-cores โ€” disable generation of cores-related metrics
  • --udp โ€” run the udp server on the specified address
  • --stats โ€” enable the stats server on the specified address
  • --stats-server โ€” enable the stats server on the specified address
  • --stats-http โ€” prefix the stats server json output with http headers
  • --stats-minified โ€” minify the statistics json output
  • --stats-min โ€” minify the statistics json output
  • --stats-push โ€” push the stats json to the specified destination
  • --stats-pusher-default-freq โ€” set the default frequency of stats pushers
  • --stats-pushers-default-freq โ€” set the default frequency of stats pushers
  • --stats-no-cores โ€” disable generation of cores-related stats
  • --stats-no-metrics โ€” do not include metrics in the stats output
  • --multicast โ€” subscribe to the specified multicast group
  • --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 โ€” declare 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 max size of legion scroll buffer
  • --legion-scroll-list-max-size โ€” set max size of legion scroll list buffer
  • --subscriptions-sign-check โ€” set the 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 the 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 specified subscription server
  • --st โ€” subscribe to the specified subscription server
  • --subscribe โ€” subscribe to the specified subscription server
  • --subscribe2 โ€” subscribe to the specified subscription server using advanced keyval syntax
  • --subscribe-freq โ€” send a 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 (yes, "specififed" โ€” that's the manpage's own typo, leaving it exactly as found ๐Ÿ’…)
  • --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 specified directory and create a sni/ssl context on demand โœจ
  • --sni-dir-ciphers โ€” set the ssl ciphers for the sni-dir option
  • --ssl-enable3 โ€” enable SSLv3 (insecure) โš ๏ธ
  • --ssl-enable-sslv3 โ€” enable SSLv3 (insecure) โš ๏ธ
  • --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 specified directory
  • --check-interval โ€” set the interval (in seconds) of master checks
  • --forkbomb-delay โ€” sleep for the specified number of seconds when a forkbomb is detected ๐Ÿ’€
  • --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 specified cores
  • --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
  • --logformat-strftime โ€” apply strftime to logformat output
  • --log-format-strftime โ€” apply strftime to logformat output
  • --logfile-chown โ€” chown logfiles
  • --logfile-chmod โ€” chmod logfiles
  • --log-syslog โ€” log to syslog
  • --log-socket โ€” send logs to the specified socket
  • --req-logger โ€” set/append a request logger
  • --logger-req โ€” set/append a request logger
  • --logger โ€” set/append a logger
  • --logger-list โ€” list enabled loggers
  • --loggers-list โ€” list enabled loggers
  • --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 specified regexp ๐Ÿšซ
  • --log-filter โ€” show only log lines matching the specified regexp
  • --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 โ€” use the main alarm thread instead of spawning dedicated threads for curl-based alarms. thread budget? saved. ๐Ÿ’…
  • --alarm-freq โ€” tune the anti-loop alarm system. default is 3 seconds, periodt.
  • --alarm-fd โ€” raise the specified alarm when an fd is read for read. by default it reads 1 byte, so set 8 if you're on eventfd. iykyk ๐Ÿซถ
  • --alarm-segfault โ€” raise the specified alarm when the segmentation fault handler gets executed ๐Ÿ˜ญ
  • --segfault-alarm โ€” raise the specified alarm when the segmentation fault handler gets executed. same vibe, different name, we love an alias ๐Ÿ‘‘
  • --alarm-backlog โ€” raise the specified alarm when the socket backlog queue is full ๐Ÿ”ฅ
  • --backlog-alarm โ€” raise the specified alarm when the socket backlog queue is full. yes bestie, another one ๐Ÿ’€
  • --lq-alarm โ€” raise the specified alarm when the socket backlog queue is full ๐Ÿ’–
  • --alarm-lq โ€” raise the specified alarm when the socket backlog queue is full โœจ
  • --alarm-listen-queue โ€” raise the specified alarm when the socket backlog queue is full ๐ŸŒธ
  • --listen-queue-alarm โ€” raise the specified alarm when the socket backlog queue is full. the alias family is literally thriving ๐ŸŒˆ
  • --log-alarm โ€” raise the specified alarm when a log line matches the specified regexp. syntax: <alarm>[,alarm...] <regexp> ๐ŸŽ€
  • --alarm-log โ€” raise the specified alarm when a log line matches the specified regexp. syntax: <alarm>[,alarm...] <regexp> โญ
  • --not-log-alarm โ€” skip the specified alarm when a log line matches the specified regexp. syntax: <alarm>[,alarm...] <regexp> โ€” the negate version, she said no ๐Ÿ™ˆ
  • --not-alarm-log โ€” skip the specified alarm when a log line matches the specified regexp. syntax: <alarm>[,alarm...] <regexp> ๐Ÿ’œ
  • --alarm-list โ€” list enabled alarms ๐Ÿ“‹
  • --alarms-list โ€” list enabled alarms ๐Ÿ“‹โœจ
  • --alarm-msg-size โ€” set the max size of an alarm message. default: 8192 ๐Ÿ‘‘
  • --log-master โ€” delegate logging to the master process ๐Ÿซก
  • --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 a reload ๐Ÿ”„
  • --log-truncate โ€” truncate the log on startup ๐Ÿงน
  • --log-maxsize โ€” set 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 a date or a strftime string ๐Ÿ“…๐Ÿ’–
  • --log-prefix โ€” prefix logs with a string ๐Ÿท๏ธ
  • --log-zero โ€” log responses without a body ๐Ÿ‘ป
  • --log-slow โ€” log requests slower than the specified number of milliseconds ๐ŸŒ
  • --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 ๐Ÿ‘‘ (yes, root root, be careful bestie)
  • --drop-after-init โ€” run privileges drop after plugin initialization. note: this is superseded by drop-after-apps ๐ŸŒฑ
  • --drop-after-apps โ€” run privileges drop after apps loading. note: this is superseded by master-as-root ๐ŸŒฑ
  • --force-cwd โ€” force the initial working directory to the specified value ๐Ÿ“
  • --binsh โ€” override /bin/sh. this is used by exec hooks, and it always fallback 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 the 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 mountpoint ๐Ÿ”๏ธ
  • --worker-mount โ€” load application under 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 spellings, one truth ๐Ÿ’…)
  • --vhost โ€” enable virtualhosting mode, based on the SERVER_NAME variable ๐Ÿ 
  • --vhost-host โ€” enable virtualhosting mode, based on the HTTP_HOST variable ๐Ÿ 

okay routing section, this is the main character of the options list, buckle up ๐Ÿซถ

  • --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 condition ๐Ÿค”
  • --route-if-not โ€” add a route based on 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 condition ๐Ÿค”๐Ÿ
  • --final-route-if-not โ€” add a final route based on 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 condition ๐Ÿค”๐Ÿšจ
  • --error-route-if-not โ€” add an error route based on 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 condition ๐Ÿค”๐Ÿ’ฌ
  • --response-route-if-not โ€” add a response route based on 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 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 ๐Ÿ’ฅ
  • --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 ๐Ÿ“‹๐Ÿ•ฐ๏ธ

okay bestie we're back in the options list, part six, the saga continues ๐Ÿ’…

  • --clocks-list โ€” lists all the enabled clocks โœจ
  • --add-header โ€” automatically adds HTTP headers to the response ๐Ÿ’Œ
  • --rem-header, --del-header โ€” automatically removes the HTTP header you name from the response ๐Ÿงน (yeah it's two names, same exact job, pick your fave)
  • --collect-header, --response-header-collect โ€” stores the response header you name into a request var. syntax: header var ๐ŸŽ€
  • --pull-header โ€” same stash-it-in-a-request-var energy, BUT it also yanks that header out of the response entirely. syntax: header var ๐Ÿซณ
  • --check-static, --static-check โ€” checks for static files in the directory you specify ๐Ÿ“‚
  • --check-static-docroot โ€” checks for static files inside the requested DOCUMENT_ROOT ๐Ÿ—‚๏ธ
  • --static-map โ€” maps a mountpoint to a static directory (or a file) ๐Ÿ”—
  • --static-map2 โ€” like --static-map except it completely appends the requested resource onto the docroot โž•
  • --static-skip-ext โ€” skips the extension you give from static file checks ๐Ÿšซ
  • --static-index โ€” searches for the file you name whenever a directory is requested ๐Ÿ”Ž
  • --static-safe โ€” skips the security checks if the file lives under the path you specify ๐Ÿ›ก๏ธ (iykyk, be careful with this one)
  • --static-cache-paths โ€” puts the resolved paths into the uWSGI cache for however many seconds you say โฑ๏ธ
  • --static-cache-paths-name โ€” uses this cache for static paths, bestie ๐ŸŽฏ
  • --mimefile, --mime-file โ€” sets the mime types file path. default is /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 the file's mtime ๐Ÿ•ฐ๏ธโž•
  • --static-expires โ€” sets the Expires header based on a filename regexp ๐Ÿงฌ
  • --static-expires-mtime โ€” sets the Expires header based on a filename regexp and the file's mtime ๐Ÿงฌโž•
  • --static-expires-uri โ€” sets the Expires header based on a REQUEST_URI regexp ๐Ÿงฌ
  • --static-expires-uri-mtime โ€” sets the Expires header based on a REQUEST_URI regexp and the file's mtime ๐Ÿงฌโž•
  • --static-expires-path-info โ€” sets the Expires header based on a PATH_INFO regexp ๐Ÿงฌ
  • --static-expires-path-info-mtime โ€” sets the Expires header based on a PATH_INFO regexp and the file's mtime ๐Ÿงฌโž•
  • --static-gzip โ€” if the regexp you hand it matches the static file translation, it goes looking for a gzip version ๐Ÿ—œ๏ธ
  • --static-gzip-all โ€” checks for a gzip version of literally every requested static file ๐Ÿ—œ๏ธโœจ
  • --static-gzip-dir, --static-gzip-prefix โ€” checks for a gzip version of all requested static files in the dir/prefix you give ๐Ÿ—œ๏ธ๐Ÿ“
  • --static-gzip-ext, --static-gzip-suffix โ€” checks for a gzip version of all requested static files with the ext/suffix you give ๐Ÿ—œ๏ธ๐Ÿท๏ธ
  • --honour-range โ€” turns on support for the HTTP Range header ๐Ÿ“
  • --offload-threads, --offload-thread โ€” sets how many offload threads to spawn (per-worker, default 0) ๐Ÿงต
  • --file-serve-mode, --fileserve-mode โ€” sets the static file serving mode ๐Ÿšš
  • --disable-sendfile โ€” disables sendfile() and makes it rely on the boring old read()/write() instead ๐Ÿ˜ด
  • --check-cache โ€” checks for response data in the cache you specify (leave it empty for the default cache) ๐Ÿ—ƒ๏ธ
  • --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 โ€” sets a uWSGI custom mode ๐ŸŽ›๏ธ
  • --env โ€” sets an environment variable ๐ŸŒ
  • --envdir โ€” loads a daemontools compatible envdir ๐Ÿ“ฅ
  • --early-envdir โ€” loads a daemontools compatible envdir ASAP, like right now, immediately ๐Ÿƒโ€โ™€๏ธ
  • --unenv โ€” unsets an environment variable ๐Ÿšฎ
  • --vacuum โ€” tries to remove all of the generated files/sockets ๐Ÿงฝ
  • --file-write โ€” writes the content you give to the file you give (syntax: file=value) before privileges drop โœ๏ธ
  • --cgroup โ€” puts the processes in the cgroup you specify ๐Ÿ“ฆ
  • --cgroup-opt โ€” sets a value in the cgroup option you specify โš™๏ธ
  • --cgroup-dir-mode โ€” sets the permission for the cgroup directory (default is 700) ๐Ÿ”
  • --namespace, --ns โ€” runs in a new namespace under the rootfs you specify ๐ŸŒŒ
  • --namespace-keep-mount โ€” keeps the mountpoint you name inside your namespace ๐Ÿ“Œ
  • --namespace-net, --ns-net โ€” adds a network namespace ๐ŸŒ
  • --enable-proxy-protocol โ€” enables PROXY1 protocol support (only for http parsers, no cap) ๐ŸŽซ
  • --reuse-port โ€” enables the REUSE_PORT flag on the socket (BSD only, sorry bestie) โ™ป๏ธ
  • --tcp-fast-open, --tcp-fastopen โ€” enables the TCP_FASTOPEN flag on TCP sockets with the qlen value you give โšก
  • --tcp-fast-open-client, --tcp-fastopen-client โ€” uses sendto(..., MSG_FASTOPEN, ...) instead of connect() if it's supported ๐Ÿš€
  • --zerg โ€” attaches to a zerg server ๐Ÿ‘พ
  • --zerg-fallback โ€” falls back to normal sockets if the zerg server isn't available ๐Ÿช‚
  • --zerg-server โ€” enables the zerg server on the UNIX socket you specify ๐Ÿ›
  • --cron โ€” adds a cron task โฐ
  • --cron2 โ€” adds a cron task (key=val syntax) โฐ๐Ÿ”‘
  • --unique-cron โ€” adds a unique cron task โœจโฐ
  • --cron-harakiri โ€” sets the max time (in seconds) we wait for a cron command to complete ๐Ÿ—ก๏ธ
  • --legion-cron, --cron-legion โ€” adds a cron task that only runs when the instance is a lord of the legion you specify ๐Ÿ‘‘
  • --unique-legion-cron, --unique-cron-legion โ€” adds a unique cron task that only runs when the instance is a lord of the legion you specify ๐Ÿ‘‘โœจ
  • --loop โ€” selects the uWSGI loop engine ๐Ÿ”
  • --loop-list, --loops-list โ€” lists the enabled loop engines ๐Ÿ“‹
  • --worker-exec โ€” runs the command you give as a worker ๐Ÿ‘ท
  • --worker-exec2 โ€” runs the command you give as a worker, but after the post_fork hook ๐Ÿ‘ทโž•
  • --attach-daemon โ€” attaches a command/daemon to the master process (and heads up: 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), and 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 only runs on the legion lord node ๐Ÿ‘‘
  • --legion-smart-attach-daemon โ€” same as --smart-attach-daemon but the daemon only runs on the legion lord node ๐Ÿ‘‘
  • --legion-smart-attach-daemon2 โ€” same as --smart-attach-daemon2 but the daemon only runs on the legion lord node ๐Ÿ‘‘
  • --daemons-honour-stdin โ€” does not change the stdin of external daemons to /dev/null ๐Ÿ™…โ€โ™€๏ธ
  • --attach-daemon2 โ€” the attach-daemon keyval variant (supports smart modes too) ๐Ÿ—๏ธ
  • --plugins, --plugin โ€” loads uWSGI plugins ๐Ÿงฉ
  • --need-plugins, --need-plugin โ€” loads uWSGI plugins, and exits on error ๐Ÿงฉ๐Ÿ›‘
  • --plugins-dir, --plugin-dir โ€” adds a directory to the uWSGI plugin search path ๐Ÿ“
  • --plugins-list, --plugin-list โ€” lists the enabled plugins ๐Ÿ“‹
  • --autoload โ€” tries to automatically load plugins whenever unknown options pop up ๐Ÿช„
  • --dlopen โ€” blindly loads a shared library ๐Ÿ™ˆ (yes, blindly, that's literally what it says)
  • --allowed-modifiers โ€” a comma separated list of allowed modifiers โœ…
  • --remap-modifier โ€” remaps a request modifier from one id to another ๐Ÿ”€
  • --dump-options โ€” dumps the full list of every available option ๐Ÿ“œ
  • --show-config โ€” shows the current config, reformatted as ini ๐Ÿชž
  • --binary-append-data โ€” returns the content of a resource to stdout so you can append it to a uwsgi binary (for data:// usage) ๐Ÿ“Ž
  • --print โ€” a simple print ๐Ÿ–จ๏ธ
  • --iprint โ€” a simple print, immediate version ๐Ÿ–จ๏ธโšก
  • --exit โ€” forces exit() of the instance ๐Ÿšช๐Ÿ’€
  • --cflags โ€” reports the 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 the uWSGI version ๐Ÿท๏ธ
  • --response-headers-limit โ€” sets the response header maximum size (default: 64k) ๐Ÿ“

and that's a wrap on the whole page bestie, you ATE this documentation ๐ŸŽ€โœจ this was uwsgi_psgi version 2.0.31-6build1, dated August 2026, and yeah she's long but she's iconic and now she lives rent free in your brain ๐Ÿ’– no cap, go read your config files responsibly ๐Ÿซถ

๐Ÿ“ฆ where this page comes from