# Buildsheet autogenerated by ravenadm tool -- Do not edit.

NAMEBASE=		nginx
VERSION=		1.27.4
KEYWORDS=		www
VARIANTS=		std loaded
SDESC[std]=		HTTP and reverse proxy server (basic options)
SDESC[loaded]=		HTTP and reverse proxy server (all options)
HOMEPAGE=		https://nginx.org/
CONTACT=		nobody

DOWNLOAD_GROUPS=	main acclang ajp arrayvar authdig aws certrans cpurge cslowfs davext develkit drizzle dynups echo eval fairload fancyindex footer forminput geoip2 iconv letmath lua memc morehead naxsi njs notice pam pgsql push pushstrm rdscsv rdsjson redis2 rtmp sesscrypt setmisc srcache stubjson subsfilter upcheck upload upprogress vod xss zip
SITES[main]=		http://nginx.org/download/
SITES[acclang]=		GITHUB/giom:nginx_accept_language_module:5683967
SITES[ajp]=		GITHUB/yaoweibin:nginx_ajp_module:fcbb2cc
SITES[arrayvar]=	GITHUB/openresty:array-var-nginx-module:v0.05
SITES[authdig]=		GITHUB/atomx:nginx-http-auth-digest:274490c
SITES[aws]=		GITHUB/anomalizer:ngx_aws_auth:21931b2
SITES[certrans]=	GITHUB/grahamedgecombe:nginx-ct:93e9884
SITES[cpurge]=		GITHUB/torden:ngx_cache_purge:a84b0f3
SITES[cslowfs]=		GITHUB/baysao:ngx_slowfs_cache:d011a18
SITES[davext]=		GITHUB/arut:nginx-dav-ext-module:v3.0.0
SITES[develkit]=	GITHUB/simpl:ngx_devel_kit:v0.3.2
SITES[drizzle]=		GITHUB/openresty:drizzle-nginx-module:v0.1.12
SITES[dynups]=		GITHUB/ZigzagAK:ngx_dynamic_upstream:2.3.3
SITES[echo]=		GITHUB/openresty:echo-nginx-module:v0.63
SITES[eval]=		GITHUB/openresty:nginx-eval-module:2016.06.10
SITES[fairload]=	GITHUB/cryptofuture:nginx-upstream-fair:10ecdcf
SITES[fancyindex]=	GITHUB/aperezdc:ngx-fancyindex:v0.5.2
SITES[footer]=		GITHUB/alibaba:nginx-http-footer-filter:1.2.2
SITES[forminput]=	GITHUB/calio:form-input-nginx-module:v0.12
SITES[geoip2]=		GITHUB/leev:ngx_http_geoip2_module:3.4
SITES[iconv]=		GITHUB/calio:iconv-nginx-module:v0.14
SITES[letmath]=		GITHUB/arut:nginx-let-module:v0.0.4
SITES[lua]=		GITHUB/openresty:lua-nginx-module:v0.10.26
SITES[memc]=		GITHUB/openresty:memc-nginx-module:v0.19
SITES[morehead]=	GITHUB/openresty:headers-more-nginx-module:v0.37
SITES[naxsi]=		GITHUB/nbs-system:naxsi:d714f16
SITES[njs]=		GITHUB/nginx:njs:0.8.0
SITES[notice]=		GITHUB/kr:nginx-notice:3c95966
SITES[pam]=		GITHUB/sto:ngx_http_auth_pam_module:v1.5.3
SITES[pgsql]=		GITHUB/konstruxi:ngx_postgres:8aa7359
SITES[push]=		GITHUB/slact:nchan:v1.3.1
SITES[pushstrm]=	GITHUB/wandenberg:nginx-push-stream-module:8c02220
SITES[rdscsv]=		GITHUB/openresty:rds-csv-nginx-module:v0.09
SITES[rdsjson]=		GITHUB/openresty:rds-json-nginx-module:v0.15
SITES[redis2]=		GITHUB/openresty:redis2-nginx-module:v0.15
SITES[rtmp]=		GITHUB/arut:nginx-rtmp-module:v1.2.2
SITES[sesscrypt]=	GITHUB/openresty:encrypted-session-nginx-module:v0.09
SITES[setmisc]=		GITHUB/openresty:set-misc-nginx-module:v0.33
SITES[srcache]=		GITHUB/openresty:srcache-nginx-module:be22ac0
SITES[stubjson]=	GITHUB/nginx-modules:ngx_http_json_status_module:0.1
SITES[subsfilter]=	GITHUB/yaoweibin:ngx_http_substitutions_filter_module:c6f825f
SITES[upcheck]=		GITHUB/yaoweibin:nginx_upstream_check_module:9aecf15
SITES[upload]=		GITHUB/Austinb:nginx-upload-module:643b4c1
SITES[upprogress]=	GITHUB/masterzen:nginx-upload-progress-module:68b3ab3
SITES[vod]=		GITHUB/kaltura:nginx-vod-module:1.31
SITES[xss]=		GITHUB/openresty:xss-nginx-module:v0.06
SITES[zip]=		GITHUB/evanmiller:mod_zip:39dc908
DISTFILE[1]=		nginx-1.27.4.tar.gz:main
DISTFILE[2]=		generated:geoip2
DISTFILE[3]=		generated:notice
DISTFILE[4]=		generated:push
DISTFILE[5]=		generated:pushstrm
DISTFILE[6]=		generated:subsfilter
DISTFILE[7]=		generated:ajp
DISTFILE[8]=		generated:upcheck
DISTFILE[9]=		generated:acclang
DISTFILE[10]=		generated:authdig
DISTFILE[11]=		generated:pam
DISTFILE[12]=		generated:aws
DISTFILE[13]=		generated:certrans
DISTFILE[14]=		generated:echo
DISTFILE[15]=		generated:morehead
DISTFILE[16]=		generated:eval
DISTFILE[17]=		generated:drizzle
DISTFILE[18]=		generated:sesscrypt
DISTFILE[19]=		generated:lua
DISTFILE[20]=		generated:memc
DISTFILE[21]=		generated:rdscsv
DISTFILE[22]=		generated:rdsjson
DISTFILE[23]=		generated:redis2
DISTFILE[24]=		generated:setmisc
DISTFILE[25]=		generated:srcache
DISTFILE[26]=		generated:xss
DISTFILE[27]=		generated:arrayvar
DISTFILE[28]=		generated:develkit
DISTFILE[29]=		generated:njs
DISTFILE[30]=		generated:davext
DISTFILE[31]=		generated:footer
DISTFILE[32]=		generated:stubjson
DISTFILE[33]=		generated:upload
DISTFILE[34]=		generated:upprogress
DISTFILE[35]=		generated:fairload
DISTFILE[36]=		generated:zip
DISTFILE[37]=		generated:dynups
DISTFILE[38]=		generated:letmath
DISTFILE[39]=		generated:rtmp
DISTFILE[40]=		generated:vod
DISTFILE[41]=		generated:iconv
DISTFILE[42]=		generated:forminput
DISTFILE[43]=		generated:cpurge
DISTFILE[44]=		generated:pgsql
DISTFILE[45]=		generated:cslowfs
DISTFILE[46]=		generated:fancyindex
DISTFILE[47]=		generated:naxsi
DF_INDEX=		1
SPKGS[std]=		set
			primary
			man
SPKGS[loaded]=		set
			primary
			man

OPTIONS_AVAILABLE=	LOADED
OPTIONS_STANDARD=	none
VOPTS[loaded]=		LOADED=ON

USERS=			{{WWWOWN}}
GROUPS=			{{WWWGRP}}
USERGROUP_SPKG=		primary

USES=			cpe ssl zlib pcre

LICENSE=		BSD2CLAUSE:primary
LICENSE_FILE=		BSD2CLAUSE:{{WRKSRC}}/LICENSE
LICENSE_SCHEME=		solo

CPE_PRODUCT=		nginx
CPE_VENDOR=		nginx
FPC_EQUIVALENT=		www/nginx

MUST_CONFIGURE=		yes
CONFIGURE_ARGS=		--prefix={{PREFIX}}/etc/nginx
			--with-cc-opt="-I{{LOCALBASE}}/include -I{{OPENSSLINC}}"
			--with-ld-opt="-L{{LOCALBASE}}/lib -L{{OPENSSLLIB}} -Wl,-rpath,{{LOCALBASE}}/lib:{{OPENSSLRPATH}}"
			--conf-path={{PREFIX}}/etc/nginx/nginx.conf
			--sbin-path={{PREFIX}}/sbin/nginx
			--pid-path=/var/run/nginx.pid
			--error-log-path=/var/log/nginx/error.log
			--user={{WWWOWN}}
			--group={{WWWGRP}}
			--with-pcre
			--modules-path={{PREFIX}}/libexec/nginx
			--http-client-body-temp-path=/var/tmp/nginx/client_body_temp
			--http-fastcgi-temp-path=/var/tmp/nginx/fastcgi_temp
			--http-proxy-temp-path=/var/tmp/nginx/proxy_temp
			--http-scgi-temp-path=/var/tmp/nginx/scgi_temp
			--http-uwsgi-temp-path=/var/tmp/nginx/uwsgi_temp
			--http-log-path=/var/log/nginx/access.log
			--with-http_addition_module
			--with-http_auth_request_module
			--with-http_dav_module
			--with-http_flv_module
			--with-http_gzip_static_module
			--with-http_gunzip_module
			--with-http_mp4_module
			--with-http_random_index_module
			--with-http_realip_module
			--with-http_secure_link_module
			--with-http_slice_module
			--with-http_ssl_module
			--with-http_stub_status_module
			--with-http_sub_module
			--with-http_v2_module
			--with-mail=dynamic
			--with-mail_ssl_module
			--with-stream=dynamic
			--with-stream_ssl_module
			--with-threads

PLIST_SUB=		WWWOWN={{WWWOWN}}
			WWWGRP={{WWWGRP}}
			NGINX_TMPDIR=/var/tmp/nginx
			NGINX_LOGDIR=/var/log/nginx
RC_SUBR=		nginx:primary
SUB_FILES=		messages-primary.ucl
SUB_LIST=		WWWOWN={{WWWOWN}}
			WWWGRP={{WWWGRP}}
			NGINX_TMPDIR=/var/tmp/nginx
			NGINX_LOGDIR=/var/log/nginx
			NGINX_RUNDIR=/var/run

VAR_OPSYS[freebsd]=	CONFIGURE_ARGS=--with-file-aio
VAR_OPSYS[linux]=	CONFIGURE_ARGS=--with-file-aio
VAR_OPSYS[dragonfly]=	CONFIGURE_ARGS=--with-file-aio

[LOADED].DESCRIPTION=			All options enabled (heavy dependencies)
[LOADED].BUILDRUN_DEPENDS_ON=		libmaxminddb:primary:std
					libGD:primary:std
[LOADED].BUILD_DEPENDS_ON=		libmaxminddb:dev:std
					libGD:dev:std
[LOADED].CONFIGURE_ARGS_OFF=		--without-mail_imap_module
					--without-mail_pop3_module
					--without-mail_smtp_module
[LOADED].CONFIGURE_ARGS_ON=		--with-http_perl_module=dynamic
					--with-http_xslt_module=dynamic
					--with-http_image_filter_module=dynamic
					--add-module={{WRKDIR}}/nginx-notice-3c95966
					--add-module={{WRKDIR}}/nchan-1.3.1
					--add-module={{WRKDIR}}/nginx-push-stream-module-8c02220
					--add-module={{WRKDIR}}/ngx_http_substitutions_filter_module-c6f825f
					--add-module={{WRKDIR}}/nginx_upstream_check_module-9aecf15
					--add-module={{WRKDIR}}/nginx_accept_language_module-5683967
					--add-module={{WRKDIR}}/ngx_aws_auth-21931b2
					--add-module={{WRKDIR}}/rds-csv-nginx-module-0.09
					--add-module={{WRKDIR}}/rds-json-nginx-module-0.15
					--add-module={{WRKDIR}}/redis2-nginx-module-0.15
					--add-module={{WRKDIR}}/srcache-nginx-module-be22ac0
					--add-module={{WRKDIR}}/ngx_devel_kit-0.3.2
					--add-module={{WRKDIR}}/encrypted-session-nginx-module-0.09
					--add-module={{WRKDIR}}/array-var-nginx-module-0.05
					--add-module={{WRKDIR}}/xss-nginx-module-0.06
					--add-module={{WRKDIR}}/nginx-dav-ext-module-3.0.0
					--add-module={{WRKDIR}}/nginx-http-footer-filter-1.2.2
					--add-module={{WRKDIR}}/ngx_http_json_status_module-0.1
					--add-module={{WRKDIR}}/nginx-upload-module-643b4c1
					--add-module={{WRKDIR}}/nginx-upload-progress-module-68b3ab3
					--add-module={{WRKDIR}}/nginx-let-module-0.0.4
					--add-module={{WRKDIR}}/ngx_slowfs_cache-d011a18
					--add-module={{WRKDIR}}/ngx_cache_purge-a84b0f3
					--add-module={{WRKDIR}}/ngx_postgres-8aa7359
					--add-dynamic-module={{WRKDIR}}/ngx_http_geoip2_module-3.4
					--add-dynamic-module={{WRKDIR}}/nginx-http-auth-digest-274490c
					--add-dynamic-module={{WRKDIR}}/echo-nginx-module-0.63
					--add-dynamic-module={{WRKDIR}}/headers-more-nginx-module-0.37
					--add-dynamic-module={{WRKDIR}}/nginx-eval-module-2016.06.10
					--add-dynamic-module={{WRKDIR}}/memc-nginx-module-0.19
					--add-dynamic-module={{WRKDIR}}/set-misc-nginx-module-0.33
					--add-dynamic-module={{WRKDIR}}/njs-0.8.0/nginx
					--add-dynamic-module={{WRKDIR}}/nginx-upstream-fair-10ecdcf
					--add-dynamic-module={{WRKDIR}}/mod_zip-39dc908
					--add-dynamic-module={{WRKDIR}}/ngx_dynamic_upstream-2.3.3
					--add-dynamic-module={{WRKDIR}}/nginx-rtmp-module-1.2.2
					--add-dynamic-module={{WRKDIR}}/nginx-vod-module-1.31
					--add-dynamic-module={{WRKDIR}}/iconv-nginx-module-0.14
					--add-dynamic-module={{WRKDIR}}/form-input-nginx-module-0.12
					--add-dynamic-module={{WRKDIR}}/ngx-fancyindex-0.5.2
					--add-dynamic-module={{WRKDIR}}/naxsi-d714f16/naxsi_src
[LOADED].DF_INDEX_ON=			2
					3
					4
					5
					6
					7
					8
					9
					10
					12
					14
					15
					16
					18
					20
					21
					22
					23
					24
					25
					26
					27
					28
					29
					30
					31
					32
					33
					34
					35
					36
					37
					38
					39
					40
					41
					42
					43
					44
					45
					46
					47
[LOADED].EXTRA_PATCHES_ON=		extra-patch-ngx_http_notice_module.c
					extra-patch-iconv
					extra-patch-postgresql
					extra-patch-naxsi
					extra-patch-naxsi_runtime.c
					extra-patch-ngx_http_uploadprogress_module.c
					extra-patch-src_http_modules_ngx__http__upstream__hash__module.c
					extra-patch-src_http_modules_ngx__http__upstream__ip__hash__module.c
					extra-patch-src_http_modules_ngx__http__upstream__least__conn__module.c
					extra-patch-src_http_ngx__http__upstream__round__robin.c
					extra-patch-src_http_ngx__http__upstream__round__robin.h
[LOADED].GNOME_COMPONENTS_ON=		libxml2
					libxslt
[LOADED].KEYWORDS_ON=			perl
[LOADED].USES_ON=			perl
					pgsql
					expat
					iconv:build

post-patch:
	${REINPLACE_CMD} 's!%%HTTP_PORT%%!80!; \
		s!%%PREFIX%%!${PREFIX}!; \
		s!%%NGINX_ERRORLOG%%!/var/log/nginx/error.log!' \
		${WRKSRC}/conf/nginx.conf

post-patch-LOADED-ON:
	${REINPLACE_CMD} -e "/ngx_feature_path/ \
	s|/usr/include/libxml2|${LOCALBASE}/include/libxml2 ${LOCALBASE}/include|" \
	${WRKSRC}/auto/lib/libxslt/conf
	${REINPLACE_CMD} 's!%%PREFIX%%!${LOCALBASE}!g' \
		${WRKDIR}/iconv-nginx-module-0.14/config
	${REINPLACE_CMD} 's!%%PREFIX%%!${LOCALBASE}!g' \
		${WRKDIR}/ngx_postgres-8aa7359/config

do-build:
	(cd ${WRKSRC} && ${SETENV} ${MAKE_ENV} ${MAKE_CMD})

post-install:
	${CAT} ${WRKSRC}/conf/nginx.conf \
		>>${STAGEDIR}${PREFIX}/etc/nginx/nginx.conf-dist
	${INSTALL_MAN} ${WRKSRC}/objs/nginx.8 \
		${STAGEDIR}${MAN8PREFIX}/man/man8

do-install-LOADED-ON:
	@${MKDIR} ${STAGEDIR}${PREFIX}/${SITE_ARCH_REL}/auto/nginx
	${INSTALL_PROGRAM} ${WRKSRC}/objs/src/http/modules/perl/blib/arch/auto/nginx/nginx.so \
		${STAGEDIR}${PREFIX}/${SITE_ARCH_REL}/auto/nginx
	${INSTALL_DATA} ${WRKSRC}/objs/src/http/modules/perl/blib/lib/nginx.pm \
		${STAGEDIR}${PREFIX}/${SITE_ARCH_REL}/

do-install:
	${MKDIR} ${STAGEDIR}${PREFIX}/etc/nginx \
		${STAGEDIR}${PREFIX}/libexec/nginx \
		${STAGEDIR}/var/tmp/nginx \
		${STAGEDIR}/var/log/nginx \
		${STAGEDIR}${PREFIX}/www/nginx-dist
	${INSTALL_PROGRAM} ${WRKSRC}/objs/nginx ${STAGEDIR}${PREFIX}/sbin
.for i in koi-utf koi-win win-utf
	${INSTALL_DATA} ${WRKSRC}/conf/${i} ${STAGEDIR}${PREFIX}/etc/nginx
.endfor
.for i in fastcgi_params mime.types scgi_params uwsgi_params
	${INSTALL_DATA} ${WRKSRC}/conf/${i} ${STAGEDIR}${PREFIX}/etc/nginx/${i}-dist
.endfor
.for i in index.html 50x.html
	${INSTALL_DATA} ${WRKSRC}/html/${i} ${STAGEDIR}${PREFIX}/www/nginx-dist
.endfor
	${ECHO_CMD} >> ${STAGEDIR}${PREFIX}/www/nginx-dist/EXAMPLE_DIRECTORY-DONT_ADD_OR_TOUCH_ANYTHING
	(cd ${WRKSRC}/objs/ && ${FIND} . -depth -maxdepth 1 -name '*.so' -type f \
		-exec ${INSTALL_PROGRAM} {} ${STAGEDIR}${PREFIX}/libexec/nginx \;)

[FILE:351:descriptions/desc.primary.std]
NGINX is a high performance edge web server with the lowest memory
footprint and the key features to build modern and efficient web
infrastructure.

NGINX functionality includes HTTP server, HTTP and mail reverse proxy,
caching, load balancing, compression, request throttling, connection
multiplexing and reuse, SSL offload and HTTP media streaming.


[FILE:3222:descriptions/desc.primary.loaded]
NGINX is a high performance edge web server with the lowest memory
footprint and the key features to build modern and efficient web
infrastructure.

NGINX functionality includes HTTP server, HTTP and mail reverse proxy,
caching, load balancing, compression, request throttling, connection
multiplexing and reuse, SSL offload and HTTP media streaming.

This package contains additional modules over the standard nginx:
  geoip2          : handles maxmind geoip2 databases
  notice          : Ancient module for displaying downtime notices
  nchan           : pub/sub server using http push or websockets
  push stream     : Stream pushing using eventsource, websockets, polling
  substitutions   : Regex and fixed string substitutions filter
  AJP             : Direct connection to AJP port
  health          : Supports upstream health checks
  accept language : Parse Accept-Language header to determine locale
  AWS             : Proxy to authenticated AWS services
  RDB-CSV         : Resty-DBD Streams to Comma-Separated Values converter
  RDB-JSON        : Resty-DBD Streams to JSON format converter
  REDIS2          : Allows non-blocking connection to Redis 2.0 server
  SR cache        : Transparent subrequest-based caching layout
  XSS             : Cross-site scripting support
  session-crypt   : Encrypts and decrypts nginx variable values
  array variables : Support for array types in nginx config files
  DAV extension   : Rest of WebDAV support (PROPFIND and OPTIONS)
  Digest          : RFC 2617 Digest authentication support
  Echo goodies    : Add support for echo, sleep, time, exec, etc.
  more headers    : Set, add and clear arbitrary headers
  eval            : Experimental! Capture subrequest responses into vars
  memc            : Extend memcached module with additional commands
  set misc        : Add various set_xxx directives to rewrite module
  njs             : NginScript enables http and stream variable handlers
  xslt            : Transforms xml responses using xslt stylesheets
  footer          : Body filter that adds string to page footer
  stub status     : Version of stub status with json-formatted output
  upload          : file uploads - multipart/form-data encoding (RFC 1867)
  upload progress : Monitors RFC 1867 uploads during transmission
  fair balancer   : Enhancement of round-robin load balancer
  zip             : Low memory dynamic ZIP archive assembler
  dyn upstream    : Operates upstreams dynamically with HTTP APIs
  let (math)      : support for arithmetic operation
  rtmp            : Media Streaming Server
  VOD repackager  : On-the-fly repackaging of MP4 files to DASH, HDS, HLS, MSS
  iconv           : character encoding set converter
  forminput       : HTTP POST and PUT parser to populate nginx variables
  cache purge     : Enables content purging from fastcgi, proxy, scgi, uwsgi
  slowfs cache    : Enables fast caching of static files from slow FS
  postgresql      : Enabled direct communication with PostgreSQL database
  fancy index     : Enables autoindex with style (footers, headers, css)
  image filter    : Transforms images in JPEG, GIF, PNG, and WebP formats
  naxsi           : Web App Firewall, "Nginx Anti XSS & SQL Injection"


[FILE:5607:distinfo]
294816f879b300e621fa4edd5353dd1ec00badb056399eceb30de7db64b753b2      1277177 nginx-1.27.4.tar.gz
ad72fc23348d715a330994984531fab9b3606e160483236737f9a4a6957d9452         8877 leev-ngx_http_geoip2_module-3.4.tar.gz
e829fc94178cc8c91fef15a1fc44ee7ac162c13eddc0bba4c9427aaa23386885         3343 kr-nginx-notice-3c95966.tar.gz
9acb307436b4cae0fe24e7fe6128c965148c848b13bfdb310d6388e8e1badcac       749440 slact-nchan-1.3.1.tar.gz
ab4fbe236e8bc500f0c5e13403d6a0e2e4e4ec17b81e0fcedaf669b4339626a6       196720 wandenberg-nginx-push-stream-module-8c02220.tar.gz
4ab034f2e056148469b440394e1664c46405712ef27bc4f3197e42bf7df8460e        94062 yaoweibin-ngx_http_substitutions_filter_module-c6f825f.tar.gz
522e94c59f5783f281d868ede2adf325bf2f8ffb9e62cf8451d4b9ac0516916c       110807 yaoweibin-nginx_ajp_module-fcbb2cc.tar.gz
4404c64e845e19feeb07a37976347987892a8e8680a961f793ff0d3ef96c07f4       130039 yaoweibin-nginx_upstream_check_module-9aecf15.tar.gz
a58feb576f2231498b8a3863d3c6fba45c7d48bc48735fa714e07a7bfbedb6e3         3425 giom-nginx_accept_language_module-5683967.tar.gz
0839c33c2f8d519f92daae274f62cf87eb68415d562c6500ee3e3721ce80557c        17815 atomx-nginx-http-auth-digest-274490c.tar.gz
882018fea8d6955ab3fe294aafa8ebb1fdff4eac313c29583fef02c6de76fae7         7084 sto-ngx_http_auth_pam_module-1.5.3.tar.gz
d8a2422da96a638e9a911e4edb592954d9c0fe1576456fec9809ef4e2a0a863d        15580 anomalizer-ngx_aws_auth-21931b2.tar.gz
72fdd125b9207cdda135f368095f85b943a78a4ff004d1cd217972e12b1571b2         7224 grahamedgecombe-nginx-ct-93e9884.tar.gz
8af374d29592ef95baee53c91959c7b04927f11304c318a94f0ee140760515a4        53421 openresty-echo-nginx-module-0.63.tar.gz
cf6e169d6b350c06d0c730b0eaf4973394026ad40094cddd3b3a5b346577019d        29433 openresty-headers-more-nginx-module-0.37.tar.gz
6b91d3c2c2f254ebb37eb3dd6dd41048dfb18320bb98a3afdd1ad38b47f6d609        14188 openresty-nginx-eval-module-2016.06.10.tar.gz
a1b2f9feea33cb708a6b3999815e57c3d444016ca41498009b3243d19abbebf0        51611 openresty-drizzle-nginx-module-0.1.12.tar.gz
fe9b95acf9726aefd71bf0aca6c11bee007f1da67e64be9b21a7131f0ed75ba6        11847 openresty-encrypted-session-nginx-module-0.09.tar.gz
a75983287a2bdc5e964ace56a51b215dc2ec996639d4916cd393d6ebba94b565       745785 openresty-lua-nginx-module-0.10.26.tar.gz
8c2bdbe875e4f5225d0778bfb09a2668f9281d7de6218c7b462a7ba2cee06fe8        34654 openresty-memc-nginx-module-0.19.tar.gz
896be99c0cad50218417800a159e43ec088d6b58c099472ed3b3d7f179d6c0ea        20531 openresty-rds-csv-nginx-module-0.09.tar.gz
eaf18f60e981ea2442a7902689a26eba6cf6f36ebee712feeb1f4429eb654bdc        34744 openresty-rds-json-nginx-module-0.15.tar.gz
d255571bcfb9939b78099df39cb4d42f174d789aec8c8e5e47b93942b0299438        25471 openresty-redis2-nginx-module-0.15.tar.gz
cd5e2cc834bcfa30149e7511f2b5a2183baf0b70dc091af717a89a64e44a2985        30084 openresty-set-misc-nginx-module-0.33.tar.gz
5753d1ffe87b5d6f5b7a0696667bb5ff1388738136fdee26ba55bc33f5796061        51029 openresty-srcache-nginx-module-be22ac0.tar.gz
0b12bbc53a41f3e3d6df419c173b8c87434be3e6cd255a8193aa91345a2de6cf        12448 openresty-xss-nginx-module-0.06.tar.gz
c949d4be6f3442c8e2937046448dc8d8def25c0e0fa6f4e805144cea45eabe80        11280 openresty-array-var-nginx-module-0.05.tar.gz
aa961eafb8317e0eb8da37eb6e2c9ff42267edd18b56947384e719b85188f58b        66551 simpl-ngx_devel_kit-0.3.2.tar.gz
b98033fff6aadcbb8e108b96e80c0d94c6e2103bcbe75846b5ae0b560696084b       715391 nginx-njs-0.8.0.tar.gz
d2499d94d82d4e4eac8425d799e52883131ae86a956524040ff2fd230ef9f859        14558 arut-nginx-dav-ext-module-3.0.0.tar.gz
3493b54460c59370f9f60c6e662862752f1920fc6e684f7a66bb2b3260692813         3934 alibaba-nginx-http-footer-filter-1.2.2.tar.gz
a993a0f25b58d3b69aea709a7605de5f7f08e6a1e27f83c8ce5282e5a44e3a90         6738 nginx-modules-ngx_http_json_status_module-0.1.tar.gz
a5bb48589b5c242683da33a9f1acc7847acc3ce4f2c4213ea524858aa789a6e9        42571 Austinb-nginx-upload-module-643b4c1.tar.gz
35b506e57e19e780e01ecc7c3c31a64473c35e4a022f5a3f98092a60cd1c1602        17322 masterzen-nginx-upload-progress-module-68b3ab3.tar.gz
93f71b7cf0db9c6dbf97e3ee11cf8efbc149946c0949d7abd19c74c7620eea50        10433 cryptofuture-nginx-upstream-fair-10ecdcf.tar.gz
bc5c3d725268abbe1c5c38de5b18a4ad9dbe5821c4afeaccabd3eec38b272be4        30275 evanmiller-mod_zip-39dc908.tar.gz
c6eed11b8e0a772f4d01aa027dff8877a53e02194ce8ca5d94d6ea95d85c3ed0        22995 ZigzagAK-ngx_dynamic_upstream-2.3.3.tar.gz
cbf6fcddc00a7e30289134bdeace12565e000cc7d4efee2d2ebb8799d0b88270        20534 arut-nginx-let-module-0.0.4.tar.gz
07f19b7bffec5e357bb8820c63e5281debd45f5a2e6d46b1636d9202c3e09d78       519934 arut-nginx-rtmp-module-1.2.2.tar.gz
ace04201cf2d2b1a3e5e732a22b92225b8ce61a494df9cc7f79d97efface8952       470904 kaltura-nginx-vod-module-1.31.tar.gz
b8b9f355c05c0790226512f6732348a2404d48531688a1fc04ce6768163bf462        13133 calio-iconv-nginx-module-0.14.tar.gz
5c1869d55897075adb3fdf840b21060dc54669a1f840a36d1539acc7e59dd106        11090 calio-form-input-nginx-module-0.12.tar.gz
ddfd4fdd99075d906b7b75c49f56ec96b76df7951dfa54502e0f83890447031f        17162 torden-ngx_cache_purge-a84b0f3.tar.gz
c69ad4495de7c7883ebc23e1e6c4cc83a4ac6a7fddd4d5c12e49d33b65f7c50b        48544 konstruxi-ngx_postgres-8aa7359.tar.gz
6ae8abb01a2aff788e75ec68621cb0159148a6f73730a84b30b0bdbc6cdc1758        11186 baysao-ngx_slowfs_cache-d011a18.tar.gz
c3dd84d8ba0b8daeace3041ef5987e3fb96e9c7c17df30c9ffe2fe3aa2a0ca31        29052 aperezdc-ngx-fancyindex-0.5.2.tar.gz
68d95628bdb3e0da12e94ea05f7e088129d35b2fc43ecc74e5de380226833457       236940 nbs-system-naxsi-d714f16.tar.gz


[FILE:523:manifests/plist.primary.std]
@sample etc/nginx/fastcgi_params-dist etc/nginx/fastcgi_params
@sample etc/nginx/mime.types-dist etc/nginx/mime.types
@sample etc/nginx/nginx.conf-dist etc/nginx/nginx.conf
@sample etc/nginx/scgi_params-dist etc/nginx/scgi_params
@sample etc/nginx/uwsgi_params-dist etc/nginx/uwsgi_params
etc/nginx/
 koi-utf
 koi-win
 win-utf
libexec/nginx/
 ngx_mail_module.so
 ngx_stream_module.so
sbin/nginx
www/nginx-dist/
 50x.html
 EXAMPLE_DIRECTORY-DONT_ADD_OR_TOUCH_ANYTHING
 index.html
@dir %%NGINX_LOGDIR%%
@dir %%NGINX_TMPDIR%%


[FILE:23:manifests/plist.man]
share/man/man8/nginx.8


[FILE:1203:manifests/plist.primary.loaded]
@sample etc/nginx/fastcgi_params-dist etc/nginx/fastcgi_params
@sample etc/nginx/mime.types-dist etc/nginx/mime.types
@sample etc/nginx/nginx.conf-dist etc/nginx/nginx.conf
@sample etc/nginx/scgi_params-dist etc/nginx/scgi_params
@sample etc/nginx/uwsgi_params-dist etc/nginx/uwsgi_params
%%SITE_ARCH%%/nginx.pm
%%SITE_ARCH%%/auto/nginx/nginx.so
etc/nginx/
 koi-utf
 koi-win
 win-utf
libexec/nginx/
 ngx_http_auth_digest_module.so
 ngx_http_dynamic_upstream_module.so
 ngx_http_echo_module.so
 ngx_http_eval_module.so
 ngx_http_fancyindex_module.so
 ngx_http_form_input_module.so
 ngx_http_geoip2_module.so
 ngx_http_headers_more_filter_module.so
 ngx_http_iconv_module.so
 ngx_http_image_filter_module.so
 ngx_http_js_module.so
 ngx_http_memc_module.so
 ngx_http_naxsi_module.so
 ngx_http_perl_module.so
 ngx_http_set_misc_module.so
 ngx_http_upstream_fair_module.so
 ngx_http_vod_module.so
 ngx_http_xslt_filter_module.so
 ngx_http_zip_module.so
 ngx_mail_module.so
 ngx_rtmp_module.so
 ngx_stream_geoip2_module.so
 ngx_stream_js_module.so
 ngx_stream_module.so
sbin/nginx
www/nginx-dist/
 50x.html
 EXAMPLE_DIRECTORY-DONT_ADD_OR_TOUCH_ANYTHING
 index.html
@dir %%NGINX_LOGDIR%%
@dir %%NGINX_TMPDIR%%


[FILE:271:patches/patch-auto_unix]
--- auto/unix.orig	2025-02-05 11:06:32 UTC
+++ auto/unix
@@ -129,7 +129,7 @@ if test -z "$NGX_KQUEUE_CHECKED"; then
 fi
 
 
-if [ "$NGX_SYSTEM" = "NetBSD" ]; then
+if [ "$NGX_SYSTEM" = "xxxxx" ]; then
 
     # NetBSD 2.0 incompatibly defines kevent.udata as "intptr_t"
 


[FILE:721:files/extra-patch-iconv]
--- ../iconv-nginx-module-0.14/config.orig	2016-05-15 23:34:17 UTC
+++ ../iconv-nginx-module-0.14/config
@@ -48,12 +48,12 @@ else
     fi
 
     if [ $ngx_found = no ]; then
-        ngx_feature="libiconv in /usr/local/"
-        ngx_feature_path="/usr/local/include"
+        ngx_feature="libiconv in %%PREFIX%%/"
+        ngx_feature_path="%%PREFIX%%/include"
         if [ $NGX_RPATH = YES ]; then
-            ngx_feature_libs="-R/usr/local/lib -L/usr/local/lib -liconv"
+            ngx_feature_libs="-R%%PREFIX%%/lib -L%%PREFIX%%/lib -liconv"
         else
-            ngx_feature_libs="-L/usr/local/lib -liconv"
+            ngx_feature_libs="-L%%PREFIX%%/lib -liconv"
         fi
         . auto/feature
     fi


[FILE:372:files/extra-patch-naxsi]
--- ../naxsi-d714f16/naxsi_src/naxsi_net.h.orig	2020-11-17 13:46:31 UTC
+++ ../naxsi-d714f16/naxsi_src/naxsi_net.h
@@ -13,6 +13,13 @@
 #include <sys/types.h>
 #endif
 
+#if defined(__DragonFly__)
+#include <netinet/in.h>
+#include <netinet/ip6.h>
+#include <sys/socket.h>
+#include <sys/types.h>
+#endif
+
 #include <arpa/inet.h>
 #include <stdint.h>
 #include <string.h>


[FILE:594:files/extra-patch-naxsi_runtime.c]
--- ../naxsi-d714f16/naxsi_src/naxsi_runtime.c.orig	2022-07-10 18:11:39.685243000 -0400
+++ ../naxsi-d714f16/naxsi_src/naxsi_runtime.c
@@ -9,6 +9,11 @@
 #include "naxsi_macros.h"
 #include "naxsi_net.h"
 
+#if (NGX_PCRE2)
+#include <pcre2.h>
+#else
+#include <pcre.h>
+#endif
 /* used to store locations during the configuration time.
    then, accessed by the hashtable building feature during "init" time. */
 
@@ -181,7 +186,7 @@
 unsigned char*
 ngx_utf8_check(ngx_str_t* str);
 
-#if defined nginx_version && (nginx_version >= 1021005)
+#if (NGX_PCRE2)
 /*
  * variables to use pcre2
  */


[FILE:842:files/extra-patch-nginx-ct]
--- ../nginx-ct-93e9884/ngx_ssl_ct_module.c.orig	2017-07-23 12:03:35 UTC
+++ ../nginx-ct-93e9884/ngx_ssl_ct_module.c
@@ -160,7 +160,7 @@ next:
 
 #ifndef OPENSSL_IS_BORINGSSL
     /* add OpenSSL TLS extension */
-#  if OPENSSL_VERSION_NUMBER >= 0x10101000L
+#  if OPENSSL_VERSION_NUMBER >= 0x10101000L && !defined(LIBRESSL_VERSION_NUMBER)
     int context = SSL_EXT_CLIENT_HELLO
                 | SSL_EXT_TLS1_2_SERVER_HELLO
                 | SSL_EXT_TLS1_3_CERTIFICATE;
@@ -184,7 +184,7 @@ next:
 }
 
 #ifndef OPENSSL_IS_BORINGSSL
-#  if OPENSSL_VERSION_NUMBER >= 0x10101000L
+#  if OPENSSL_VERSION_NUMBER >= 0x10101000L && !defined(LIBRESSL_VERSION_NUMBER)
 int ngx_ssl_ct_ext_cb(SSL *s, unsigned int ext_type, unsigned int context,
     const unsigned char **out, size_t *outlen, X509 *x, size_t chainidx,
     int *al, void *add_arg) {


[FILE:360:files/extra-patch-ngx_http_notice_module.c]
--- ../nginx-notice-3c95966/ngx_http_notice_module.c.orig	2009-07-16 18:37:57.000000000 +0200
+++ ../nginx-notice-3c95966/ngx_http_notice_module.c
@@ -153,7 +153,7 @@
         return NGX_HTTP_NOT_ALLOWED;
     }
 
-    rc = ngx_http_discard_body(r);
+    rc = ngx_http_discard_request_body(r);
 
     if (rc != NGX_OK && rc != NGX_AGAIN) {
         return rc;


[FILE:2474:files/extra-patch-ngx_http_uploadprogress_module.c]
--- ../nginx-upload-progress-module-68b3ab3/ngx_http_uploadprogress_module.c.orig	2021-12-24 10:53:38.000000000 -0500
+++ ../nginx-upload-progress-module-68b3ab3/ngx_http_uploadprogress_module.c	2022-07-10 22:24:32.435330000 -0400
@@ -559,12 +559,12 @@
     ngx_chain_t                      out;
     ngx_int_t                        rc, found=0, done=0, err_status=0;
     off_t                            rest=0, length=0;
-    ngx_uint_t                       len, i;
+    ngx_uint_t                       len;
     ngx_slab_pool_t                 *shpool;
     ngx_http_uploadprogress_conf_t  *upcf;
     ngx_http_uploadprogress_ctx_t   *ctx;
     ngx_http_uploadprogress_node_t  *up;
-    ngx_table_elt_t                 *expires, *cc, **ccp;
+    ngx_table_elt_t                 *expires, *cc;
     ngx_http_uploadprogress_state_t  state;
     ngx_http_uploadprogress_template_t  *t;
 
@@ -637,6 +637,7 @@
         }
 
         r->headers_out.expires = expires;
+        expires->next = NULL;
 
         expires->hash = 1;
         expires->key.len = sizeof("Expires") - 1;
@@ -646,37 +647,30 @@
     len = sizeof("Mon, 28 Sep 1970 06:00:00 GMT");
     expires->value.len = len - 1;
 
-    ccp = r->headers_out.cache_control.elts;
-    if (ccp == NULL) {
+    cc = r->headers_out.cache_control;
 
-        if (ngx_array_init(&r->headers_out.cache_control, r->pool,
-                           1, sizeof(ngx_table_elt_t *))
-            != NGX_OK) {
-            return NGX_HTTP_INTERNAL_SERVER_ERROR;
-        }
+    if (cc == NULL) {
 
-        ccp = ngx_array_push(&r->headers_out.cache_control);
-        if (ccp == NULL) {
-            return NGX_HTTP_INTERNAL_SERVER_ERROR;
-        }
-
         cc = ngx_list_push(&r->headers_out.headers);
         if (cc == NULL) {
+            expires->hash = 0;
             return NGX_HTTP_INTERNAL_SERVER_ERROR;
         }
 
+        r->headers_out.cache_control = cc;
+        cc->next = NULL;
+
         cc->hash = 1;
         cc->key.len = sizeof("Cache-Control") - 1;
         cc->key.data = (u_char *) "Cache-Control";
 
-        *ccp = cc;
-
     } else {
-        for (i = 1; i < r->headers_out.cache_control.nelts; i++) {
-            ccp[i]->hash = 0;
+        for (cc = cc->next; cc; cc = cc->next) {
+            cc->hash = 0;
         }
 
-        cc = ccp[0];
+        cc = r->headers_out.cache_control;
+        cc->next = NULL;
     }
 
     expires->value.data = (u_char *) "Thu, 01 Jan 1970 00:00:01 GMT";


[FILE:731:files/extra-patch-postgresql]
--- ../ngx_postgres-8aa7359/config.orig	2015-05-26 20:52:25.649166000 +0300
+++ ../ngx_postgres-8aa7359/config
@@ -48,12 +48,12 @@
 
     if [ $ngx_found = no ]; then
         # FreeBSD
-        ngx_feature="libpq library in /usr/local/"
-        ngx_feature_path="/usr/local/include"
+        ngx_feature="libpq library in %%PREFIX%%/"
+        ngx_feature_path="%%PREFIX%%/include"
         if [ $NGX_RPATH = YES ]; then
-            ngx_feature_libs="-R/usr/local/lib -L/usr/local/lib -lpq"
+            ngx_feature_libs="-R%%PREFIX%%/lib -L%%PREFIX%%/lib -lpq"
         else
-            ngx_feature_libs="-L/usr/local/lib -lpq"
+            ngx_feature_libs="-L%%PREFIX%%/lib -lpq"
         fi
         . auto/feature
     fi


[FILE:1443:files/extra-patch-src_http_modules_ngx__http__upstream__hash__module.c]
--- src/http/modules/ngx_http_upstream_hash_module.c.orig	2024-04-23 14:04:32 UTC
+++ src/http/modules/ngx_http_upstream_hash_module.c
@@ -9,6 +9,9 @@
 #include <ngx_core.h>
 #include <ngx_http.h>
 
+#if (NGX_HTTP_UPSTREAM_CHECK)
+#include "ngx_http_upstream_check_module.h"
+#endif
 
 typedef struct {
     uint32_t                            hash;
@@ -238,6 +241,15 @@ ngx_http_upstream_get_hash_peer(ngx_peer
             goto next;
         }
 
+#if (NGX_HTTP_UPSTREAM_CHECK)
+        ngx_log_debug1(NGX_LOG_DEBUG_HTTP, pc->log, 0,
+            "get hash peer, check_index: %ui",
+             peer->check_index);
+        if (ngx_http_upstream_check_peer_down(peer->check_index)) {
+            goto next;
+        }
+#endif
+
         if (peer->max_fails
             && peer->fails >= peer->max_fails
             && now - peer->checked <= peer->fail_timeout)
@@ -560,6 +572,15 @@ ngx_http_upstream_get_chash_peer(ngx_pee
                 continue;
             }
 
+#if (NGX_HTTP_UPSTREAM_CHECK)
+            ngx_log_debug1(NGX_LOG_DEBUG_HTTP, pc->log, 0,
+                "get consistent_hash peer, check_index: %ui",
+                 peer->check_index);
+            if (ngx_http_upstream_check_peer_down(peer->check_index)) {
+                continue;
+            }
+#endif
+
             if (peer->server.len != server->len
                 || ngx_strncmp(peer->server.data, server->data, server->len)
                    != 0)


[FILE:875:files/extra-patch-src_http_modules_ngx__http__upstream__ip__hash__module.c]
--- src/http/modules/ngx_http_upstream_ip_hash_module.c.orig	2024-04-23 14:04:32 UTC
+++ src/http/modules/ngx_http_upstream_ip_hash_module.c
@@ -9,6 +9,9 @@
 #include <ngx_core.h>
 #include <ngx_http.h>
 
+#if (NGX_HTTP_UPSTREAM_CHECK)
+#include "ngx_http_upstream_check_module.h"
+#endif
 
 typedef struct {
     /* the round robin data must be first */
@@ -208,6 +211,15 @@ ngx_http_upstream_get_ip_hash_peer(ngx_p
             goto next;
         }
 
+#if (NGX_HTTP_UPSTREAM_CHECK)
+        ngx_log_debug1(NGX_LOG_DEBUG_HTTP, pc->log, 0,
+            "get ip_hash peer, check_index: %ui",
+             peer->check_index);
+        if (ngx_http_upstream_check_peer_down(peer->check_index)) {
+            goto next;
+        }
+#endif
+
         if (peer->max_fails
             && peer->fails >= peer->max_fails
             && now - peer->checked <= peer->fail_timeout)


[FILE:1493:files/extra-patch-src_http_modules_ngx__http__upstream__least__conn__module.c]
--- src/http/modules/ngx_http_upstream_least_conn_module.c.orig	2024-04-23 14:04:32 UTC
+++ src/http/modules/ngx_http_upstream_least_conn_module.c
@@ -9,6 +9,9 @@
 #include <ngx_core.h>
 #include <ngx_http.h>
 
+#if (NGX_HTTP_UPSTREAM_CHECK)
+#include "ngx_http_upstream_check_module.h"
+#endif
 
 static ngx_int_t ngx_http_upstream_init_least_conn_peer(ngx_http_request_t *r,
     ngx_http_upstream_srv_conf_t *us);
@@ -147,6 +150,16 @@ ngx_http_upstream_get_least_conn_peer(ng
             continue;
         }
 
+#if (NGX_HTTP_UPSTREAM_CHECK)
+        ngx_log_debug1(NGX_LOG_DEBUG_HTTP, pc->log, 0,
+                "get least_conn peer, check_index: %ui",
+                peer->check_index);
+
+        if (ngx_http_upstream_check_peer_down(peer->check_index)) {
+            continue;
+        }
+#endif
+
         if (peer->max_fails
             && peer->fails >= peer->max_fails
             && now - peer->checked <= peer->fail_timeout)
@@ -202,6 +215,16 @@ ngx_http_upstream_get_least_conn_peer(ng
                 continue;
             }
 
+#if (NGX_HTTP_UPSTREAM_CHECK)
+            ngx_log_debug1(NGX_LOG_DEBUG_HTTP, pc->log, 0,
+                    "get least_conn peer, check_index: %ui",
+                    peer->check_index);
+
+            if (ngx_http_upstream_check_peer_down(peer->check_index)) {
+                continue;
+            }
+#endif
+
             if (peer->conns * best->weight != best->conns * peer->weight) {
                 continue;
             }


[FILE:3377:files/extra-patch-src_http_ngx__http__upstream__round__robin.c]
--- src/http/ngx_http_upstream_round_robin.c.orig	2024-04-23 14:04:32 UTC
+++ src/http/ngx_http_upstream_round_robin.c
@@ -9,6 +9,9 @@
 #include <ngx_core.h>
 #include <ngx_http.h>
 
+#if (NGX_HTTP_UPSTREAM_CHECK)
+#include "ngx_http_upstream_check_module.h"
+#endif
 
 #define ngx_http_upstream_tries(p) ((p)->tries                                \
                                     + ((p)->next ? (p)->next->tries : 0))
@@ -103,7 +106,14 @@ ngx_http_upstream_init_round_robin(ngx_c
                 peer[n].fail_timeout = server[i].fail_timeout;
                 peer[n].down = server[i].down;
                 peer[n].server = server[i].name;
-
+#if (NGX_HTTP_UPSTREAM_CHECK)
+                if (!server[i].down) {
+                    peer[n].check_index =
+                        ngx_http_upstream_check_add_peer(cf, us, &server[i].addrs[j]);
+                } else {
+                    peer[n].check_index = (ngx_uint_t) NGX_ERROR;
+                }
+#endif
                 *peerp = &peer[n];
                 peerp = &peer[n].next;
                 n++;
@@ -173,7 +183,15 @@ ngx_http_upstream_init_round_robin(ngx_c
                 peer[n].fail_timeout = server[i].fail_timeout;
                 peer[n].down = server[i].down;
                 peer[n].server = server[i].name;
-
+#if (NGX_HTTP_UPSTREAM_CHECK)
+                if (!server[i].down) {
+                    peer[n].check_index =
+                        ngx_http_upstream_check_add_peer(cf, us, &server[i].addrs[j]);
+                }
+                else {
+                    peer[n].check_index = (ngx_uint_t) NGX_ERROR;
+                }
+#endif
                 *peerp = &peer[n];
                 peerp = &peer[n].next;
                 n++;
@@ -241,6 +259,9 @@ ngx_http_upstream_init_round_robin(ngx_c
         peer[i].max_conns = 0;
         peer[i].max_fails = 1;
         peer[i].fail_timeout = 10;
+#if (NGX_HTTP_UPSTREAM_CHECK)
+        peer[i].check_index = (ngx_uint_t) NGX_ERROR;
+#endif
         *peerp = &peer[i];
         peerp = &peer[i].next;
     }
@@ -358,6 +379,9 @@ ngx_http_upstream_create_round_robin_pee
         peer[0].max_conns = 0;
         peer[0].max_fails = 1;
         peer[0].fail_timeout = 10;
+#if (NGX_HTTP_UPSTREAM_CHECK)
+        peer[0].check_index = (ngx_uint_t) NGX_ERROR;
+#endif
         peers->peer = peer;
 
     } else {
@@ -392,6 +416,9 @@ ngx_http_upstream_create_round_robin_pee
             peer[i].max_conns = 0;
             peer[i].max_fails = 1;
             peer[i].fail_timeout = 10;
+#if (NGX_HTTP_UPSTREAM_CHECK)
+            peer[i].check_index = (ngx_uint_t) NGX_ERROR;
+#endif
             *peerp = &peer[i];
             peerp = &peer[i].next;
         }
@@ -457,6 +484,12 @@ ngx_http_upstream_get_round_robin_peer(n
             goto failed;
         }
 
+#if (NGX_HTTP_UPSTREAM_CHECK)
+        if (ngx_http_upstream_check_peer_down(peer->check_index)) {
+            goto failed;
+        }
+#endif
+
         rrp->current = peer;
 
     } else {
@@ -551,6 +584,12 @@ ngx_http_upstream_get_peer(ngx_http_upst
             continue;
         }
 
+#if (NGX_HTTP_UPSTREAM_CHECK)
+        if (ngx_http_upstream_check_peer_down(peer->check_index)) {
+            continue;
+        }
+#endif
+
         if (peer->max_fails
             && peer->fails >= peer->max_fails
             && now - peer->checked <= peer->fail_timeout)


[FILE:390:files/extra-patch-src_http_ngx__http__upstream__round__robin.h]
--- src/http/ngx_http_upstream_round_robin.h.orig	2024-04-23 14:04:32 UTC
+++ src/http/ngx_http_upstream_round_robin.h
@@ -49,6 +49,10 @@ struct ngx_http_upstream_rr_peer_s {
     ngx_atomic_t                    lock;
 #endif
 
+#if (NGX_HTTP_UPSTREAM_CHECK)
+    ngx_uint_t                      check_index;
+#endif
+
     ngx_http_upstream_rr_peer_t    *next;
 
     NGX_COMPAT_BEGIN(32)


[FILE:677:files/messages-primary.ucl.in]
primary: {
  type: "install"
  message: <<EOM
A recent version of the NGINX introduced dynamic modules support.
To load a module at runtime, include the new `load_module'
directive in the main context, specifying the path to the shared
object file for the module, enclosed in quotation marks.  When you
reload the configuration or restart NGINX, the module is loaded in.
It is possible to specify a path relative to the source directory,
or a full path, please see
https://www.nginx.com/blog/dynamic-modules-nginx-1-9-11/ and
http://nginx.org/en/docs/ngx_core_module.html#load_module for
details.

Default path for the NGINX dynamic modules is

%%PREFIX%%/libexec/nginx.
EOM
}


[FILE:3521:files/nginx.in]
#!/bin/sh
#
# PROVIDE: nginx
# REQUIRE: LOGIN cleanvar
# KEYWORD: shutdown
#
# Add the following lines to /etc/rc.conf to enable nginx:
# nginx_enable (bool):		Set to "NO" by default.
#				Set it to "YES" to enable nginx
# nginx_profiles (str):		Set to "" by default.
#				Define your profiles here.
# nginx_pid_prefix (str):	Set to "" by default.
#				When using profiles manually assign value to "nginx_"
#				for prevent collision with other PIDs names.
# nginxlimits_enable (bool):	Set to "NO" by default.
#				Set it to yes to run `limits $limits_args`
#				just before nginx starts.
# nginx_flags (str):		Set to "" by default.
#				Extra flags passed to start command.
# nginxlimits_args (str):	Default to "-e -U %%WWWOWN%%"
#				Arguments of pre-start limits run.

. /etc/rc.subr

name="nginx"
rcvar=nginx_enable

start_precmd="nginx_precmd"
restart_precmd="nginx_checkconfig"
reload_precmd="nginx_checkconfig"
configtest_cmd="nginx_checkconfig"
gracefulstop_cmd="nginx_gracefulstop"
upgrade_precmd="nginx_checkconfig"
upgrade_cmd="nginx_upgrade"
command="%%PREFIX%%/sbin/nginx"
_pidprefix="%%NGINX_RUNDIR%%"
pidfile="${_pidprefix}/${name}.pid"
_tmpprefix="%%NGINX_TMPDIR%%"
required_files=%%PREFIX%%/etc/nginx/nginx.conf
extra_commands="reload configtest upgrade gracefulstop"

[ -z "$nginx_enable" ]		&& nginx_enable="NO"
[ -z "$nginxlimits_enable" ]	&& nginxlimits_enable="NO"
[ -z "$nginxlimits_args" ]	&& nginxlimits_args="-e -U %%WWWOWN%%"

load_rc_config $name

if [ -n "$2" ]; then
	profile="$2"
	if [ "x${nginx_profiles}" != "x" ]; then
		pidfile="${_pidprefix}/${nginx_pid_prefix}${profile}.pid"
		eval nginx_configfile="\${nginx_${profile}_configfile:-}"
		if [ "x${nginx_configfile}" = "x" ]; then
			echo "You must define a configuration file (nginx_${profile}_configfile)"
			exit 1
		fi
		required_files="${nginx_configfile}"
		eval nginx_enable="\${nginx_${profile}_enable:-${nginx_enable}}"
		eval nginx_flags="\${nginx_${profile}_flags:-${nginx_flags}}"
		eval nginxlimits_enable="\${nginxlimits_${profile}_enable:-${nginxlimits_enable}}"
		eval nginxlimits_args="\${nginxlimits_${profile}_args:-${nginxlimits_args}}"
		nginx_flags="-c ${nginx_configfile} -g \"pid ${pidfile};\" ${nginx_flags}"
	else
		echo "$0: extra argument ignored"
	fi
else
	if [ "x${nginx_profiles}" != "x" -a "x$1" != "x" ]; then
		for profile in ${nginx_profiles}; do
			echo "===> nginx profile: ${profile}"
			%%PREFIX%%/etc/rc.d/nginx $1 ${profile}
			retcode="$?"
			if [ "0${retcode}" -ne 0 ]; then
				failed="${profile} (${retcode}) ${failed:-}"
			else
				success="${profile} ${success:-}"
			fi
		done
		exit 0
	fi
fi

# tmpfs(5)
nginx_checktmpdir()
{
	if [ ! -d ${_tmpprefix} ] ; then
		install -d -o %%WWWOWN%% -g %%WWWGRP%% -m 755 ${_tmpprefix}
	fi
}

nginx_checkconfig()
{
	nginx_checktmpdir

	echo "Performing sanity check on nginx configuration:"
	eval ${command} ${nginx_flags} -t
}

nginx_gracefulstop()
{
	echo "Performing a graceful stop:"
	sig_stop="QUIT"
	run_rc_command ${rc_prefix}stop $rc_extra_args || return 1
}

nginx_upgrade()
{
	echo "Upgrading nginx binary:"

	reload_precmd=""
	sig_reload="USR2"
	run_rc_command ${rc_prefix}reload $rc_extra_args || return 1

	sleep 1

	echo "Stopping old binary:"

	sig_reload="QUIT"
	pidfile="$pidfile.oldbin"
	run_rc_command ${rc_prefix}reload $rc_extra_args || return 1
}

nginx_precmd() 
{
	nginx_checkconfig

	if checkyesno nginxlimits_enable
	then
		eval `/usr/bin/limits ${nginxlimits_args}` 2>/dev/null
	else
		return 0
	fi
}

run_rc_command "$1"


[FILE:589:files/scripts-primary.ucl]
post-install-lua: [{
    args: ""
    code: <<EOS
real = pkg.prefixed_path("www/nginx")
dist = pkg.prefixed_path("www/nginx-dist")
pkg.exec({"/bin/mkdir", "-p", "-m", "755", dist})
pkg.exec({"/bin/chmod", "a-w", dist})
st = pkg.stat(real)
make_link = true
if st then
   if st.type == "dir" then
      make_link = false
   end
end
if make_link then
   pkg.exec({"/bin/ln", "-fs", dist, real})
end
EOS
}]
pre-deinstall-lua: [{
   args: ""
   code: <<EOS
real = pkg.prefixed_path("www/nginx")
st = pkg.stat(real)
if st then
   if st.type == "lnk" then
      os.remove(real)
   end
end
EOS
}]


[FILE:314:dragonfly/patch-src_core_ngx__config.h]
--- src/core/ngx_config.h.orig	2025-02-05 11:06:32 UTC
+++ src/core/ngx_config.h
@@ -12,8 +12,8 @@
 #include <ngx_auto_headers.h>
 
 
-#if defined __DragonFly__ && !defined __FreeBSD__
-#define __FreeBSD__        4
+#if defined __DragonFly__
+#undef  __FreeBSD_version
 #define __FreeBSD_version  480101
 #endif
 


[FILE:470:dragonfly/patch-src_event_modules_ngx__eventport__module.c]
--- src/event/modules/ngx_eventport_module.c.orig	2025-02-05 11:06:32 UTC
+++ src/event/modules/ngx_eventport_module.c
@@ -51,7 +51,7 @@ typedef struct  port_notify {
     void       *portnfy_user;   /* user defined */
 } port_notify_t;
 
-#if (__FreeBSD__ && __FreeBSD_version < 700005) || (NGX_DARWIN)
+#if (__FreeBSD_version < 700005) || (NGX_DARWIN)
 
 typedef struct itimerspec {     /* definition per POSIX.4 */
     struct timespec it_interval;/* timer period */


[FILE:532:dragonfly/patch-src_event_modules_ngx__kqueue__module.c]
--- src/event/modules/ngx_kqueue_module.c.orig	2025-02-05 11:06:32 UTC
+++ src/event/modules/ngx_kqueue_module.c
@@ -429,8 +429,7 @@ ngx_kqueue_set_event(ngx_event_t *ev, ng
     if (filter == EVFILT_VNODE) {
         kev->fflags = NOTE_DELETE|NOTE_WRITE|NOTE_EXTEND
                                  |NOTE_ATTRIB|NOTE_RENAME
-#if (__FreeBSD__ == 4 && __FreeBSD_version >= 430000) \
-    || __FreeBSD_version >= 500018
+#if __FreeBSD_version >= 430000
                                  |NOTE_REVOKE
 #endif
                       ;


[FILE:447:dragonfly/patch-src_os_unix_ngx__freebsd__init.c]
--- src/os/unix/ngx_freebsd_init.c.orig	2025-02-05 11:06:32 UTC
+++ src/os/unix/ngx_freebsd_init.c
@@ -162,8 +162,7 @@ ngx_os_specific_init(ngx_log_t *log)
      * to allow an old binary to run correctly on an updated FreeBSD system.
      */
 
-#if (__FreeBSD__ == 4 && __FreeBSD_version >= 460102) \
-    || __FreeBSD_version == 460002 || __FreeBSD_version >= 500039
+#if __FreeBSD_version >= 460102
 
     /* a new syscall without the bug */