UWSGI_GLUSTERFS(1)
β¨ NAME β¨
okay bestie, so this page you're reading is uwsgi_glusterfs β it's the manual for a fast (pure C), self-healing, developer-friendly WSGI server π no cap, that's literally the whole vibe.
π SYNOPSIS π
uwsgi-core [options...]
like. that's it. you run uwsgi-core and you hand it some options. iconic.
π DESCRIPTION π
buckle up bestie, this is a LOT of options and we're doing every single one, no skipping, no summarizing, we're eating the whole plate π
-s,--socketβ bind to the specified UNIX/TCP socket using default protocol-s,--uwsgi-socketβ bind to the specified UNIX/TCP socket using uwsgi protocol--suwsgi-socketβ bind to the specified UNIX/TCP socket using uwsgi protocol over SSL--ssl-socketβ bind to the specified UNIX/TCP socket using uwsgi protocol over SSL--http-socketβ bind to the specified UNIX/TCP socket using HTTP protocol--http-socket-modifier1β force the specified modifier1 when using HTTP protocol--http-socket-modifier2β force the specified modifier2 when using HTTP protocol--http11-socketβ bind to the specified UNIX/TCP socket using HTTP 1.1 (Keep-Alive) protocol--https-socketβ bind to the specified UNIX/TCP socket using HTTPS protocol--https-socket-modifier1β force the specified modifier1 when using HTTPS protocol--https-socket-modifier2β force the specified modifier2 when using HTTPS protocol--fastcgi-socketβ bind to the specified UNIX/TCP socket using FastCGI protocol--fastcgi-nph-socketβ bind to the specified UNIX/TCP socket using FastCGI protocol (nph mode)--fastcgi-modifier1β force the specified modifier1 when using FastCGI protocol--fastcgi-modifier2β force the specified modifier2 when using FastCGI protocol--scgi-socketβ bind to the specified UNIX/TCP socket using SCGI protocol--scgi-nph-socketβ bind to the specified UNIX/TCP socket using SCGI protocol (nph mode)--scgi-modifier1β force the specified modifier1 when using SCGI protocol--scgi-modifier2β force the specified modifier2 when using SCGI protocol--raw-socketβ bind to the specified UNIX/TCP socket using RAW protocol--raw-modifier1β force the specified modifier1 when using RAW protocol--raw-modifier2β force the specified modifier2 when using RAW protocol--puwsgi-socketβ bind to the specified UNIX/TCP socket using persistent uwsgi protocol (puwsgi)--protocolβ force the specified protocol for default sockets--socket-protocolβ force the specified protocol for default sockets--shared-socketβ create a shared socket for advanced jailing or ipc--undeferred-shared-socketβ create a shared socket for advanced jailing or ipc (undeferred mode)-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--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)--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 became an Emperor proxy--emperor-wrapperβ set a binary wrapper for vassals--emperor-wrapper-overrideβ set a binary wrapper for vassals to try before the default one--emperor-wrapper-fallbackβ set a binary wrapper for vassals to try as a last resort--emperor-nofollowβ do not follow symlinks when checking for mtime--emperor-procnameβ set the Emperor process name--emperor-freqβ set the Emperor scan frequency (default 3 seconds)--emperor-required-heartbeatβ set the Emperor tolerance about heartbeats--emperor-curse-toleranceβ set the Emperor tolerance about cursed vassals
--emperor-pidfileβ drops the Emperor pid into the file you name, so you can find it later π--emperor-tyrantβ puts the Emperor in Tyrant mode π no cap--emperor-tyrant-nofollowβ in Tyrant mode, do not follow symlinks when checking for uid/gid β nope, not today π«--emperor-statsβ runs the Emperor stats server β¨--emperor-stats-serverβ runs the Emperor stats server β¨ same energy--early-emperorβ spawns the emperor as soon as possible, like it's trying to beat the group chat to the tea β--emperor-broodlordβ runs the emperor in BroodLord mode, very main character π--emperor-throttleβ sets throttling level (in milliseconds) for bad behaving vassals; default is1000--emperor-max-throttleβ sets max throttling level (in milliseconds) for bad behaving vassals; default is3 minutes--emperor-magic-execβ if a vassal config file has the executable bit, prefixes it withexec://β magic β¨--emperor-on-demand-extension,--emperor-on-demand-extβ searches for a text file (vassal name + extension) containing the on demand socket name π--emperor-on-demand-directory,--emperor-on-demand-dirβ enables on demand mode binding to the unix socket in the specified directory, named like the vassal +.socketπ--emperor-on-demand-execβ uses the output of the specified command as the on demand socket name; the vassal name is passed as the only argument--emperor-extra-extension,--emperor-extra-extβ allows the specified extension in the Emperor; the vassal will be called with--config--emperor-no-blacklistβ disables the Emperor blacklisting subsystem π«--emperor-use-cloneβ usesclone()instead offork(), passing the specifiedunshare()flags--emperor-graceful-shutdownβ during ragnarok, uses vassals graceful shutdown β drama but polite π--emperor-capβ sets vassals capability--vassals-capβ sets vassals capability--vassal-capβ sets vassals capability--imperial-monitor-listβ lists enabled imperial monitors π--imperial-monitors-listβ lists enabled imperial monitors π--vassals-inheritβ adds config templates to vassals config (uses--inherit)--vassals-includeβ includes config templates to vassals config (uses--includeinstead of--inherit)--vassals-inherit-beforeβ adds config templates to vassals config (uses--inherit, parses before the vassal file)--vassals-include-beforeβ includes config templates to vassals config (uses--includeinstead of--inherit, parses before the vassal file)--vassals-start-hookβ runs the specified command before each vassal starts π--vassals-stop-hookβ runs the specified command after vassal's death π--vassal-sosβ when overloaded, asks emperor for reinforcement β SOS bestie π--vassal-sos-backlogβ asks emperor for SOS if backlog queue has more items than the value specified--vassals-setβ automatically sets the specified option (via--set) for every vassal--vassal-setβ automatically sets the specified option (via--set) for every vassal--heartbeatβ announces healthiness to the emperor β it's alive, periodt π--reload-mercyβ sets the maximum time (in seconds) we wait for workers and other processes to die during reload/shutdown--worker-reload-mercyβ sets the maximum time (in seconds) a worker can take to reload/shutdown; default is60--mule-reload-mercyβ sets the maximum time (in seconds) a mule can take to reload/shutdown; default is60--exit-on-reloadβ forces exit even if a reload is requested β no take-backs π--die-on-termβ onSIGTERM, exits instead of brutal reload--force-gatewayβ forces the spawn of the first registered gateway without a master-h|--helpβ shows this help π«Ά-h|--usageβ shows this help π«Ά--print-symβ prints content of the specified binary symbol--print-symbolβ prints content of the specified binary symbol-r|--reaperβ callswaitpid(-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 is10--max-worker-lifetimeβ reloads workers after the specified amount of seconds; default is disabled--max-worker-lifetime-deltaβ adds(worker_id * delta)seconds to the max_worker_lifetime value of each worker-z|--socket-timeoutβ sets internal sockets timeout--no-fd-passingβ disables file descriptor passing--locksβ creates the specified number of shared locks--lock-engineβ sets the lock engine--ftokβ sets the ipcsem key viaftok()for avoiding duplicates--persistent-ipcsemβ does not remove ipcsem's on shutdown-A|--sharedareaβ creates a raw shared memory area of specified pages (note: it supports keyval too)--safe-fdβ does not close the specified file descriptor--fd-safeβ does not close the specified file descriptor--cacheβ creates a shared cache containing given elements--cache-blocksizeβ sets cache blocksize--cache-storeβ enables persistent cache to disk--cache-store-syncβ sets frequency of sync for persistent cache--cache-no-expireβ disables auto sweep of expired items--cache-expire-freqβ sets the frequency of cache sweeper scans; default3 seconds--cache-report-freed-itemsβ constantly reports the cache item freed by the sweeper (use only for debug) π--cache-udp-serverβ binds the cache UDP server (used only for set/update/delete) to the specified socket--cache-udp-nodeβ sends cache update/deletion to the specified cache UDP server--cache-syncβ copies the whole content of another uWSGI cache server on server startup--cache-use-last-modifiedβ updateslast_modified_attimestamp on every cache item modification; default is disabled--add-cache-itemβ adds an item in the cache--load-file-in-cacheβ loads a static file in the cache--load-file-in-cache-gzipβ loads a static file in the cache with gzip compression--cache2β creates a new generation shared cache (keyval syntax)--queueβ enables shared queue--queue-blocksizeβ sets queue blocksize--queue-storeβ enables persistent queue to disk--queue-store-syncβ sets frequency of sync for persistent queue-Q|--spoolerβ runs a spooler on the specified directory--spooler-externalβ maps spoolers requests to a spooler directory managed by an external instance--spooler-orderedβ tries to order the execution of spooler tasks--spooler-chdirβ doeschdir()to specified directory before each spooler task--spooler-processesβ sets the number of processes for spoolers--spooler-quietβ does not be verbose with spooler tasks β no yapping π€«--spooler-max-tasksβ sets the maximum number of tasks to run before recycling a spooler--spooler-harakiriβ sets harakiri timeout for spooler tasks--spooler-frequencyβ sets spooler frequency--spooler-freqβ sets spooler frequency--muleβ adds a mule π΄--mulesβ adds the specified number of mules π΄π΄--farmβ adds a mule farm π--mule-msg-sizeβ sets mule message buffer size--signalβ sends a uwsgi signal to a server--signal-bufsizeβ sets buffer size for signal queue--signals-bufsizeβ sets buffer size for signal queue--signal-timerβ adds a timer (syntax:<signal> <seconds>)--timerβ adds a timer (syntax:<signal> <seconds>)--signal-rbtimerβ adds a redblack timer (syntax:<signal> <seconds>)--rbtimerβ adds a redblack timer (syntax:<signal> <seconds>)--rpc-maxβ maximum number of rpc slots; default:64-L|--disable-loggingβ disables request logging--flockβ locks the specified file before starting, exits if locked--flock-waitβ locks the specified file before starting, waits if locked--flock2β locks the specified file after logging/daemon setup, exits if locked--flock-wait2β locks the specified file after logging/daemon setup, waits if locked--pidfileβ creates pidfile (before privileges drop)--pidfile2β creates pidfile (after privileges drop)--safe-pidfileβ creates safe pidfile (before privileges drop)--safe-pidfile2β creates safe pidfile (after privileges drop)--chrootβ doeschroot()to the specified directory--pivot-rootβ doespivot_root()to the specified directories;new_rootandput_oldmust be separated with a space--pivot_rootβ doespivot_root()to the specified directories;new_rootandput_oldmust be separated with a space--uidβ doessetuidto the specified user/uid--gidβ doessetgidto the specified group/gid--add-gidβ adds the specified group id to the process credentials--immediate-uidβ doessetuidto the specified user/uid IMMEDIATELY β‘--immediate-gidβ doessetgidto the specified group/gid IMMEDIATELY β‘--no-initgroupsβ disables additional groups set viainitgroups()--capβ sets process capability--unshareβunshare()part of the processes and puts it in a new namespace--unshare2βunshare()part of the processes and puts it in a new namespace after rootfs change--setns-socketβ exposes a unix socket returning namespace fds from/proc/self/ns--setns-socket-skipβ skips the specified entry when sending setns file descriptors--setns-skipβ skips the specified entry when sending setns file descriptors--setnsβ joins a namespace created by an external uWSGI instance--setns-preopenβ opens/proc/self/nsas soon as possible and caches fds β--jailedβ flags this instance as jailed, which forces thepost_jailhooks to actually run. it's giving "i am in the box and i want everyone to know" π--reforkβ does afork()again after privileges drop. so useful for jailing systems fr fr.--re-forkβ literally the same thing as--refork:fork()again after privileges drop, useful for jailing systems. yes bestie, it's a twin π--refork-as-rootβfork()again before privileges drop. useful for jailing systems. note the before vs after, this matters π--re-fork-as-rootβ the exact same deal:fork()again before privileges drop, useful for jailing systems.--refork-post-jailβfork()again after jailing. useful for jailing systems π¦--re-fork-post-jailβ same energy, same wording:fork()again after jailing, useful for jailing systems.
okay so now we're in the hook zone and honestly this is where uWSGI shows off. hooks = little things uWSGI runs at very specific moments. the when is the whole personality here. β¨
--hook-asapβ run the specified hook as soon as possible. like, immediately. main character timing π--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, but once per-instance.--hook-accepting1-onceβ run the specified hook after the first worker enters the accepting phase, once per instance.--hook-master-startβ run the specified hook when the Master starts π--hook-touchβ run the specified hook when the 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 beforeexec()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. (yeah, same description, two flags, iconic twins π)
and now, the exec family β same timing slots, except instead of a hook you're running a whole command:
--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 beforeexec()ing the vassal.--exec-as-emperorβ run the specified command in the emperor after the vassal has been started.
next up: mounting! same timing slots, but for filesystems. we love a consistent API πΈ
--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 beforeexec()ing the vassal.--mount-as-emperorβ mount filesystem in the emperor after the vassal has been started.
and the reverse, bestie, because what goes up must come down π
--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 beforeexec()ing the vassal.--umount-as-emperorβ unmount filesystem in the emperor after the vassal has been started.
lowkey the next chunk is all about waiting patiently for stuff to exist before root hooks fire. yes, uWSGI will literally sit there and wait for your network to show up. it's giving supportive bestie energy π«Ά
--wait-for-interfaceβ wait for the specified network interface to come up before running root hooks.--wait-for-interface-timeoutβ set the timeout forwait-for-interface.--wait-interfaceβ wait for the specified network interface to come up before running root hooks. (same as above, different spelling π)--wait-interface-timeoutβ set the timeout forwait-for-interface.--wait-for-ifaceβ wait for the specified network interface to come up before running root hooks. (again! "iface" this time β¨)--wait-for-iface-timeoutβ set the timeout forwait-for-interface.--wait-ifaceβ wait for the specified network interface to come up before running root hooks.--wait-iface-timeoutβ set the timeout forwait-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 forwait-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 forwait-for-socket.
and now the call family: instead of running a hook or a command, you're calling a C function directly. the numbered variants just tell you exactly what arguments get passed, iykyk π
--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 specifiedfunction()beforeexec()ing the vassal.--call-as-vassal1β call the specifiedfunction(char *)beforeexec()ing the vassal.--call-as-vassal3β call the specifiedfunction(char *, uid_t, gid_t)beforeexec()ing the vassal.--call-as-emperorβ call the specifiedfunction()in the emperor after the vassal has been started.--call-as-emperor1β call the specifiedfunction(char *)in the emperor after the vassal has been started.--call-as-emperor2β call the specifiedfunction(char *, pid_t)in the emperor after the vassal has been started.--call-as-emperor4β call the specifiedfunction(char *, pid_t, uid_t, gid_t)in the emperor after the vassal has been started.
config file loading, bestie, come get your formats π
--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β setSO_SNDTIMEO.--socket-send-timeoutβ setSO_SNDTIMEO.--so-write-timeoutβ setSO_SNDTIMEO.--socket-write-timeoutβ setSO_SNDTIMEO.--socket-sndbufβ setSO_SNDBUF.--socket-rcvbufβ setSO_RCVBUF.--shutdown-socketsβ force callingshutdown()in addition toclose()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. yes bestie, it's called evil on purpose π--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. brutal. as advertised π₯--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 isfile command. π¦--touch-signalβ the vibe check for a file π whenever the file you name gets modified or touched, fire off a signal. syntax:file signal--fs-reloadβ when the filesystem object you point at changes, do a graceful reload β¨--fs-brutal-reloadβ same energy but unhinged π the filesystem object changes β brutal reload, no chill--fs-signalβ raise a uwsgi signal when the specified filesystem object gets modified. syntax:file signal--check-mountpoint,--mountpoint-check,--check-mount,--mount-checkβ if a filesystem becomes unreachable, bestie, the instance just gets destroyed π genuinely useful when you need reliable Fuse management--propagate-touchβ literally the over-engineering option, made for systems whose signal management is flaky π--limit-postβ cap the request body, that's it, that's the whole thing--no-orphansβ if the master dies, automatically kill the workers so nobody's left wandering around orphaned π«Ά heads up though: this can be dangerous for availability--prioβ set the priority of processes/threads--cpu-affinityβ set the cpu affinity--post-bufferingβ set the size in bytes at which stuff gets buffered to disk instead of memory--post-buffering-bufsizeβ set the buffer size forread()while in post buffering mode--body-read-warningβ set how much memory (in megabytes) a request body is allowed to allocate before it starts printing a warning π--upload-progressβ while a file upload is happening, create.jsonfiles in the directory you specify--no-default-appβ no falling back to the default app, we don't do that here--manage-script-nameβ automatically rewriteSCRIPT_NAMEandPATH_INFOfor you, slay--ignore-script-nameβ ignoreSCRIPT_NAME--catch-exceptionsβ report the exception as http output. discouraged bestie, only for testing, fr fr β οΈ--reload-on-exceptionβ exception gets raised β the worker reloads--reload-on-exception-typeβ reload the worker when a specific exception type gets raised--reload-on-exception-valueβ reload the worker when a specific exception value gets raised--reload-on-exception-reprβ reload the worker when a specific exception type+value (language-specific) gets raised--exception-handlerβ add an exception handler--enable-metricsβ turn on the metrics subsystem, let's gooo π₯--metricβ add a custom metric--metric-threshold,--metric-alarm,--alarm-metricβ add a metric threshold/alarm--metrics-dir,--metric-dirβ export metrics as text files into the directory you name--metrics-dir-restore,--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 address you specify--stats,--stats-serverβ enable the stats server on the specified address--stats-httpβ prefix the stats server json output with http headers--stats-minified,--stats-minβ minify that statistics json output β¨--stats-pushβ push the stats json to the destination you specify--stats-pusher-default-freq,--stats-pushers-default-freqβ set the default frequency of stats pushers--stats-no-coresβ disable generation of cores-related stats--stats-no-metricsβ don't include metrics in the stats output--multicastβ subscribe to the multicast group you specify--multicast-ttlβ set the multicast ttl--multicast-loopβ set multicast loop (default1)--master-fifoβ enable the master fifo--notify-socketβ enable the notification socket--subscription-notify-socketβ set the notification socket used for subscriptions--legionβ become a member of a legion π--legion-mcastβ become a member of a legion (this one's a 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β if one of the lord hooks fails, declare itself a dead node for however many seconds you specify--legion-skew-toleranceβ set the clock skew tolerance of the legion subsystem (default60seconds)--legion-lordβ the action to call on Lord election--legion-unlordβ the action to call on Lord dismiss--legion-setupβ the action to call on legion setup--legion-deathβ the action to call on legion death (aka shutdown of the instance π)--legion-joinβ the action to call on legion join (first time quorum is reached)--legion-node-joinedβ the action to call when a new node joins the legion--legion-node-leftβ the action to call when a node leaves the legion--legion-quorumβ set the quorum of a legion--legion-scrollβ set the scroll of a legion--legion-scroll-max-sizeβ set the max size of the legion scroll buffer--legion-scroll-list-max-sizeβ set the max size of the legion scroll list buffer--subscriptions-sign-checkβ set 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 uid you specify when unix sockets credentials are in play--subscriptions-credentials-checkβ add a directory to search for subscriptions key credentials--subscriptions-use-credentialsβ enable management ofSCM_CREDENTIALSin 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,--st,--subscribeβ subscribe to the subscription server you specify--subscribe2β subscribe to the specified subscription server using advanced keyval syntax--subscribe-freqβ send the subscription announce at the interval you set--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 don't actually send them (comes in clutch with master fifo)--subscribe-with-modifier1β force the specifiedmodifier1when subscribing--snmpβ enable the embedded snmp server--snmp-communityβ set the snmp community string--ssl-verboseβ be verbose about SSL errors, spill the tea π΅--ssl-verify-depthβ set the maximum certificate verification depth--sniβ add an SNI-governed SSL context--sni-dirβ look forcert/key/client_cafiles in the directory you specify and create an sni/ssl context on demand--sni-dir-ciphersβ set the ssl ciphers for thesni-diroption--ssl-enable3,--ssl-enable-sslv3β enable SSLv3. this is insecure, be so serious β οΈ--ssl-enable-tlsv1β enable TLSv1. also insecure, bestie π--ssl-optionβ set a raw ssl option (numeric value)--sni-regexpβ add an SNI-governed SSL context where the key is a regexp--ssl-tmp-dirβ store ssl-related temp files in the directory you name--check-intervalβ set the interval (in seconds) between master checks--forkbomb-delayβ when a forkbomb gets detected, sleep for however many seconds you specify π€--binary-pathβ force the binary path--privileged-binary-patchβ patch the uwsgi binary with a new command (happens before privileges drop)--unprivileged-binary-patchβ patch the uwsgi binary with a new command (happens 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 however many cores you specify--max-fdβ set the maximum number of file descriptors (requires root privileges π)--logtoβ set the logfile/udp address--logto2β log to the file or udp address you specify, after privileges drop--log-format,--logformatβ set an advanced format for request logging--logformat-strftime,--log-format-strftimeβ applystrftimeto the logformat output--logfile-chownβchownthe logfiles--logfile-chmodβchmodthe logfiles--log-syslogβ log to syslog--log-socketβ send logs to the socket you specify--req-logger,--logger-reqβ set/append a request logger--loggerβ set/append a logger--logger-list,--loggers-listβ list the enabled loggers--threaded-loggerβ offload the 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 (aka do not show) log lines matching the regexp you give--log-filterβ show only the log lines matching the regexp you give--log-routeβ log to the named logger you specify if the regexp applied on the logline matches--log-req-routeβ log requests to the named logger you specify if the regexp applied on the logline matches--use-abortβ callabort()on segfault/fpe, could be useful for generating a core dump--alarmβ create a new alarm. syntax:<alarm> <plugin:args>--alarm-cheapβ bestie, instead of spinning up a whole dedicated thread for each curl-based alarm, just use the main alarm thread. less drama, fewer threads π--alarm-freqβ tune the anti-loop alarm system. default is3seconds β°--alarm-fdβ raise the specified alarm when an fd is read for read. by default it reads1byte, but set it to8foreventfdπ--alarm-segfaultβ raise the specified alarm when the segmentation fault handler runs π--segfault-alarmβ raise the specified alarm when the segmentation fault handler runs π (same vibe, different spelling, both iconic)--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 π
okay so the backlog queue alarm has like six names and honestly? queen behavior. anywayβ
--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>π--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 is8192β¨
--log-masterβ delegate logging to the master process π--log-master-bufsizeβ set the buffer size for the master logger. heads up bestie, bigger log messages will get truncated βοΈ--log-master-streamβ create the master logpipe asSOCK_STREAM--log-master-req-streamβ create the master requests logpipe asSOCK_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 astrftimestring π--log-dateβ prefix logs with date or astrftimestring π--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 fromX-Forwarded-Forheader instead ofREMOTE_ADDR
--master-as-rootβ leave master process running as root π--drop-after-initβ run privileges drop after plugin initialization, superseded bydrop-after-apps--drop-after-appsβ run privileges drop after apps loading, superseded bymaster-as-root--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--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 onSERVER_NAMEvariable) π--vhost-hostβ enable virtualhosting mode (based onHTTP_HOSTvariable) π
okay the routing section is here and it is LONG. buckle up bestie, we're going full main character π
--routeβ add a route--route-hostβ add a route based onHostheader--route-uriβ add a route based onREQUEST_URI--route-qsβ add a route based onQUERY_STRING--route-remote-addrβ add a route based onREMOTE_ADDR--route-user-agentβ add a route based onHTTP_USER_AGENT--route-remote-userβ add a route based onREMOTE_USER--route-refererβ add a route based onHTTP_REFERER--route-labelβ add a routing label (for use withgoto)--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 onHostheader--final-route-uriβ add a final route based onREQUEST_URI--final-route-qsβ add a final route based onQUERY_STRING--final-route-remote-addrβ add a final route based onREMOTE_ADDR--final-route-user-agentβ add a final route based onHTTP_USER_AGENT--final-route-remote-userβ add a final route based onREMOTE_USER--final-route-refererβ add a final route based onHTTP_REFERER--final-route-labelβ add a final routing label (for use withgoto)--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 onHostheader--error-route-uriβ add an error route based onREQUEST_URI--error-route-qsβ add an error route based onQUERY_STRING--error-route-remote-addrβ add an error route based onREMOTE_ADDR--error-route-user-agentβ add an error route based onHTTP_USER_AGENT--error-route-remote-userβ add an error route based onREMOTE_USER--error-route-refererβ add an error route based onHTTP_REFERER--error-route-labelβ add an error routing label (for use withgoto)--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 onHostheader--response-route-uriβ add a response route based onREQUEST_URI--response-route-qsβ add a response route based onQUERY_STRING--response-route-remote-addrβ add a response route based onREMOTE_ADDR--response-route-user-agentβ add a response route based onHTTP_USER_AGENT--response-route-remote-userβ add a response route based onREMOTE_USER--response-route-refererβ add a response route based onHTTP_REFERER--response-route-labelβ add a response routing label (for use withgoto)--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 π
okay that was a lot but we ate, no crumbs β¨
--error-page-403β add an error page (html) for managed403response--error-page-404β add an error page (html) for managed404response--error-page-500β add an error page (html) for managed500response
--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, default1024)--websocket-max-sizeβ set the max allowed size of websocket messages (in Kbytes, default1024)--chunked-input-limitβ set the max size of a chunked input part (default1MB, in bytes)--chunked-input-timeoutβ set default timeout for chunked input--clockβ set a clock source β°--clock-listβ list enabled clocks π
--clocks-listβ shows u the clocks that are currently enabled β¨--add-headerβ auto-slaps HTTP headers onto the response, no manual labour π--rem-headerβ auto-yeets the HTTP header u specify out of the response--del-headerβ same energy: auto-removes the specified HTTP header from the response--collect-headerβ stashes that response header in a request var (syntax:header var) π--response-header-collectβ literally the same thing: store the specified response header in a request var (syntax:header var)--pull-headerβ stores the specified response header in a request var and removes it from the response (syntax:header var) β grabby and clean π«Ά--check-staticβ peeks for static files in the directory u name--check-static-docrootβ peeks for static files in whateverDOCUMENT_ROOTwas requested--static-checkβ check for static files in the specified directory (yes bestie, it's the twin of--check-static)--static-mapβ maps a mountpoint to a static directory (or a file) πΈ--static-map2β like--static-mapbut it completely appends the requested resource to the docroot--static-skip-extβ skips the extension u name when it's doing static file checks--static-indexβ if someone requests a directory, it goes looking for the file u specified--static-safeβ skips the security checks when the file lives under the path u gave it--static-cache-pathsβ drops the resolved paths into the uWSGI cache for however many seconds u say β±οΈ--static-cache-paths-nameβ uses the cache u name for those 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) β same flag, twin name π--static-expires-typeβ sets theExpiresheader based on content type--static-expires-type-mtimeβ sets theExpiresheader based on content type and file mtime--static-expiresβ sets theExpiresheader based on a filename regexp--static-expires-mtimeβ sets theExpiresheader based on a filename regexp and file mtime--static-expires-uriβ sets theExpiresheader based on aREQUEST_URIregexp--static-expires-uri-mtimeβ sets theExpiresheader based on aREQUEST_URIregexp and file mtime--static-expires-path-infoβ sets theExpiresheader based on aPATH_INFOregexp--static-expires-path-info-mtimeβ sets theExpiresheader based on aPATH_INFOregexp and file mtime--static-gzipβ if ur regexp matches the static file translation, it goes hunting for a gzip version π¦--static-gzip-allβ checks for a gzip version of every requested static file--static-gzip-dirβ checks for a gzip version of all requested static files in the dir/prefix u name--static-gzip-prefixβ checks for a gzip version of all requested static files in the dir/prefix u name (same thing, different name, we love options)--static-gzip-extβ checks for a gzip version of all requested static files with the ext/suffix u name--static-gzip-suffixβ checks for a gzip version of all requested static files with the ext/suffix u name β¨--honour-rangeβ turns on support for the HTTPRangeheader--offload-threadsβ sets how many offload threads to spawn (per-worker, default0)--offload-threadβ sets how many offload threads to spawn (per-worker, default0) β the singular twin--file-serve-modeβ sets the static file serving mode--fileserve-modeβ sets the static file serving mode (again, twins π―)--disable-sendfileβ disablessendfile()and makes it rely on the boringread()/write()instead π--check-cacheβ checks for response data in the cache u name (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 files/sockets π§Ή--file-writeβ writes the content u specify to the file u specify (syntax:file=value), and it does this before privileges drop--cgroupβ puts the processes in the cgroup u name--cgroup-optβ sets a value in the cgroup option u specify--cgroup-dir-modeβ sets permission for the cgroup directory (default is700) π--namespaceβ runs in a new namespace under the rootfs u specify--namespace-keep-mountβ keeps the mountpoint u name inside ur namespace--nsβ runs in a new namespace under the specified rootfs (short king π)--namespace-netβ adds a network namespace--ns-netβ adds a network namespace (twin!)--enable-proxy-protocolβ enablesPROXY1protocol support (only for http parsers)--reuse-portβ enables theREUSE_PORTflag on the socket (BSD only, bestie)--tcp-fast-openβ enables theTCP_FASTOPENflag on TCP sockets with the qlen value u give--tcp-fastopenβ enables theTCP_FASTOPENflag on TCP sockets with the specified qlen value--tcp-fast-open-clientβ usessendto(..., MSG_FASTOPEN, ...)instead ofconnect()if it's supported--tcp-fastopen-clientβ usessendto(..., MSG_FASTOPEN, ...)instead ofconnect()if supported--zergβ attach 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 u name--cronβ adds a cron task--cron2β adds a cron task, butkey=valsyntax style--unique-cronβ adds a unique cron task--cron-harakiriβ sets the max time (in seconds) we wait for a cron command to finish β³--legion-cronβ adds a cron task that only runs when the instance is a lord of the legion u specify--cron-legionβ adds a cron task runnable only when the instance is a lord of the specified legion--unique-legion-cronβ adds a unique cron task runnable only when the instance is a lord of the specified legion--unique-cron-legionβ adds a unique cron task runnable only when the instance is a lord of the specified legion (same, twin name π)--loopβ selects the uWSGI loop engine--loop-listβ lists the enabled loop engines--loops-listβ lists the enabled loop engines--worker-execβ runs the command u specify as a worker--worker-exec2β runs the specified command as a worker (after thepost_forkhook)--attach-daemonβ attaches a command/daemon to the master process (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 that daemon dies, the master dies too π--smart-attach-daemonβ attaches a command/daemon to the master process managed by a pidfile (here the command has to daemonize)--smart-attach-daemon2β attaches a command/daemon to the master process managed by a pidfile (here the command has to NOT daemonize β opposite day)--legion-attach-daemonβ same as--attach-daemonbut the daemon only runs on the legion lord node--legion-smart-attach-daemonβ same as--smart-attach-daemonbut the daemon only runs on the legion lord node--legion-smart-attach-daemon2β same as--smart-attach-daemon2but 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β theattach-daemonkeyval variant (it 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 (exit on error)--plugins-dirβ adds a directory to the uWSGI plugin search path--plugin-dirβ adds a directory to the uWSGI plugin search path--plugins-listβ lists the enabled plugins--plugin-listβ lists the enabled plugins--autoloadβ tries to automatically load plugins whenever it finds unknown options π--dlopenβ blindly loads a shared library (no thoughts, head empty)--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 available options π--show-configβ shows the current config, reformatted as ini--binary-append-dataβ returns the content of a resource to stdout so u can append it to a uwsgi binary (fordata://usage)--printβ simple print--iprintβ simple print, immediate version β‘--exitβ forceexit()of the instance--cflagsβ reports uWSGICFLAGS(super useful for building external plugins)--dot-hβ dumps theuwsgi.hused for building the core (useful for building external plugins)--config-pyβ dumps theuwsgiconfig.pyused 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)
okay bestie that's the whole flag buffet, u made it to the end and honestly? iconic π this page is from uwsgi_glusterfs version 2.0.31-2, dated February 2026, and it lives in the manual as UWSGI_GLUSTERFS(1). go forth and serve those static files, mwah ππ¦β¨
π¦ where this page comes from
- ubuntu resolute: uwsgi-plugin-glusterfs 2.0.31+2+0.0.3build2 Β· GPL-3.0-or-later
- ubuntu stonking: uwsgi-plugin-glusterfs 2.0.31+2+0.0.3build2 Β· GPL-3.0-or-later
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms