UWSGI_ROUTER_ACCESS(1)

๐ŸŽ€ NAME ๐ŸŽ€

okay so bestie, pull up a chair, because this is the manual page for uwsgi_router_access โ€” and if you're squinting at the title and wondering why it says UWSGI_ROUTER_ACCESS(1) up there, that's just the manual-name-meets-the-program-name situation every man page does. Same girl, two name tags. ๐Ÿ’…

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

pure C. self-healing. developer-friendly. she's literally serving WSGI and vibes at the same time. ๐Ÿซถโœจ

heads up bestie, this page is LONG (like, six parts long), so pace yourself. hydrate. we're going through every single flag, no skips, no summarising, periodt. ๐ŸŒธ

๐Ÿซถ SYNOPSIS ๐Ÿซถ

uwsgi-core [options...]

that's it. that's the whole thing. you run the thing, you give it options, she does stuff. main character energy fr fr. ๐Ÿ‘‘


โœจ DESCRIPTION โœจ

so this whole section is basically a massive options menu โ€” sockets first, then all the switches and knobs and levers. every single one of them is here, in order, no cap. ๐Ÿ”ฅ

๐ŸŒˆ Sockets & protocols

  • -s, --socket โ€” bind to the UNIX or TCP socket you specify, using the default protocol. ๐Ÿ’–
  • -s, --uwsgi-socket โ€” bind to the UNIX or TCP socket you specify, but this time using the uwsgi protocol. (yes, -s is on both of them, the letters get reused around here, it's a whole thing ๐Ÿ™ˆ)
  • --suwsgi-socket โ€” bind to the UNIX or TCP socket you specify, using uwsgi protocol over SSL. ๐Ÿ”’
  • --ssl-socket โ€” bind to the UNIX or TCP socket you specify, using uwsgi protocol over SSL. (yes it's twins with the one above, the manpage said it twice so I'm saying it twice ๐Ÿ’€)
  • --http-socket โ€” bind to the UNIX or TCP socket you specify, using the HTTP protocol. โœจ
  • --http-socket-modifier1 โ€” force the modifier1 you specify when you're using HTTP protocol.
  • --http-socket-modifier2 โ€” force the modifier2 you specify when you're using HTTP protocol.
  • --http11-socket โ€” bind to the UNIX or TCP socket you specify, using HTTP 1.1 (Keep-Alive) protocol. staying connected, so iconic. ๐Ÿฆ‹
  • --https-socket โ€” bind to the UNIX or TCP socket you specify, using HTTPS protocol. ๐Ÿ”
  • --https-socket-modifier1 โ€” force the modifier1 you specify when you're using HTTPS protocol.
  • --https-socket-modifier2 โ€” force the modifier2 you specify when you're using HTTPS protocol.
  • --fastcgi-socket โ€” bind to the UNIX or TCP socket you specify, using the FastCGI protocol. โšก
  • --fastcgi-nph-socket โ€” bind to the UNIX or TCP socket you specify, using the FastCGI protocol (nph mode).
  • --fastcgi-modifier1 โ€” force the modifier1 you specify when you're using FastCGI protocol.
  • --fastcgi-modifier2 โ€” force the modifier2 you specify when you're using FastCGI protocol.
  • --scgi-socket โ€” bind to the UNIX or TCP socket you specify, using the SCGI protocol.
  • --scgi-nph-socket โ€” bind to the UNIX or TCP socket you specify, using the SCGI protocol (nph mode).
  • --scgi-modifier1 โ€” force the modifier1 you specify when you're using SCGI protocol.
  • --scgi-modifier2 โ€” force the modifier2 you specify when you're using SCGI protocol.
  • --raw-socket โ€” bind to the UNIX or TCP socket you specify, using the RAW protocol.
  • --raw-modifier1 โ€” force the modifier1 you specify when you're using RAW protocol.
  • --raw-modifier2 โ€” force the modifier2 you specify when you're using RAW protocol.
  • --puwsgi-socket โ€” bind to the UNIX or TCP socket you specify, using persistent uwsgi protocol (puwsgi). she persists. ๐Ÿ’œ
  • --protocol โ€” force the protocol you specify for default sockets.
  • --socket-protocol โ€” force the protocol you specify for default sockets. (yep, same job as the one above, the manpage keeps both, so we keep both ๐Ÿซถ)
  • --shared-socket โ€” create a shared socket for advanced jailing or ipc.
  • --undeferred-shared-socket โ€” create a shared socket for advanced jailing or ipc, but in undeferred mode.

๐Ÿงต Workers, harakiri & the queue

  • -p, --processes โ€” spawn the number of workers/processes you specify.
  • -p, --workers โ€” spawn the number of workers/processes you specify. (same -p, same meaning, the page just names it twice and I respect that ๐Ÿ’…)
  • --thunder-lock โ€” serialize accept() usage, if possible. โšก
  • -t, --harakiri โ€” set the harakiri timeout. (dramatic name, very on brand ๐Ÿ—ก๏ธ)
  • --harakiri-verbose โ€” enable verbose mode for harakiri.
  • --harakiri-graceful-timeout โ€” the interval between a 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 the queue is greater than this threshold.
  • --harakiri-no-arh โ€” do not enable harakiri during after-request-hook.
  • --no-harakiri-arh โ€” do not enable harakiri during after-request-hook.
  • --no-harakiri-after-req-hook โ€” do not enable harakiri during after-request-hook. (three ways to say the same thing, and honestly? slay, options are a love language ๐Ÿ’–)
  • --backtrace-depth โ€” set the backtrace depth.
  • --mule-harakiri โ€” set the harakiri timeout for mule tasks.

๐Ÿ“ Config, placeholders & the option logic

  • -x, --xmlconfig โ€” load config from an xml file.
  • -x, --xml โ€” load config from an xml file. (yes, -x twice. iconic behaviour. ๐Ÿ™ˆ)
  • --config โ€” load configuration using the pluggable system.
  • --fallback-config โ€” re-exec uwsgi with the config you specify when the exit code is 1.
  • --strict โ€” enable strict mode (placeholder cannot be used). โš ๏ธ
  • --skip-zero โ€” skip the 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 placeholder you specify, syntax: 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 number you specify into a list starting from 1.
  • --for-readline โ€” (opt logic) for cycle, expand the file you specify into 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 the options blacklist context.
  • --end-blacklist โ€” clear the options blacklist context.
  • --whitelist โ€” set the options whitelist context.
  • --end-whitelist โ€” clear the options whitelist context.

๐Ÿฉน Write errors & warnings

  • --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 & config files

  • --inherit โ€” use the file you specify as a config template.
  • --include โ€” include the file you specify 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).

๐ŸŽ›๏ธ Instance control

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

๐Ÿงฎ Buffers, listen queue & memory

  • -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 the internal buffer size.
  • -m, --memory-report โ€” enable the memory report. ๐Ÿ“Š
  • --profiler โ€” enable the profiler you specify.
  • -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. (-C on both, we love a shared letter ๐Ÿ’…)
  • --chown-socket โ€” chown unix sockets.
  • --umask โ€” set the umask.
  • --freebind โ€” put the socket in freebind mode.
  • --map-socket โ€” map sockets to specific workers.

๐Ÿงš Threads & process names

  • -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 process names 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 the master process name.

๐Ÿ‘‘ Apps, master & the Emperor

  • -i, --single-interpreter โ€” do not use multiple interpreters (where available).
  • --need-app โ€” exit if no app can be loaded. ๐Ÿ˜ญ
  • -M, --master โ€” enable the master process.
  • --honour-stdin โ€” do not remap stdin to /dev/null.
  • --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. ๐Ÿ’€

and that is NOT the end bestie, don't you dare close the tab โ€” this page comes in 6 parts and we're only on part 1. so much more to go. stay hydrated, keep scrolling. ๐Ÿฆ‹โœจ
  • --emperor-pidfile โ€” drop the Emperor's pid into the file you name. king energy only โœจ
  • --emperor-tyrant โ€” flip the Emperor into Tyrant mode ๐Ÿ‘‘
  • --emperor-tyrant-nofollow โ€” in Tyrant mode, when it's checking uid/gid, don't follow symlinks. no cap.
  • --emperor-stats โ€” run the Emperor stats server ๐Ÿ“Š
  • --emperor-stats-server โ€” also runs the Emperor stats server (same vibe, different spelling bestie)
  • --early-emperor โ€” spawn the emperor as soon as possible. literally the moment it can. โšก
  • --emperor-broodlord โ€” run the emperor in BroodLord mode ๐Ÿฆ‹
  • --emperor-throttle โ€” set the throttling level (in milliseconds) for vassals that are acting up. default is 1000.
  • --emperor-max-throttle โ€” set the max throttling level (in milliseconds) for bad-behaving vassals. default is 3 minutes. they get the timeout corner fr ๐Ÿ’€
  • --emperor-magic-exec โ€” prefix vassals' config files with exec:// if they have the executable bit set ๐Ÿช„
  • --emperor-on-demand-extension โ€” search for a text file (vassal name + extension) that holds the on demand socket name
  • --emperor-on-demand-ext โ€” same thing, shorter name, we love a shortcut ๐Ÿ’…
  • --emperor-on-demand-directory โ€” turn on on demand mode by binding to the unix socket in the directory you specify, named like the vassal + .socket
  • --emperor-on-demand-dir โ€” the abbreviated twin of the above ๐ŸŽ€
  • --emperor-on-demand-exec โ€” use the output of the command you specify as the on demand socket name (the vassal name gets passed as the only argument)
  • --emperor-extra-extension โ€” allows the extension you specify in the Emperor (and the vassal gets called with --config)
  • --emperor-extra-ext โ€” yep, the short version of that one too โœจ
  • --emperor-no-blacklist โ€” disable the Emperor blacklisting subsystem. everyone gets a second chance ig ๐Ÿซถ
  • --emperor-use-clone โ€” use clone() instead of fork(), passing the unshare() flags you specify
  • --emperor-graceful-shutdown โ€” use vassals' graceful shutdown during ragnarok ๐ŸŒˆ
  • --emperor-cap โ€” set vassals capability
  • --vassals-cap โ€” set vassals capability (same deal)
  • --vassal-cap โ€” set vassals capability (also same deal, three aliases, iconic)
  • --imperial-monitor-list โ€” list the enabled imperial monitors ๐Ÿ‘€
  • --imperial-monitors-list โ€” list the enabled imperial monitors (the plural version, equally valid)
  • --vassals-inherit โ€” add config templates to vassals' config (it uses --inherit)
  • --vassals-include โ€” include config templates in vassals' config (uses --include instead of --inherit)
  • --vassals-inherit-before โ€” add config templates to vassals' config (uses --inherit, and parses before the vassal file)
  • --vassals-include-before โ€” include config templates in vassals' config (uses --include instead of --inherit, and parses before the vassal file)
  • --vassals-start-hook โ€” run the command you specify before each vassal starts ๐Ÿ
  • --vassals-stop-hook โ€” run the command you specify after a vassal's death ๐Ÿชฆ
  • --vassal-sos โ€” ask the emperor for reinforcement when you're overloaded. help bestie I'm drowning ๐Ÿ˜ญ
  • --vassal-sos-backlog โ€” ask the emperor for sos if the backlog queue has more items than the value you specify
  • --vassals-set โ€” automatically set the option you specify (via --set) for every single vassal
  • --vassal-set โ€” same thing, singular spelling, still sets it for every vassal ๐Ÿ’ซ
  • --heartbeat โ€” announce healthiness to the emperor ๐Ÿ’“
  • --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
  • --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

  • -h|--help โ€” show this help
  • -h|--usage โ€” show this help (again, same flag, we keep it real)
  • --print-sym โ€” print the content of the binary symbol you specify
  • --print-symbol โ€” print the content of the binary symbol you specify (full-name edition)
  • -r|--reaper โ€” call waitpid(-1,...) after each request to get rid of zombies ๐ŸงŸโ€โ™€๏ธ no zombies allowed in this house
  • -R|--max-requests โ€” reload workers after the amount of managed requests you specify
  • --max-requests-delta โ€” add (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 โ€” reload workers after the amount of seconds you specify. 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 the internal sockets timeout
  • --no-fd-passing โ€” disable file descriptor passing
  • --locks โ€” create the number of shared locks you specify
  • --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: it supports keyval too)
  • --safe-fd โ€” do not close the file descriptor you specify
  • --fd-safe โ€” do not close the file descriptor you specify (same energy, reversed words)

  • --cache โ€” create a shared cache containing the given elements
  • --cache-blocksize โ€” set cache blocksize
  • --cache-store โ€” enable persistent cache to disk
  • --cache-store-sync โ€” set the frequency of sync for the persistent cache
  • --cache-no-expire โ€” disable the 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, bestie, this is a loud one
  • --cache-udp-server โ€” bind the cache udp server (used only for set/update/delete) to the socket you specify
  • --cache-udp-node โ€” send cache update/deletion to the cache udp server you specify
  • --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 the frequency of sync for the persistent queue

  • -Q|--spooler โ€” run a spooler on the directory you specify ๐ŸŒ€
  • --spooler-external โ€” map spoolers' 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 directory you specify 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 (short edition, same vibe)
  • --mule โ€” add a mule ๐Ÿด
  • --mules โ€” add the number of mules you specify
  • --farm โ€” add a mule farm ๐Ÿด๐Ÿด๐Ÿด
  • --mule-msg-size โ€” set mule message buffer size
  • --signal โ€” send a uwsgi signal to a server
  • --signal-bufsize โ€” set buffer size for signal queue
  • --signals-bufsize โ€” set buffer size for signal queue (plural spelling, same thing)
  • --signal-timer โ€” add a timer. syntax: <signal> <seconds> โฐ
  • --timer โ€” add a timer. syntax: <signal> <seconds> (faster to type, same deal)
  • --signal-rbtimer โ€” add a redblack timer. syntax: <signal> <seconds>
  • --rbtimer โ€” add a redblack timer. syntax: <signal> <seconds> (short king)
  • --rpc-max โ€” maximum number of rpc slots. default: 64.
  • -L|--disable-logging โ€” disable request logging ๐Ÿ”‡

  • --flock โ€” lock the file you specify before starting, and exit if it's locked
  • --flock-wait โ€” lock the file you specify before starting, and wait if it's locked ๐Ÿ•ฐ๏ธ
  • --flock2 โ€” lock the file you specify after logging/daemon setup, exit if it's locked
  • --flock-wait2 โ€” lock the file you specify after logging/daemon setup, wait if it's 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 directory you specify
  • --pivot-root โ€” pivot_root() to the directories you specify (new_root and put_old must be separated with a space)
  • --pivot_root โ€” pivot_root() to the directories you specify (new_root and put_old must be separated with a space โ€” yes, underscore spelling, it's a whole thing)
  • --uid โ€” setuid to the user/uid you specify
  • --gid โ€” setgid to the group/gid you specify
  • --add-gid โ€” add the group id you specify to the process credentials
  • --immediate-uid โ€” setuid to the user/uid you specify IMMEDIATELY. no waiting around ๐Ÿ’…
  • --immediate-gid โ€” setgid to the group/gid you specify IMMEDIATELY
  • --no-initgroups โ€” disable the 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 the rootfs change
  • --setns-socket โ€” expose a unix socket returning namespace fds from /proc/self/ns ๐Ÿช
  • --setns-socket-skip โ€” skip the entry you specify when sending setns file descriptors
  • --setns-skip โ€” skip the entry you specify when sending setns file descriptors (short version, same skip)
  • --setns โ€” join a namespace created by an external uWSGI instance
  • --setns-preopen โ€” open /proc/self/ns as soon as possible and cache the fds
  • --jailed โ€” marks the instance as jailed, which forces the execution of post_jail hooks. periodt. ๐Ÿซถ
  • --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. useful for jailing systems. ๐Ÿ’–
  • --re-fork-post-jail โ€” fork() again after jailing. useful for jailing systems. ๐ŸŽ€
  • --hook-asap โ€” run the specified hook as soon as possible. it's giving instant. โšก
  • --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 enter the accepting phase. ๐Ÿ‘€
  • --hook-accepting1 โ€” run the specified hook after the first worker enters the accepting phase. 1๏ธโƒฃ
  • --hook-accepting-once โ€” run the specified hook after each worker enter 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 send a stop message. ๐Ÿ›‘
  • --hook-emperor-reload โ€” run the specified hook when the Emperor send 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. ๐Ÿ“ค
  • --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-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. ๐Ÿ‘‘
  • --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. ๐Ÿ“ถ
  • --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. โณ
  • --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. ๐Ÿ‘‘
  • --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. ๐Ÿ”’
  • --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 โ€” pings a signal when the file you picked gets modified/touched, bestie. syntax is file signal ๐Ÿซถ
  • --fs-reload โ€” graceful reload when the specified filesystem object gets modified โœจ
  • --fs-brutal-reload โ€” brutal reload when the specified filesystem object gets modified ๐Ÿ’€ no chill, no waiting
  • --fs-signal โ€” raise a uwsgi signal when the specified filesystem object gets modified, syntax: file signal ๐Ÿ’…
  • --check-mountpoint โ€” straight up destroys the instance if a filesystem is no more reachable. like, it's giving reliability for Fuse management ๐Ÿ™ˆ
  • --mountpoint-check โ€” same energy, bb: destroys the instance if a filesystem is no more reachable (useful for reliable Fuse management) ๐ŸŒธ
  • --check-mount โ€” yep, again: destroys the instance if a filesystem is no more reachable (useful for reliable Fuse management) ๐Ÿ’–
  • --mount-check โ€” the fourth twin ๐Ÿ‘‘ destroys the instance if a filesystem is no more reachable (useful for reliable Fuse management)
  • --propagate-touch โ€” the over-engineering option for systems with flaky signal management, no cap ๐ŸŽ€
  • --limit-post โ€” limit request body, periodt โœ‹
  • --no-orphans โ€” automatically kill workers if master dies. can be dangerous for availability though, so be careful bestie ๐Ÿ˜ญ
  • --prio โ€” set processes/threads priority โญ
  • --cpu-affinity โ€” set cpu affinity ๐Ÿ’…
  • --post-buffering โ€” set size in bytes after which it'll buffer to disk instead of memory ๐ŸŒˆ
  • --post-buffering-bufsize โ€” set buffer size for read() in post buffering mode ๐Ÿ“–
  • --body-read-warning โ€” set the amount of allowed memory allocation (in megabytes) for 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 default app ๐Ÿšซ
  • --manage-script-name โ€” automatically rewrite SCRIPT_NAME and PATH_INFO โœจ
  • --ignore-script-name โ€” ignore SCRIPT_NAME ๐Ÿ™ˆ
  • --catch-exceptions โ€” report exception as http output. discouraged, use only for testing, fr fr ๐Ÿงช
  • --reload-on-exception โ€” reload a worker when 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 โ€” enable metrics subsystem ๐Ÿ“Š
  • --metric โ€” add a custom metric โœจ
  • --metric-threshold โ€” add a metric threshold/alarm ๐Ÿšจ
  • --metric-alarm โ€” add a metric threshold/alarm (same thing, different name, iykyk) ๐Ÿšจ
  • --alarm-metric โ€” add a metric threshold/alarm โ€” yeah, three of them ๐Ÿ’€
  • --metrics-dir โ€” export metrics as text files to the specified directory ๐Ÿ“
  • --metrics-dir-restore โ€” restore last value taken from the metrics dir โ™ป๏ธ
  • --metric-dir โ€” export metrics as text files to the specified directory (singular edition) ๐Ÿ“‚
  • --metric-dir-restore โ€” restore 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 stats server json output with http headers ๐ŸŒ
  • --stats-minified โ€” minify statistics json output ๐Ÿ—œ๏ธ
  • --stats-min โ€” minify 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 stats output ๐Ÿ™…
  • --multicast โ€” subscribe to 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 โ€” became a member of a legion โš”๏ธ
  • --legion-mcast โ€” became 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 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 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 new node joining legion ๐Ÿซถ
  • --legion-node-left โ€” action to call node leaving 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 digest algorithm and certificate directory for secured subscription system ๐Ÿ”
  • --subscriptions-sign-check-tolerance โ€” set the maximum tolerance (in seconds) of clock skew for secured subscription system โฐ
  • --subscriptions-sign-skip-uid โ€” skip signature check for the specified uid when using unix sockets credentials ๐Ÿชช
  • --subscriptions-credentials-check โ€” add a directory to search for subscriptions key credentials ๐Ÿ”‘
  • --subscriptions-use-credentials โ€” enable management of SCM_CREDENTIALS in subscriptions UNIX sockets ๐ŸŽซ
  • --subscription-algo โ€” set load balancing algorithm for the subscription system โš–๏ธ
  • --subscription-dotsplit โ€” try to fallback to the next part (dot based) in subscription key ๐ŸŽฏ
  • --subscribe-to โ€” subscribe to the specified subscription server ๐Ÿ“จ
  • --st โ€” subscribe to the specified subscription server (yes, the short one) ๐Ÿ“จ
  • --subscribe โ€” subscribe to the specified subscription server ๐Ÿ“จ
  • --subscribe2 โ€” subscribe to the specified subscription server using advanced keyval syntax โœจ
  • --subscribe-freq โ€” send subscription announce at the specified interval โฑ๏ธ
  • --subscription-tolerance โ€” set tolerance for subscription servers ๐Ÿง˜
  • --unsubscribe-on-graceful-reload โ€” force unsubscribe request even during graceful reload ๐Ÿšช
  • --start-unsubscribed โ€” configure subscriptions but do not send them (useful with master fifo) ๐Ÿคซ
  • --subscribe-with-modifier1 โ€” force the specififed modifier1 when subscribing (typo is theirs, not mine, bestie ๐Ÿ˜ญ) ๐Ÿ› ๏ธ
  • --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 ssl ciphers for 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 specified cores โšก
  • --max-fd โ€” set maximum number of file descriptors (requires root privileges) ๐Ÿ‘‘
  • --logto โ€” set logfile/udp address ๐Ÿชต
  • --logto2 โ€” log to 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 regexp applied on logline matches ๐Ÿš
  • --log-req-route โ€” log requests to the specified named logger if regexp applied on 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> ๐Ÿšจ

Okay bestie the alarm options are giving โœจsecurity systemโœจ and honestly? obsessed.

  • --alarm-cheap โ€” use the main alarm thread instead of spinning up dedicated threads for curl-based alarms
  • --alarm-freq โ€” tune the anti-loop alarm system (default 3 seconds)
  • --alarm-fd โ€” raise the specified alarm when an fd is read for read (by default it reads 1 byte, set 8 for eventfd) ๐Ÿซถ
  • --alarm-segfault โ€” raise the specified alarm when the segmentation fault handler is executed ๐Ÿ’€
  • --segfault-alarm โ€” raise the specified alarm when the segmentation fault handler is executed (yes bestie, same thing, different name, iconic twin energy)
  • --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
  • --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 backlog alarm has six whole aliases and honestly? she's serving versatility. pick whichever one your heart says ๐ŸŽ€
  • --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 "nah, not today" version)
  • --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)

Now we're deep in logging territory and it's lowkey the most underrated glow-up in the whole config. โœจ

  • --log-master โ€” delegate logging to master process ๐Ÿ‘‘
  • --log-master-bufsize โ€” set the buffer size for the master logger. bigger log messages will be truncated (not it, keep your lines short bestie)
  • --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 log after reload
  • --log-truncate โ€” truncate log on startup
  • --log-maxsize โ€” set maximum logfile size
  • --log-backupname โ€” set logfile name after rotation
  • --logdate โ€” prefix logs with date or a strftime string
  • --log-date โ€” prefix logs with date or a strftime string
  • --log-prefix โ€” prefix logs with a string
  • --log-zero โ€” log responses without 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 X-Forwarded-For header instead of REMOTE_ADDR

  • --master-as-root โ€” leave master process running as root
  • --drop-after-init โ€” run privileges drop after plugin initialization, superseded by drop-after-apps
  • --drop-after-apps โ€” run privileges drop after apps loading, superseded by master-as-root
heads up bestie โ€” those last two are literally marked superseded, so they're the vintage pieces in your closet, not the fit you reach for ๐Ÿ’…
  • --force-cwd โ€” force the initial working directory to the specified value
  • --binsh โ€” override /bin/sh (used by exec hooks, it always fallback to /bin/sh)
  • --chdir โ€” chdir to specified directory before apps loading
  • --chdir2 โ€” chdir to specified directory after apps loading

Okay the lazy / cheap / cheaper family is my roman empire actually. ๐ŸŒธ

  • --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 to algorithm used for adaptive process spawning
  • --cheaper-step โ€” number of additional processes to spawn at each overload
  • --cheaper-overload โ€” increase workers after 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 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
  • --vhost โ€” enable virtualhosting mode (based on SERVER_NAME variable)
  • --vhost-host โ€” enable virtualhosting mode (based on HTTP_HOST variable)

And nowโ€ฆ the routing section. It's long. It's ornate. It's the main character. Let's go. ๐Ÿ‘‘

  • --route โ€” add a route
  • --route-host โ€” add a route based on 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 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 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 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
four whole route families โ€” plain, final, error, response โ€” and every single one has the same glorious list of triggers. symmetry, she is beauty ๐Ÿฆ‹
  • --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 bestie rise up ๐ŸŒˆ (and yes, every one of these has a twin name, that's just how this house runs):

  • --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 websockets ping/pong subsystem
  • --websocket-pong-tolerance โ€” set the tolerance (in seconds) of websockets ping/pong subsystem
  • --websockets-max-size โ€” set the max allowed size of websocket messages (in Kbytes, default 1024)
  • --websocket-max-size โ€” set the max allowed size of websocket messages (in Kbytes, default 1024)
  • --chunked-input-limit โ€” set the max size of a chunked input part (default 1MB, in bytes)
  • --chunked-input-timeout โ€” set default timeout for chunked input
  • --clock โ€” set a clock source โฐ
  • --clock-list โ€” list enabled clocks

and that's a wrap on part 5, but bestie we are NOT done โ€” there's more coming ๐Ÿซถ

  • --clocks-list โ€” lists every clock that's enabled rn ๐Ÿ•ฐ๏ธ
  • --add-header โ€” automatically slaps HTTP headers onto the response for u ๐Ÿ’…
  • --rem-header โ€” automatically yeets the specified HTTP header out of the response
  • --del-header โ€” automatically yeets the specified HTTP header out of the response
  • --collect-header โ€” stashes the specified response header into a request var (syntax: header var) ๐Ÿ“ฅ
  • --response-header-collect โ€” stashes the specified response header into a request var (syntax: header var)
  • --pull-header โ€” stashes the specified response header into a request var AND removes it from the response (syntax: header var)

  • --check-static โ€” checks for static files in the directory you name ๐Ÿ“‚
  • --check-static-docroot โ€” checks for static files in the requested DOCUMENT_ROOT
  • --static-check โ€” checks for static files in the directory you name
  • --static-map โ€” maps a mountpoint to a static directory (or a file) ๐Ÿ—บ๏ธ
  • --static-map2 โ€” like static-map but it completely appends the requested resource to the docroot
  • --static-skip-ext โ€” skips the specified extension when doing static-file checks
  • --static-index โ€” searches for the specified file when a directory gets requested
  • --static-safe โ€” skips security checks if the file lives under the specified path ๐Ÿ”
  • --static-cache-paths โ€” pops resolved paths into the uWSGI cache for the number of seconds you give
  • --static-cache-paths-name โ€” use the specified cache for static paths
  • --mimefile โ€” sets the mime types file path (default /etc/mime.types)
  • --mime-file โ€” sets the mime types file path (default /etc/mime.types)
  • --static-expires-type โ€” sets the Expires header based on content type โœจ
  • --static-expires-type-mtime โ€” sets the Expires header based on content type and file mtime
  • --static-expires โ€” sets the Expires header based on a filename regexp
  • --static-expires-mtime โ€” sets the Expires header based on a filename regexp and file 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 file 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 file mtime
  • --static-gzip โ€” if the regexp you supplied matches the static file translation, it'll go hunting for a gzip version ๐Ÿ—œ๏ธ
  • --static-gzip-all โ€” checks for a gzip version of every single requested static file
  • --static-gzip-dir โ€” checks for a gzip version of all requested static files in the specified dir/prefix
  • --static-gzip-prefix โ€” checks for a gzip version of all requested static files in the specified dir/prefix
  • --static-gzip-ext โ€” checks for a gzip version of all requested static files with the specified ext/suffix
  • --static-gzip-suffix โ€” checks for a gzip version of all requested static files with the specified ext/suffix
  • --honour-range โ€” turns on support for the HTTP Range header ๐Ÿ“
  • --offload-threads โ€” sets how many offload threads to spawn (per-worker, default 0)
  • --offload-thread โ€” sets how many offload threads to spawn (per-worker, default 0)
  • --file-serve-mode โ€” sets the static file serving mode
  • --fileserve-mode โ€” sets the static file serving mode
  • --disable-sendfile โ€” disables sendfile() and makes it rely on boring old read()/write() ๐Ÿ˜ด
  • --check-cache โ€” checks for response data in the specified cache (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 โ€” set uWSGI custom mode
  • --env โ€” set environment variable
  • --envdir โ€” loads a daemontools compatible envdir
  • --early-envdir โ€” loads a daemontools compatible envdir ASAP ๐Ÿƒโ€โ™€๏ธ
  • --unenv โ€” unsets an environment variable
  • --vacuum โ€” tries to remove all of the generated file/sockets ๐Ÿงน
  • --file-write โ€” writes the specified content to the specified file (syntax: file=value) before privileges drop
  • --cgroup โ€” puts the processes in the specified cgroup
  • --cgroup-opt โ€” sets a value in the specified cgroup option
  • --cgroup-dir-mode โ€” sets permission for the cgroup directory (default is 700)
  • --namespace โ€” runs in a new namespace under the specified rootfs
  • --namespace-keep-mount โ€” keeps the specified mountpoint in your namespace
  • --ns โ€” runs in a new namespace under the specified rootfs
  • --namespace-net โ€” adds a network namespace
  • --ns-net โ€” adds a network namespace
  • --enable-proxy-protocol โ€” enables PROXY1 protocol support (only for http parsers)
  • --reuse-port โ€” enables the REUSE_PORT flag on the socket (BSD only) ๐Ÿก
  • --tcp-fast-open โ€” enables the TCP_FASTOPEN flag on TCP sockets with the qlen value you specify
  • --tcp-fastopen โ€” enables the TCP_FASTOPEN flag on TCP sockets with the qlen value you specify
  • --tcp-fast-open-client โ€” uses sendto(..., MSG_FASTOPEN, ...) instead of connect() if it's supported
  • --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 specified UNIX socket

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

  • --plugins โ€” loads uWSGI plugins ๐Ÿงฉ
  • --plugin โ€” loads uWSGI plugins
  • --need-plugins โ€” loads uWSGI plugins (and exits on error)
  • --need-plugin โ€” loads uWSGI plugins (and exits on error)
  • --plugins-dir โ€” adds a directory to the uWSGI plugin search path
  • --plugin-dir โ€” adds a directory to the uWSGI plugin search path
  • --plugins-list โ€” lists the enabled plugins
  • --plugin-list โ€” lists the enabled plugins
  • --autoload โ€” tries to automatically load plugins when unknown options show up
  • --dlopen โ€” blindly loads a shared library ๐Ÿ™ˆ
  • --allowed-modifiers โ€” comma separated list of allowed modifiers
  • --remap-modifier โ€” remaps a request modifier from one id to another
  • --dump-options โ€” dumps the full list of available options
  • --show-config โ€” shows the current config reformatted as ini
  • --binary-append-data โ€” returns the content of a resource to stdout for appending to a uwsgi binary (for data:// usage)
  • --print โ€” simple print ๐Ÿ–จ๏ธ
  • --iprint โ€” simple print (immediate version)
  • --exit โ€” force exit() of the instance
  • --cflags โ€” reports uWSGI CFLAGS (useful for building external plugins)
  • --dot-h โ€” dumps the uwsgi.h used for building the core (useful for building external plugins)
  • --config-py โ€” dumps the uwsgiconfig.py used for building the core (useful for building external plugins)
  • --build-plugin โ€” builds a uWSGI plugin for the current binary
  • --version โ€” prints the uWSGI version
  • --response-headers-limit โ€” sets the response header maximum size (default: 64k)

and that's a wrap bestie, the whole options list ate and left no crumbs ๐Ÿ’…โœจ

tiny lil' footnote so u know where this came from: this is uwsgi_router_access from the 2.0.31-debian era, dated July 2026, section UWSGI_ROUTER_ACCESS(1) of the manual. stay iconic, go read your man pages, mwah ๐ŸŽ€๐Ÿฆ‹๐Ÿ’–
๐Ÿ“ฆ where this page comes from