Nginx devel

This commit is contained in:
2024-03-15 15:46:35 +01:00
parent c66f6c2c0d
commit 44eacace6a
45 changed files with 2667 additions and 0 deletions

View File

@ -0,0 +1,19 @@
--- ../iconv-nginx-module-0.14/config.orig 2013-04-16 17:57:17.000000000 -0700
+++ ../iconv-nginx-module-0.14/config 2013-05-01 17:16:28.134624745 -0700
@@ -39,12 +39,12 @@
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

View File

@ -0,0 +1,13 @@
--- ../libinjection-51f3a96/src/libinjection_sqli.c.orig 2023-05-30 15:47:57.333208000 -0400
+++ ../libinjection-51f3a96/src/libinjection_sqli.c 2023-05-30 15:49:52.273873000 -0400
@@ -305,8 +303,8 @@
static void st_assign(stoken_t * st, const char stype,
size_t pos, size_t len, const char* value)
{
- const size_t MSIZE = LIBINJECTION_SQLI_TOKEN_SIZE;
- size_t last = len < MSIZE ? len : (MSIZE - 1);
+ const size_t NAXSI_MSIZE = LIBINJECTION_SQLI_TOKEN_SIZE;
+ size_t last = len < NAXSI_MSIZE ? len : (NAXSI_MSIZE - 1);
st->type = (char) stype;
st->pos = pos;
st->len = last;

View File

@ -0,0 +1,26 @@
--- ../naxsi-1.5/naxsi_src/config.orig 2023-09-27 09:43:18.644606000 -0400
+++ ../naxsi-1.5/naxsi_src/config 2023-09-27 09:44:37.585970000 -0400
@@ -24,11 +24,6 @@
"
# try to use libinjection as system library
-LIBINJECTION_CFLAGS="$(pkg-config --cflags libinjection)"
-LIBINJECTION_LIBS="$(pkg-config --libs libinjection)"
-LIBINJECTION_FOUND="$?"
-
-if [ "$LIBINJECTION_FOUND" != "0" ]; then
if [ ! -d "$ngx_addon_dir/libinjection/src/" ]; then
echo "Cannot find 'libinjection' submodule."
exit 1;
@@ -43,11 +38,6 @@
naxsi_sources="$naxsi_sources $ngx_addon_dir/libinjection_ngxbuild/$src_file"
done;
CFLAGS="$CFLAGS -DLIBINJECTION_VERSION=0 -I$ngx_addon_dir/libinjection_ngxbuild/"
-else
- echo "Using system libinjection"
- CFLAGS="$CFLAGS $LIBINJECTION_CFLAGS"
- ngx_feature_libs="$LIBINJECTION_LIBS"
-fi
# NGINX module condfiguration.
ngx_addon_name=naxsi

View File

@ -0,0 +1,20 @@
--- ../nginx-ct-93e9884/ngx_ssl_ct_module.c.orig 2017-07-23 08:03:35.000000000 -0400
+++ ../nginx-ct-93e9884/ngx_ssl_ct_module.c 2018-04-24 16:58:27.698435000 -0400
@@ -158,7 +158,7 @@
#endif
}
-#ifndef OPENSSL_IS_BORINGSSL
+#if !defined(OPENSSL_IS_BORINGSSL) && !defined(LIBRESSL_VERSION_NUMBER)
/* add OpenSSL TLS extension */
# if OPENSSL_VERSION_NUMBER >= 0x10101000L
int context = SSL_EXT_CLIENT_HELLO
@@ -183,7 +183,7 @@
return NGX_CONF_OK;
}
-#ifndef OPENSSL_IS_BORINGSSL
+#if !defined(OPENSSL_IS_BORINGSSL) && !defined(LIBRESSL_VERSION_NUMBER)
# if OPENSSL_VERSION_NUMBER >= 0x10101000L
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,

View File

@ -0,0 +1,12 @@
--- ../nginx-http-footer-filter-1.2.2/config.orig 2020-04-24 08:37:44.671689000 -0400
+++ ../nginx-http-footer-filter-1.2.2/config 2020-04-24 08:44:41.868601000 -0400
@@ -1,3 +1,7 @@
ngx_addon_name=ngx_http_footer_filter_module
-HTTP_FILTER_MODULES="$HTTP_FILTER_MODULES ngx_http_footer_filter_module"
-NGX_ADDON_SRCS="$NGX_ADDON_SRCS $ngx_addon_dir/ngx_http_footer_filter_module.c"
+ngx_module_type=HTTP_FILTER
+ngx_module_name="$ngx_addon_name"
+
+ngx_module_srcs="$ngx_addon_dir/ngx_http_footer_filter_module.c"
+
+. auto/module

View File

@ -0,0 +1,42 @@
--- ../nginx-link-function-3.2.4/config.orig 2020-10-12 22:32:47.000000000 -0400
+++ ../nginx-link-function-3.2.4/config 2020-11-13 12:26:56.186032000 -0500
@@ -15,24 +15,6 @@
#echo "#define NGINX_HTTP_HTTP_LINK_FUNC_VERSION \""$HTTP_LINK_FUNC_VERSION"\"" > $NGX_OBJS/ngx_vod_version.h
-# ngx_link_func_module headers
-# to Test this in order to share the header file to other client instead of just depend on it owns
-ngx_feature="ngx_http_link_func"
-ngx_feature_name="NGX_HAVE_HTTP_LINK_FUNC_HEADERS"
-ngx_feature_run=no
-ngx_feature_incs="#include <ngx_link_func_module.h>"
-ngx_feature_path=
-ngx_feature_libs=
-# ngx_feature_exit_if_not_found=yes
-ngx_feature_test="int ngx_link_func_module_current_version_=ngx_link_func_module_version_34;"
-. auto/feature
-
-if [ $ngx_found != yes ]; then
-echo "ngx_link_func_module.h not found or version not aligned in your system c header path, please copy latest ngx_link_func_module.h to your /usr/include or /usr/local/include or relavent header search path with read and write permission given."
-echo "e.g install -m 644 ../nginx-link-function/src/ngx_link_func_module.h /usr/local/include/"
-echo
-exit 1
-else
cat $ngx_addon_dir/build_test_resources/sanity_test_raw_parse.t > $ngx_addon_dir/t/sanity.t
if [ $USE_THREADS = YES ]; then
cat $ngx_addon_dir/build_test_resources/sanity_test_aio_parse.t >> $ngx_addon_dir/t/sanity.t
@@ -42,13 +24,12 @@
if [ $USE_THREADS = YES ]; then
cat $ngx_addon_dir/build_test_resources/sanity_test_subrequest_aio_parse.t >> $ngx_addon_dir/t/sanity.t
fi
-fi
ABSOLUTE_NGX_LINKFUNC_CURRENT_PATH="$( cd "$ngx_addon_dir" ; pwd -P )"
if [ "$NGX_SYSTEM" = "Darwin" ]; then
clang -dynamiclib -o $ngx_addon_dir/t/liblinkfuntest.dylib -fPIC $ngx_addon_dir/build_test_resources/linkfuntest.c -Wl,-undefined,dynamic_lookup
sed -i '' "s@NGINX_HTTP_LINK_FUNC_TEST_LIB_PATH@$ABSOLUTE_NGX_LINKFUNC_CURRENT_PATH/t/liblinkfuntest.dylib@g" $ngx_addon_dir/t/sanity.t
else
-if [ "$NGX_PLATFORM" != win32 ]; then
+if [ "$NGX_PLATFORM" = win32 ]; then
cc -shared -o $ngx_addon_dir/t/liblinkfuntest.so -fPIC $ngx_addon_dir/build_test_resources/linkfuntest.c
sed -i "s@NGINX_HTTP_LINK_FUNC_TEST_LIB_PATH@$ABSOLUTE_NGX_LINKFUNC_CURRENT_PATH/t/liblinkfuntest.so@g" $ngx_addon_dir/t/sanity.t
fi

View File

@ -0,0 +1,13 @@
--- ../nginx-notice-3c95966/config.orig 2020-04-25 18:03:28.543102000 -0400
+++ ../nginx-notice-3c95966/config 2020-04-25 18:04:14.387235000 -0400
@@ -1,3 +1,8 @@
ngx_addon_name=ngx_http_notice_module
-HTTP_MODULES="$HTTP_MODULES ngx_http_notice_module"
-NGX_ADDON_SRCS="$NGX_ADDON_SRCS $ngx_addon_dir/ngx_http_notice_module.c"
+
+ngx_module_name="$ngx_addon_name"
+ngx_module_type=HTTP
+
+ngx_module_srcs="$ngx_addon_dir/ngx_http_notice_module.c"
+
+. auto/module

View File

@ -0,0 +1,25 @@
--- ../nginx-video-thumbextractor-module-e81f850/config.orig 2024-02-22 08:49:55.972829000 -0500
+++ ../nginx-video-thumbextractor-module-e81f850/config 2024-02-22 08:50:05.036983000 -0500
@@ -1,9 +1,14 @@
ngx_addon_name=ngx_http_video_thumbextractor_module
-ngx_feature_libs="-lavformat -lavcodec -lavutil -lavfilter -lswscale -lswresample -lpostproc -ljpeg"
-HTTP_AUX_FILTER_MODULES="$HTTP_AUX_FILTER_MODULES $ngx_addon_name"
-CORE_INCS="$CORE_INCS \
- $ngx_addon_dir/src \
- $ngx_addon_dir/include"
-NGX_ADDON_SRCS="$NGX_ADDON_SRCS \
- ${ngx_addon_dir}/src/ngx_http_video_thumbextractor_module.c"
-CORE_LIBS="$CORE_LIBS $ngx_feature_libs"
+ngx_module_libs="-lavformat -lavcodec -lavutil -lavfilter -lswscale -lswresample -lpostproc -ljpeg"
+ngx_module_incs="$ngx_addon_dir/include $ngx_addon_dir/src"
+
+if test -n "$ngx_module_link"; then
+ ngx_module_type=HTTP
+ ngx_module_name=$ngx_addon_name
+ ngx_module_srcs="${ngx_addon_dir}/src/ngx_http_video_thumbextractor_module.c"
+ . auto/module
+else
+ HTTP_MODULES="$HTTP_MODULES $ngx_addon_name"
+ NGX_ADDON_SRCS="$NGX_ADDON_SRCS \
+ ${ngx_addon_dir}/src/ngx_http_video_thumbextractor_module.c"
+fi

View File

@ -0,0 +1,13 @@
--- ../nginx_mogilefs_module-1.0.4/config.orig 2020-04-25 17:51:45.544308000 -0400
+++ ../nginx_mogilefs_module-1.0.4/config 2020-04-25 17:54:01.862958000 -0400
@@ -1,3 +1,8 @@
ngx_addon_name=ngx_http_mogilefs_module
-HTTP_MODULES="$HTTP_MODULES ngx_http_mogilefs_module"
-NGX_ADDON_SRCS="$NGX_ADDON_SRCS $ngx_addon_dir/ngx_http_mogilefs_module.c"
+
+ngx_module_name="$ngx_addon_name"
+ngx_module_type=HTTP
+
+ngx_module_srcs="$ngx_addon_dir/ngx_http_mogilefs_module.c"
+
+. auto/module

View File

@ -0,0 +1,41 @@
--- ../ngx_brotli-a71f931/filter/config.orig 2023-09-30 13:17:01.637746000 -0400
+++ ../ngx_brotli-a71f931/filter/config 2023-09-30 13:23:51.839920000 -0400
@@ -42,33 +42,16 @@
ngx_module_type=HTTP_FILTER
ngx_module_name=ngx_http_brotli_filter_module
-brotli="$ngx_addon_dir/deps/brotli/c"
-if [ ! -f "$brotli/include/brotli/encode.h" ]; then
-cat << END
+BROTLI_ENC_H="%%PREFIX%%/include/brotli/encode.h \
+ %%PREFIX%%/include/brotli/port.h \
+ %%PREFIX%%/include/brotli/types.h"
-$0: error: \
-Brotli library is missing from the $brotli directory.
-Please make sure that the git submodule has been checked out:
-
- cd $ngx_addon_dir && git submodule update --init && cd $PWD
-
-END
- exit 1
-fi
-
-BROTLI_OUTPUT_DIRECTORY="$brotli/../out"
-BROTLI_ENC_H="$brotli/include/brotli/encode.h \
- $brotli/include/brotli/port.h \
- $brotli/include/brotli/types.h"
-
-
-ngx_module_incs="$brotli/include"
+ngx_module_incs="$BROTLI_ENC_H"
ngx_module_deps="$BROTLI_ENC_H"
ngx_module_srcs="$BROTLI_MODULE_SRC_DIR/ngx_http_brotli_filter_module.c"
-ngx_module_libs="-L$BROTLI_OUTPUT_DIRECTORY -lbrotlienc -lbrotlicommon -lm"
+ngx_module_libs="-L%%PREFIX%%/lib -lbrotlienc -lbrotlicommon -lm"
ngx_module_order="$ngx_module_name \
- ngx_pagespeed \
ngx_http_postpone_filter_module \
ngx_http_ssi_filter_module \
ngx_http_charset_filter_module \

View File

@ -0,0 +1,10 @@
--- ../nginx-auth-ldap-83c059b/ngx_http_auth_ldap_module.c.orig 2022-08-21 17:04:57.754760000 +0300
+++ ../nginx-auth-ldap-83c059b/ngx_http_auth_ldap_module.c 2022-08-21 17:08:46.939318000 +0300
@@ -1779,6 +1779,7 @@
}
r->headers_out.www_authenticate->hash = 1;
+ r->headers_out.www_authenticate->next = NULL;
r->headers_out.www_authenticate->key.len = sizeof("WWW-Authenticate") - 1;
r->headers_out.www_authenticate->key.data = (u_char *) "WWW-Authenticate";
r->headers_out.www_authenticate->value = *realm;

View File

@ -0,0 +1,15 @@
--- ../nginx-dav-ext-module-3.0.0/ngx_http_dav_ext_module.c 2018-12-17 11:45:12.000000000 +0300
+++ ../nginx-dav-ext-module-3.0.0/ngx_http_dav_ext_module.c 2020-03-13 01:20:47.498199000 +0300
@@ -896,10 +896,9 @@
ngx_cpystrn(last, name.data, name.len + 1);
if (ngx_de_info(filename, &dir) == NGX_FILE_ERROR) {
- ngx_log_error(NGX_LOG_CRIT, r->connection->log, ngx_errno,
+ ngx_log_error(NGX_LOG_ERR, r->connection->log, ngx_errno,
ngx_de_info_n " \"%s\" failed", filename);
- rc = NGX_HTTP_INTERNAL_SERVER_ERROR;
- break;
+ continue;
}
}

View File

@ -0,0 +1,12 @@
--- ../ngx_http_json_status_module-1d2f303/config.orig 2020-04-25 16:16:47.024292000 -0400
+++ ../ngx_http_json_status_module-1d2f303/config 2020-04-25 16:18:39.461340000 -0400
@@ -1,4 +1,6 @@
ngx_addon_name=ngx_http_json_status_module
-HTTP_MODULES="$HTTP_MODULES ngx_http_json_status_module"
-NGX_ADDON_SRCS="$NGX_ADDON_SRCS $ngx_addon_dir/ngx_http_json_status_module.c"
-NGX_ADDON_DEPS="$NGX_ADDON_DEPS $ngx_addon_dir/ngx_http_json_status_module.h"
+ngx_module_name="$ngx_addon_name"
+ngx_module_type=HTTP
+ngx_module_srcs="$ngx_addon_dir/ngx_http_json_status_module.c"
+ngx_module_deps="$ngx_addon_dir/ngx_http_json_status_module.h"
+. auto/module

View File

@ -0,0 +1,12 @@
--- ../nginx_mogilefs_module-1.0.4/ngx_http_mogilefs_module.c.orig 2015-04-21 21:16:22.251692000 +0300
+++ ../nginx_mogilefs_module-1.0.4/ngx_http_mogilefs_module.c 2015-04-21 21:16:39.460724000 +0300
@@ -316,9 +316,6 @@
u->peer.log = r->connection->log;
u->peer.log_error = NGX_ERROR_ERR;
-#if (NGX_THREADS)
- u->peer.lock = &r->connection->lock;
-#endif
u->output.tag = (ngx_buf_tag_t) &ngx_http_mogilefs_module;

View File

@ -0,0 +1,11 @@
--- ../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 2009-07-16 08:09:38.000000000 +0200
@@ -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;

View File

@ -0,0 +1,34 @@
--- ../ngx_http_redis-0.3.9/ngx_http_redis_module.c.orig 2022-07-10 22:10:19.031893000 -0400
+++ ../ngx_http_redis-0.3.9/ngx_http_redis_module.c 2022-07-10 22:09:41.271731000 -0400
@@ -562,7 +562,7 @@
/* if defined gzip_flag... */
if (rlcf->gzip_flag) {
/* hash init */
- h = ngx_list_push(&r->upstream->headers_in.headers);
+ h = ngx_list_push(&r->headers_out.headers);
if (h == NULL) {
return NGX_ERROR;
}
@@ -571,19 +571,11 @@
* add Content-Encoding header for future gunzipping
* with ngx_http_gunzip_filter module
*/
- h->hash = ngx_hash(ngx_hash(ngx_hash(ngx_hash(
- ngx_hash(ngx_hash(ngx_hash(
- ngx_hash(ngx_hash(ngx_hash(
- ngx_hash(ngx_hash(ngx_hash(
- ngx_hash(ngx_hash('c', 'o'), 'n'), 't'), 'e'),
- 'n'), 't'), '-'), 'e'), 'n'), 'c'), 'o'),
- 'd'), 'i'), 'n'), 'g');
+ h->hash = 1;
+ h->next = NULL;
ngx_str_set(&h->key, "Content-Encoding");
ngx_str_set(&h->value, "gzip");
- h->lowcase_key = (u_char*) "content-encoding";
-#if (NGX_HTTP_GZIP)
- u->headers_in.content_encoding = h;
-#endif
+ r->headers_out.content_encoding = h;
}
/* try to find end of string */

View File

@ -0,0 +1,10 @@
--- ../nginx-sflow-module-543c72a/ngx_http_sflow_config.c.orig 2012-06-07 04:52:57.000000000 +0400
+++ ../nginx-sflow-module-543c72a/ngx_http_sflow_config.c 2012-06-07 04:59:18.000000000 +0400
@@ -26,7 +26,6 @@
ngx_log_error(NGX_LOG_ERR, log, 0, "getaddrinfo() failed: %s", gai_strerror(err));
switch(err) {
case EAI_NONAME: break;
- case EAI_NODATA: break;
case EAI_AGAIN: break; // loop and try again?
default: ngx_log_error(NGX_LOG_ERR, log, 0, "getaddrinfo() error: %s", gai_strerror(err)); break;
}

View File

@ -0,0 +1,11 @@
--- ../nginx-sflow-module-543c72a/ngx_http_sflow_config.h.orig 2012-07-31 21:36:49.000000000 +0400
+++ ../nginx-sflow-module-543c72a/ngx_http_sflow_config.h 2012-07-31 21:37:20.000000000 +0400
@@ -17,7 +17,7 @@
-----------------___________________________------------------
*/
-#define SFWB_DEFAULT_CONFIGFILE "/etc/hsflowd.auto"
+#define SFWB_DEFAULT_CONFIGFILE "%%PREFIX%%/etc/hsflowd.auto"
#define SFWB_SEPARATORS " \t\r\n="
#define SFWB_QUOTES "'\" \t\r\n"
/* SFWB_MAX LINE LEN must be enough to hold the whole list of targets */

View File

@ -0,0 +1,59 @@
--- ../nginx-sflow-module-543c72a/ngx_http_sflow_module.c.orig 2014-09-24 18:20:41.000000000 -0400
+++ ../nginx-sflow-module-543c72a/ngx_http_sflow_module.c 2016-08-06 21:26:24.515559000 -0400
@@ -8,9 +8,6 @@
#include <ngx_http.h>
#include <nginx.h>
-#if (NGX_THREADS)
-#include <ngx_thread.h>
-#endif
#include "ngx_http_sflow_api.h"
#include "ngx_http_sflow_config.h"
@@ -74,18 +71,10 @@
/* keep log ptr for callbacks */
ngx_log_t *log;
-#if (NGX_THREADS)
- ngx_mutex_t *mut;
-#define SFWB_LOCK(_s) ngx_mutex_lock((_s)->mut)
-#define SFWB_UNLOCK(_s) ngx_mutex_unlock((_s)->mut)
-#define SFWB_INC_CTR(_c) ngx_atomic_fetch_add(&(_c), 1)
-#define SFWB_COUNTDOWN(_c) (ngx_atomic_fetch_add(&(_c), -1) == 1)
-#else
#define SFWB_LOCK(_s) /* no-op */
#define SFWB_UNLOCK(_s) /* no-op */
#define SFWB_INC_CTR(_c) (_c)++
#define SFWB_COUNTDOWN(_c) (--(_c) == 0)
-#endif
/* skip countdown is handled per-worker to reduce lock contention.
* If all processes sample at 1:N it's the same as having only one
@@ -645,13 +634,8 @@
{
sm->random_seed = ((sm->random_seed * 32719) + 3) % 32749;
ngx_atomic_t next_skip = (sm->random_seed % ((2 * sm->sampling_rate) - 1)) + 1;
-#if (NGX_THREADS)
- ngx_atomic_int_t test_skip = ngx_atomic_fetch_add(&sm->sflow_skip, next_skip);
- return (test_skip + next_skip);
-#else
sm->sflow_skip = next_skip;
return next_skip;
-#endif
}
/*_________________---------------------------__________________
@@ -864,13 +848,6 @@
{
ngx_log_debug0(NGX_LOG_DEBUG_HTTP, cf->log, 0, "sflow: sfwb_init()");
-#if (NGX_THREADS)
- /* a mutex to lock the sFlow agent when taking a sample (only needed if there
- * is more that one worker thread - right now it seems like threads are not even
- * an option in the configure script)
- */
- sm->mut = ngx_mutex_init(cf->log, 0);
-#endif
/* look up some vars by name and cache the index numbers -- see ngx_http_variables.c */
ngx_str_t str_uri = ngx_string("request_uri"); /* the "unparsed" variant */

View File

@ -0,0 +1,24 @@
--- ../nginx_upstream_module-aeb8696/config.orig 2017-09-18 11:54:00.000000000 -0400
+++ ../nginx_upstream_module-aeb8696/config 2017-12-04 21:56:41.978227000 -0500
@@ -7,18 +7,10 @@
$ngx_addon_dir/third_party \
"
-test -f $ngx_addon_dir/third_party/yajl/build/yajl-2.1.0/lib/libyajl_s.a &&
-test -f $ngx_addon_dir/third_party/msgpuck/libmsgpuck.a && {
- libs=" \
- $ngx_addon_dir/third_party/yajl/build/yajl-2.1.0/lib/libyajl_s.a \
- $ngx_addon_dir/third_party/msgpuck/libmsgpuck.a \
- "
-
- include_paths="${include_paths} \
- $ngx_addon_dir/third_party/msgpuck \
- $ngx_addon_dir/third_party/yajl/build/yajl-2.1.0/include \
+include_paths="${include_paths} \
+ %%PREFIX%%/include/msgpuck \
+ %%PREFIX%%/include/yajl \
"
-}
module_src_dir="$ngx_addon_dir/src"

View File

@ -0,0 +1,73 @@
--- ../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";

View File

@ -0,0 +1,11 @@
--- ../nginx-link-function-3.2.4/src/ngx_link_func_module.c.orig 2020-01-24 10:32:50.550797000 -0500
+++ ../nginx-link-function-3.2.4/src/ngx_link_func_module.c 2020-01-24 10:33:17.135348000 -0500
@@ -35,7 +35,7 @@
#include <ngx_config.h>
#include <ngx_core.h>
#include <ngx_http.h>
-#include <ngx_link_func_module.h>
+#include "ngx_link_func_module.h"
#define MODULE_NAME "nginx_link_function"

View File

@ -0,0 +1,19 @@
--- ../ngx_postgres-8aa7359/config.orig 2015-05-26 20:52:25.649166000 +0300
+++ ../ngx_postgres-8aa7359/config 2015-05-26 20:53:10.331122000 +0300
@@ -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

View File

@ -0,0 +1,42 @@
--- ../drizzle-nginx-module-3504fc6/config.orig 2020-01-22 18:04:58.000000000 -0500
+++ ../drizzle-nginx-module-3504fc6/config 2020-04-24 06:23:01.264872000 -0400
@@ -34,12 +34,12 @@
if [ $ngx_found = no ]; then
# FreeBSD, OpenBSD
- ngx_feature="libdrizzle library in /usr/local/"
- ngx_feature_path="/usr/local/include/libdrizzle-1.0"
+ ngx_feature="libdrizzle library in %%PREFIX%%"
+ ngx_feature_path="%%PREFIX%%/include/libdrizzle"
if [ $NGX_RPATH = YES ]; then
- ngx_feature_libs="-R/usr/local/lib -L/usr/local/lib -ldrizzle"
+ ngx_feature_libs="-R%%PREFIX%%/lib -L%%PREFIX%%/lib -ldrizzle"
else
- ngx_feature_libs="-L/usr/local/lib -ldrizzle"
+ ngx_feature_libs="-L%%PREFIX%%/lib -ldrizzle"
fi
. auto/feature
fi
@@ -80,8 +80,19 @@
fi
ngx_addon_name=ngx_http_drizzle_module
-HTTP_MODULES="$HTTP_MODULES ngx_http_drizzle_module"
-NGX_ADDON_SRCS="$NGX_ADDON_SRCS $ngx_addon_dir/src/ngx_http_drizzle_module.c $ngx_addon_dir/src/ngx_http_drizzle_handler.c $ngx_addon_dir/src/ngx_http_drizzle_processor.c $ngx_addon_dir/src/ngx_http_drizzle_upstream.c $ngx_addon_dir/src/ngx_http_drizzle_util.c $ngx_addon_dir/src/ngx_http_drizzle_output.c $ngx_addon_dir/src/ngx_http_drizzle_keepalive.c $ngx_addon_dir/src/ngx_http_drizzle_quoting.c $ngx_addon_dir/src/ngx_http_drizzle_checker.c"
-NGX_ADDON_DEPS="$NGX_ADDON_DEPS $ngx_addon_dir/src/ddebug.h $ngx_addon_dir/src/ngx_http_drizzle_module.h $ngx_addon_dir/src/ngx_http_drizzle_handler.h $ngx_addon_dir/src/ngx_http_drizzle_processor.h $ngx_addon_dir/src/ngx_http_drizzle_upstream.h $ngx_addon_dir/src/ngx_http_drizzle_util.h $ngx_addon_dir/src/ngx_http_drizzle_output.h $ngx_addon_dir/src/resty_dbd_stream.h $ngx_addon_dir/src/ngx_http_drizzle_keepalive.h $ngx_addon_dir/src/ngx_http_drizzle_quoting.h $ngx_addon_dir/src/ngx_http_drizzle_checker.h"
+if test -n "$ngx_module_link"; then
+ ngx_module_type=HTTP
+ ngx_module_name=$ngx_addon_name
+ ngx_module_srcs="$ngx_addon_dir/src/ngx_http_drizzle_module.c $ngx_addon_dir/src/ngx_http_drizzle_handler.c $ngx_addon_dir/src/ngx_http_drizzle_processor.c $ngx_addon_dir/src/ngx_http_drizzle_upstream.c $ngx_addon_dir/src/ngx_http_drizzle_util.c $ngx_addon_dir/src/ngx_http_drizzle_output.c $ngx_addon_dir/src/ngx_http_drizzle_keepalive.c $ngx_addon_dir/src/ngx_http_drizzle_quoting.c $ngx_addon_dir/src/ngx_http_drizzle_checker.c"
+ ngx_module_incs="$ngx_addon_dir/src/ddebug.h $ngx_addon_dir/src/ngx_http_drizzle_module.h $ngx_addon_dir/src/ngx_http_drizzle_handler.h $ngx_addon_dir/src/ngx_http_drizzle_processor.h $ngx_addon_dir/src/ngx_http_drizzle_upstream.h $ngx_addon_dir/src/ngx_http_drizzle_util.h $ngx_addon_dir/src/ngx_http_drizzle_output.h $ngx_addon_dir/src/resty_dbd_stream.h $ngx_addon_dir/src/ngx_http_drizzle_keepalive.h $ngx_addon_dir/src/ngx_http_drizzle_quoting.h $ngx_addon_dir/src/ngx_http_drizzle_checker.h"
+ ngx_module_deps=
+ ngx_module_libs="-L%%PREFIX%%/lib -ldrizzle"
+
+ . auto/module
+else
+ HTTP_MODULES="$HTTP_MODULES ngx_http_drizzle_module"
+ NGX_ADDON_SRCS="$NGX_ADDON_SRCS $ngx_addon_dir/src/ngx_http_drizzle_module.c $ngx_addon_dir/src/ngx_http_drizzle_handler.c $ngx_addon_dir/src/ngx_http_drizzle_processor.c $ngx_addon_dir/src/ngx_http_drizzle_upstream.c $ngx_addon_dir/src/ngx_http_drizzle_util.c $ngx_addon_dir/src/ngx_http_drizzle_output.c $ngx_addon_dir/src/ngx_http_drizzle_keepalive.c $ngx_addon_dir/src/ngx_http_drizzle_quoting.c $ngx_addon_dir/src/ngx_http_drizzle_checker.c"
+ NGX_ADDON_DEPS="$NGX_ADDON_DEPS $ngx_addon_dir/src/ddebug.h $ngx_addon_dir/src/ngx_http_drizzle_module.h $ngx_addon_dir/src/ngx_http_drizzle_handler.h $ngx_addon_dir/src/ngx_http_drizzle_processor.h $ngx_addon_dir/src/ngx_http_drizzle_upstream.h $ngx_addon_dir/src/ngx_http_drizzle_util.h $ngx_addon_dir/src/ngx_http_drizzle_output.h $ngx_addon_dir/src/resty_dbd_stream.h $ngx_addon_dir/src/ngx_http_drizzle_keepalive.h $ngx_addon_dir/src/ngx_http_drizzle_quoting.h $ngx_addon_dir/src/ngx_http_drizzle_checker.h"
+fi
have=NGX_DRIZZLE_MODULE . auto/have

View File

@ -0,0 +1,33 @@
--- ../passenger-6.0.19/build/nginx.rb.orig 2013-10-26 18:00:00.000000000 -0400
+++ ../passenger-6.0.19/build/nginx.rb 2016-05-09 18:21:22.426777000 -0400
@@ -33,13 +33,12 @@
desc "Build Nginx support files"
task :nginx => [
:nginx_without_native_support,
- NATIVE_SUPPORT_TARGET
+ LIBBOOST_OXT,
].compact
desc "Build Nginx support files, including objects suitable for dynamic linking against Nginx"
task 'nginx:as_dynamic_module' => [
:nginx_dynamic_without_native_support,
- NATIVE_SUPPORT_TARGET
].compact
# Workaround for https://github.com/jimweirich/rake/issues/274
@@ -47,7 +46,6 @@
task :nginx_without_native_support => [
auto_generated_sources,
- AGENT_TARGET,
COMMON_LIBRARY.only(*NGINX_LIBS_SELECTOR).link_objects
].flatten
@@ -55,7 +53,6 @@
# it also creates a namespace:clean task to clean up the output_dir
task :nginx_dynamic_without_native_support => [
auto_generated_sources,
- AGENT_TARGET,
define_libboost_oxt_task("nginx", NGINX_DYNAMIC_OUTPUT_DIR + "libboost_oxt", "-fPIC"),
COMMON_LIBRARY.only(*NGINX_LIBS_SELECTOR).
set_namespace("nginx").set_output_dir(NGINX_DYNAMIC_OUTPUT_DIR + "module_libpassenger_common").define_tasks("-fPIC").

View File

@ -0,0 +1,11 @@
--- ../passenger-6.0.19/src/ruby_supportlib/phusion_passenger/nginx/config_options.rb.orig 2018-12-03 12:23:06.980728000 -0500
+++ ../passenger-6.0.19/src/ruby_supportlib/phusion_passenger/nginx/config_options.rb 2018-12-03 12:23:32.978924000 -0500
@@ -204,7 +204,7 @@
:name => 'passenger_disable_anonymous_telemetry',
:scope => :global,
:type => :flag,
- :default => false,
+ :default => true,
:context => [:main],
:struct => 'NGX_HTTP_MAIN_CONF_OFFSET'
},

View File

@ -0,0 +1,15 @@
--- ../rds-csv-nginx-module-0.09/config.orig 2020-04-25 11:37:21.896900000 -0400
+++ ../rds-csv-nginx-module-0.09/config 2020-04-25 11:39:06.371176000 -0400
@@ -1,5 +1,9 @@
ngx_addon_name=ngx_http_rds_csv_filter_module
-HTTP_AUX_FILTER_MODULES="$HTTP_AUX_FILTER_MODULES ngx_http_rds_csv_filter_module"
-NGX_ADDON_SRCS="$NGX_ADDON_SRCS $ngx_addon_dir/src/ngx_http_rds_csv_filter_module.c $ngx_addon_dir/src/ngx_http_rds_csv_processor.c $ngx_addon_dir/src/ngx_http_rds_csv_util.c $ngx_addon_dir/src/ngx_http_rds_csv_output.c"
-NGX_ADDON_DEPS="$NGX_ADDON_DEPS $ngx_addon_dir/src/ddebug.h $ngx_addon_dir/src/resty_dbd_stream.h $ngx_addon_dir/src/ngx_http_rds_csv_filter_module.h $ngx_addon_dir/src/ngx_http_rds_csv_processor.h $ngx_addon_dir/src/ngx_http_rds_csv_util.h $ngx_addon_dir/src/ngx_http_rds.h $ngx_addon_dir/src/resty_dbd_stream.h $ngx_addon_dir/src/ngx_http_rds_csv_output.h $ngx_addon_dir/src/ngx_http_rds_utils.h"
+ngx_module_name="$ngx_addon_name"
+ngx_module_type=HTTP_FILTER
+
+ngx_module_srcs="$ngx_addon_dir/src/ngx_http_rds_csv_filter_module.c $ngx_addon_dir/src/ngx_http_rds_csv_processor.c $ngx_addon_dir/src/ngx_http_rds_csv_util.c $ngx_addon_dir/src/ngx_http_rds_csv_output.c"
+ngx_module_deps="$ngx_addon_dir/src/ddebug.h $ngx_addon_dir/src/resty_dbd_stream.h $ngx_addon_dir/src/ngx_http_rds_csv_filter_module.h $ngx_addon_dir/src/ngx_http_rds_csv_processor.h $ngx_addon_dir/src/ngx_http_rds_csv_util.h $ngx_addon_dir/src/ngx_http_rds.h $ngx_addon_dir/src/resty_dbd_stream.h $ngx_addon_dir/src/ngx_http_rds_csv_output.h $ngx_addon_dir/src/ngx_http_rds_utils.h"
+
+. auto/module

View File

@ -0,0 +1,15 @@
--- ../rds-json-nginx-module-0.15/config.orig 2020-04-25 11:39:29.003855000 -0400
+++ ../rds-json-nginx-module-0.15/config 2020-04-25 11:40:18.345148000 -0400
@@ -1,5 +1,9 @@
ngx_addon_name=ngx_http_rds_json_filter_module
-HTTP_AUX_FILTER_MODULES="$HTTP_AUX_FILTER_MODULES ngx_http_rds_json_filter_module"
-NGX_ADDON_SRCS="$NGX_ADDON_SRCS $ngx_addon_dir/src/ngx_http_rds_json_filter_module.c $ngx_addon_dir/src/ngx_http_rds_json_processor.c $ngx_addon_dir/src/ngx_http_rds_json_util.c $ngx_addon_dir/src/ngx_http_rds_json_output.c $ngx_addon_dir/src/ngx_http_rds_json_handler.c"
-NGX_ADDON_DEPS="$NGX_ADDON_DEPS $ngx_addon_dir/src/ddebug.h $ngx_addon_dir/src/resty_dbd_stream.h $ngx_addon_dir/src/ngx_http_rds_json_filter_module.h $ngx_addon_dir/src/ngx_http_rds_json_processor.h $ngx_addon_dir/src/ngx_http_rds_json_util.h $ngx_addon_dir/src/ngx_http_rds.h $ngx_addon_dir/src/resty_dbd_stream.h $ngx_addon_dir/src/ngx_http_rds_json_output.h $ngx_addon_dir/src/ngx_http_rds_utils.h $ngx_addon_dir/src/ngx_http_rds_json_handler.h"
+ngx_module_name="$ngx_addon_name"
+ngx_module_type=HTTP_FILTER
+
+ngx_module_srcs="$ngx_addon_dir/src/ngx_http_rds_json_filter_module.c $ngx_addon_dir/src/ngx_http_rds_json_processor.c $ngx_addon_dir/src/ngx_http_rds_json_util.c $ngx_addon_dir/src/ngx_http_rds_json_output.c $ngx_addon_dir/src/ngx_http_rds_json_handler.c"
+ngx_module_deps="$ngx_addon_dir/src/ddebug.h $ngx_addon_dir/src/resty_dbd_stream.h $ngx_addon_dir/src/ngx_http_rds_json_filter_module.h $ngx_addon_dir/src/ngx_http_rds_json_processor.h $ngx_addon_dir/src/ngx_http_rds_json_util.h $ngx_addon_dir/src/ngx_http_rds.h $ngx_addon_dir/src/resty_dbd_stream.h $ngx_addon_dir/src/ngx_http_rds_json_output.h $ngx_addon_dir/src/ngx_http_rds_utils.h $ngx_addon_dir/src/ngx_http_rds_json_handler.h"
+
+. auto/module

View File

@ -0,0 +1,14 @@
--- ../spnego-http-auth-nginx-module-3575542/config.orig 2020-08-27 07:59:28.423636000 -0400
+++ ../spnego-http-auth-nginx-module-3575542/config 2020-08-27 08:01:42.152121000 -0400
@@ -1,8 +1,9 @@
ngx_addon_name=ngx_http_auth_spnego_module
-ngx_feature_libs="-lgssapi_krb5 -lkrb5 -lcom_err"
+ngx_feature_libs="-L%%GSSAPILIBDIR%% %%GSSAPILIBS%%"
+ngx_module_incs="%%GSSAPIINCDIR%%"
if uname -o | grep -q FreeBSD; then
- ngx_feature_libs="$ngx_feature_libs -lgssapi"
+ ngx_feature_libs="$ngx_feature_libs"
fi
if uname -a | grep -q NetBSD; then

View File

@ -0,0 +1,44 @@
--- src/http/modules/ngx_http_upstream_hash_module.c.orig 2016-02-24 14:53:24 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;
@@ -235,6 +238,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)
@@ -535,6 +547,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)

View File

@ -0,0 +1,28 @@
--- src/http/modules/ngx_http_upstream_ip_hash_module.c.orig 2016-02-24 14:53:24 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 */
@@ -205,6 +208,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)

View File

@ -0,0 +1,46 @@
--- src/http/modules/ngx_http_upstream_least_conn_module.c.orig 2016-02-24 14:53:24 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);
@@ -148,6 +151,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)
@@ -199,6 +212,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;
}

View File

@ -0,0 +1,101 @@
--- src/http/ngx_http_upstream_round_robin.c.orig 2016-02-24 14:53:24 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)->number \
+ ((p)->next ? (p)->next->number : 0))
@@ -96,7 +99,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++;
@@ -159,7 +169,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++;
@@ -225,6 +243,9 @@ ngx_http_upstream_init_round_robin(ngx_c
peer[i].current_weight = 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;
}
@@ -339,6 +360,9 @@ ngx_http_upstream_create_round_robin_pee
peer[0].current_weight = 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 {
@@ -381,6 +405,9 @@ ngx_http_upstream_create_round_robin_pee
peer[i].current_weight = 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;
}
@@ -441,6 +468,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 {
@@ -542,6 +575,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)

View File

@ -0,0 +1,14 @@
--- src/http/ngx_http_upstream_round_robin.h.orig 2016-10-11 11:03:02.000000000 -0400
+++ src/http/ngx_http_upstream_round_robin.h 2016-10-11 19:56:33.262307000 -0400
@@ -35,6 +35,11 @@
ngx_uint_t max_fails;
time_t fail_timeout;
+
+#if (NGX_HTTP_UPSTREAM_CHECK)
+ ngx_uint_t check_index;
+#endif
+
ngx_msec_t slow_start;
ngx_msec_t start_time;

View File

@ -0,0 +1,456 @@
--- src/http/modules/ngx_http_slice_filter_module.c.orig 2019-04-23 13:12:58 UTC
+++ src/http/modules/ngx_http_slice_filter_module.c
@@ -2,6 +2,10 @@
/*
* Copyright (C) Roman Arutyunyan
* Copyright (C) Nginx, Inc.
+ * Copyright (C) Carey Gister
+ * Copyright (C) Metapeer, Inc.
+ *
+ * Retrieve slices with an optional look-a-head of N slices where N is a float value.
*/
@@ -9,13 +13,25 @@
#include <ngx_core.h>
#include <ngx_http.h>
+/*
+ * Location Configuration -- size is size of a slice, read_a_heads is number of
+ * blocks to look a head: 0, will not limit the number of blocks. Blocks will be
+ * retrieved as quickly as GETs can be issued and returned.
+ */
typedef struct {
size_t size;
+ float read_a_heads;
} ngx_http_slice_loc_conf_t;
typedef struct {
+ size_t requested_bytes;
+ size_t received_bytes;
+ size_t skipped_first_slice;
+} ngx_http_slice_read_a_head_t;
+
+typedef struct {
off_t start;
off_t end;
ngx_str_t range;
@@ -23,6 +39,7 @@ typedef struct {
unsigned last:1;
unsigned active:1;
ngx_http_request_t *sr;
+ ngx_http_slice_read_a_head_t *read_a_head;
} ngx_http_slice_ctx_t;
@@ -46,6 +63,8 @@ static char *ngx_http_slice_merge_loc_conf(ngx_conf_t
void *child);
static ngx_int_t ngx_http_slice_add_variables(ngx_conf_t *cf);
static ngx_int_t ngx_http_slice_init(ngx_conf_t *cf);
+static char * ngx_conf_set_float_slot(ngx_conf_t *cf, ngx_command_t *cmd,
+ void *conf);
static ngx_command_t ngx_http_slice_filter_commands[] = {
@@ -57,6 +76,13 @@ static ngx_command_t ngx_http_slice_filter_commands[]
offsetof(ngx_http_slice_loc_conf_t, size),
NULL },
+ { ngx_string("slice_read_ahead"),
+ NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_TAKE1,
+ ngx_conf_set_float_slot,
+ NGX_HTTP_LOC_CONF_OFFSET,
+ offsetof(ngx_http_slice_loc_conf_t, read_a_heads),
+ NULL },
+
ngx_null_command
};
@@ -102,11 +128,11 @@ static ngx_int_t
ngx_http_slice_header_filter(ngx_http_request_t *r)
{
off_t end;
- ngx_int_t rc;
+ ngx_int_t rc, rc1;
ngx_table_elt_t *h;
ngx_http_slice_ctx_t *ctx;
ngx_http_slice_loc_conf_t *slcf;
- ngx_http_slice_content_range_t cr;
+ ngx_http_slice_content_range_t cr, cr1;
ctx = ngx_http_get_module_ctx(r, ngx_http_slice_filter_module);
if (ctx == NULL) {
@@ -187,6 +213,23 @@ ngx_http_slice_header_filter(ngx_http_request_t *r)
rc = ngx_http_next_header_filter(r);
if (r != r->main) {
+ if (ctx->read_a_head != NULL) {
+ ngx_log_debug5(NGX_LOG_DEBUG_HTTP, r->connection->log, 0,
+ "http slice header (subrequest) requested_bytes: %uz, size: %uz, range: %O/%O, end: %O",
+ ctx->read_a_head->requested_bytes, slcf->size, cr.start,
+ cr.end, end);
+
+ if (end != cr.start) {
+ ctx->read_a_head->requested_bytes +=
+ ngx_min(slcf->size,
+ (size_t) end - (size_t) cr.start);
+ }
+
+ ngx_log_debug2(NGX_LOG_DEBUG_HTTP, r->connection->log, 0,
+ "http slice header (subrequest) new requested_bytes: %uz, size: %uz",
+ ctx->read_a_head->requested_bytes, slcf->size);
+ }
+
return rc;
}
@@ -201,8 +244,68 @@ ngx_http_slice_header_filter(ngx_http_request_t *r)
ctx->end = r->headers_out.content_offset
+ r->headers_out.content_length_n;
+ /* Update requested bytes for the new chunk. */
+ if (ctx->read_a_head != NULL) {
+ ngx_log_debug4(NGX_LOG_DEBUG_HTTP, r->connection->log, 0,
+ "http slice header (main request, partial) requested_bytes: %uz, size: %uz, start/end (%O/%O)",
+ ctx->read_a_head->requested_bytes, slcf->size,
+ ctx->start, ctx->end);
+
+ if (ctx->end != ctx->start) {
+ ctx->read_a_head->requested_bytes +=
+ ngx_min(slcf->size,
+ (size_t) ctx->end - (size_t) ctx->start);
+ }
+
+ ngx_log_debug4(NGX_LOG_DEBUG_HTTP, r->connection->log, 0,
+ "http slice header (main request, partial) new requested_bytes: %uz, size: %uz, start/end (%O/%O)",
+ ctx->read_a_head->requested_bytes, slcf->size, ctx->start, ctx->end);
+
+ /* Parse the new Content-Range, which may have been set by the Range
+ filter. If the start changed, then adjust the requested_byte count
+ by the difference between the slice start and the actual start.
+ These bytes will never be received. */
+
+ rc1 = ngx_http_slice_parse_content_range(r, &cr1);
+ ngx_log_debug(NGX_LOG_DEBUG_HTTP, r->connection->log, 0,
+ "http slice header (main request, partial): rc1: %d",
+ rc1);
+
+ if (rc1 == NGX_OK) {
+ ngx_log_debug2(NGX_LOG_DEBUG_HTTP, r->connection->log, 0,
+ "http slice header (main request, partial new content range) cr1.start: %uz, cr1.end: %uz",
+ cr1.start, cr1.end);
+
+ if (cr1.start != cr.start) {
+ ctx->read_a_head->skipped_first_slice =
+ cr1.start - (slcf->size * (cr1.start / slcf->size));
+
+ ngx_log_debug3(NGX_LOG_DEBUG_HTTP, r->connection->log, 0,
+ "http slice header (main request, partial) new cr.start: %uz, initial start: %uz, skipped first slice: %uz",
+ cr1.start, cr.start,
+ ctx->read_a_head->skipped_first_slice);
+ }
+ }
+ }
} else {
ctx->end = cr.complete_length;
+
+ /* Update the requested bytes for the new chunk. */
+ if (ctx->read_a_head != NULL) {
+ ngx_log_debug4(NGX_LOG_DEBUG_HTTP, r->connection->log, 0,
+ "http slice header (main request, full) requested_bytes: %uz, size: %uz, start/end (%O/%O)",
+ ctx->read_a_head->requested_bytes, slcf->size, ctx->start, ctx->end);
+
+ if (ctx->end != ctx->start) {
+ ctx->read_a_head->requested_bytes +=
+ ngx_min(slcf->size,
+ (size_t) ctx->end - (size_t) ctx->start);
+ }
+
+ ngx_log_debug4(NGX_LOG_DEBUG_HTTP, r->connection->log, 0,
+ "http slice header (main request, full) new requested_bytes: %uz, size: %uz, start/end (%O/%O)",
+ ctx->read_a_head->requested_bytes, slcf->size, ctx->start, ctx->end);
+ }
}
return rc;
@@ -216,14 +319,31 @@ ngx_http_slice_body_filter(ngx_http_request_t *r, ngx_
ngx_chain_t *cl;
ngx_http_slice_ctx_t *ctx;
ngx_http_slice_loc_conf_t *slcf;
+ size_t received, read_a_head_window, read_a_head_size;
ctx = ngx_http_get_module_ctx(r, ngx_http_slice_filter_module);
- if (ctx == NULL || r != r->main) {
+ if (ctx == NULL) {
return ngx_http_next_body_filter(r, in);
}
+ if (r != r->main) {
+ if (ctx->read_a_head != NULL) {
+ received = 0;
+ for (cl = in; cl; cl = cl->next) {
+ received = received + ngx_buf_size(cl->buf);
+ }
+
+ ctx->read_a_head->received_bytes += received;
+ }
+
+ return ngx_http_next_body_filter(r, in);
+ }
+
+ /* For the main request */
+ received = 0;
for (cl = in; cl; cl = cl->next) {
+ received = received + ngx_buf_size(cl->buf);
if (cl->buf->last_buf) {
cl->buf->last_buf = 0;
cl->buf->last_in_chain = 1;
@@ -232,6 +352,10 @@ ngx_http_slice_body_filter(ngx_http_request_t *r, ngx_
}
}
+ if (ctx->read_a_head != NULL) {
+ ctx->read_a_head->received_bytes += received;
+ }
+
rc = ngx_http_next_body_filter(r, in);
if (rc == NGX_ERROR || !ctx->last) {
@@ -258,6 +382,20 @@ ngx_http_slice_body_filter(ngx_http_request_t *r, ngx_
return rc;
}
+ slcf = ngx_http_get_module_loc_conf(r, ngx_http_slice_filter_module);
+
+ if (ctx->read_a_head != NULL) {
+ read_a_head_size = (size_t) (slcf->size * slcf->read_a_heads);
+ read_a_head_window = r->connection->sent + read_a_head_size;
+
+ if ((r->connection->sent != 0) &&
+ ((read_a_head_window + ctx->read_a_head->skipped_first_slice) < ctx->read_a_head->requested_bytes)) {
+ ngx_log_debug0(NGX_LOG_DEBUG_HTTP, r->connection->log, 0,
+ "http slice body filter defer subrequest: returning NGX_AGAIN");
+ return NGX_AGAIN;
+ }
+ }
+
if (ngx_http_subrequest(r, &r->uri, &r->args, &ctx->sr, NULL,
NGX_HTTP_SUBREQUEST_CLONE)
!= NGX_OK)
@@ -267,8 +405,6 @@ ngx_http_slice_body_filter(ngx_http_request_t *r, ngx_
ngx_http_set_ctx(ctx->sr, ctx, ngx_http_slice_filter_module);
- slcf = ngx_http_get_module_loc_conf(r, ngx_http_slice_filter_module);
-
ctx->range.len = ngx_sprintf(ctx->range.data, "bytes=%O-%O", ctx->start,
ctx->start + (off_t) slcf->size - 1)
- ctx->range.data;
@@ -287,6 +423,7 @@ ngx_http_slice_parse_content_range(ngx_http_request_t
ngx_http_slice_content_range_t *cr)
{
off_t start, end, complete_length, cutoff, cutlim;
+ ssize_t len;
u_char *p;
ngx_table_elt_t *h;
@@ -300,6 +437,7 @@ ngx_http_slice_parse_content_range(ngx_http_request_t
}
p = h->value.data + 6;
+ len = h->value.len - 6;
cutoff = NGX_MAX_OFF_T_VALUE / 10;
cutlim = NGX_MAX_OFF_T_VALUE % 10;
@@ -308,56 +446,62 @@ ngx_http_slice_parse_content_range(ngx_http_request_t
end = 0;
complete_length = 0;
- while (*p == ' ') { p++; }
+ while ((*p == ' ') && (len != 0)) { p++; len--; }
- if (*p < '0' || *p > '9') {
+ if ((len == 0) || (*p < '0' || *p > '9')) {
return NGX_ERROR;
}
- while (*p >= '0' && *p <= '9') {
+ while ((len != 0) && (*p >= '0' && *p <= '9')) {
if (start >= cutoff && (start > cutoff || *p - '0' > cutlim)) {
return NGX_ERROR;
}
start = start * 10 + (*p++ - '0');
+ len--;
}
- while (*p == ' ') { p++; }
+ while ((len != 0) && (*p == ' ')) { p++; len--; }
- if (*p++ != '-') {
+ if ((len == 0) || (*p++ != '-')) {
return NGX_ERROR;
}
- while (*p == ' ') { p++; }
+ len--;
- if (*p < '0' || *p > '9') {
+ while ((len != 0) && (*p == ' ')) { p++; len--; }
+
+ if ((len == 0) || (*p < '0' || *p > '9')) {
return NGX_ERROR;
}
- while (*p >= '0' && *p <= '9') {
+ while ((len != 0) && (*p >= '0' && *p <= '9')) {
if (end >= cutoff && (end > cutoff || *p - '0' > cutlim)) {
return NGX_ERROR;
}
end = end * 10 + (*p++ - '0');
+ len--;
}
end++;
- while (*p == ' ') { p++; }
+ while ((len != 0) && (*p == ' ')) { p++; len--; }
- if (*p++ != '/') {
+ if ((len == 0) || (*p++ != '/')) {
return NGX_ERROR;
}
- while (*p == ' ') { p++; }
+ len--;
- if (*p != '*') {
+ while ((len != 0) && (*p == ' ')) { p++; len--; }
+
+ if ((len != 0) && (*p != '*')) {
if (*p < '0' || *p > '9') {
return NGX_ERROR;
}
- while (*p >= '0' && *p <= '9') {
+ while ((len != 0) && (*p >= '0' && *p <= '9')) {
if (complete_length >= cutoff
&& (complete_length > cutoff || *p - '0' > cutlim))
{
@@ -365,16 +509,18 @@ ngx_http_slice_parse_content_range(ngx_http_request_t
}
complete_length = complete_length * 10 + (*p++ - '0');
+ len--;
}
} else {
complete_length = -1;
p++;
+ len--;
}
- while (*p == ' ') { p++; }
+ while ((len != 0) && (*p == ' ')) { p++; len--; }
- if (*p != '\0') {
+ if (len != 0) {
return NGX_ERROR;
}
@@ -390,9 +536,10 @@ static ngx_int_t
ngx_http_slice_range_variable(ngx_http_request_t *r,
ngx_http_variable_value_t *v, uintptr_t data)
{
- u_char *p;
- ngx_http_slice_ctx_t *ctx;
- ngx_http_slice_loc_conf_t *slcf;
+ u_char *p;
+ ngx_http_slice_ctx_t *ctx;
+ ngx_http_slice_loc_conf_t *slcf;
+ ngx_http_slice_read_a_head_t *read_a_head;
ctx = ngx_http_get_module_ctx(r, ngx_http_slice_filter_module);
@@ -414,6 +561,15 @@ ngx_http_slice_range_variable(ngx_http_request_t *r,
return NGX_ERROR;
}
+ if (slcf->read_a_heads != 0.0) {
+ read_a_head = ngx_pcalloc(r->pool, sizeof(ngx_http_slice_read_a_head_t));
+ if (read_a_head == NULL) {
+ return NGX_ERROR;
+ }
+
+ ctx->read_a_head = read_a_head;
+ }
+
ngx_http_set_ctx(r, ctx, ngx_http_slice_filter_module);
p = ngx_pnalloc(r->pool, sizeof("bytes=-") - 1 + 2 * NGX_OFF_T_LEN);
@@ -488,6 +644,39 @@ ngx_http_slice_get_start(ngx_http_request_t *r)
}
+static char *
+ngx_conf_set_float_slot(ngx_conf_t *cf, ngx_command_t *cmd, void *conf)
+{
+ char *p = conf;
+ float *np;
+ ngx_str_t *value;
+ ngx_conf_post_t *post;
+ ngx_int_t val;
+
+ np = (float *) (p + cmd->offset);
+
+ if (*np != (float) NGX_CONF_UNSET) {
+ return "is duplicate";
+ }
+
+ value = cf->args->elts;
+ val = ngx_atofp(value[1].data, value[1].len, 3);
+
+ *np = (float) val / 1000.0;
+
+ if (*np == (float) NGX_ERROR) {
+ return "invalid number";
+ }
+
+ if (cmd->post) {
+ post = cmd->post;
+ return post->post_handler(cf, post, np);
+ }
+
+ return NGX_CONF_OK;
+}
+
+
static void *
ngx_http_slice_create_loc_conf(ngx_conf_t *cf)
{
@@ -499,6 +688,7 @@ ngx_http_slice_create_loc_conf(ngx_conf_t *cf)
}
slcf->size = NGX_CONF_UNSET_SIZE;
+ slcf->read_a_heads = (float) NGX_CONF_UNSET;
return slcf;
}
@@ -511,6 +701,13 @@ ngx_http_slice_merge_loc_conf(ngx_conf_t *cf, void *pa
ngx_http_slice_loc_conf_t *conf = child;
ngx_conf_merge_size_value(conf->size, prev->size, 0);
+ ngx_conf_merge_value(conf->read_a_heads, prev->read_a_heads, 0.0);
+
+ if (conf->read_a_heads < 0.0) {
+ ngx_conf_log_error(NGX_LOG_EMERG, cf, 0, "read a head must be >= 0");
+ return NGX_CONF_ERROR;
+ }
+
return NGX_CONF_OK;
}

View File

@ -0,0 +1,15 @@
--- ../xss-nginx-module-0.06/config.orig 2020-04-24 17:13:57.596040000 -0400
+++ ../xss-nginx-module-0.06/config 2020-04-24 17:18:16.438437000 -0400
@@ -1,5 +1,9 @@
ngx_addon_name=ngx_http_xss_filter_module
-HTTP_AUX_FILTER_MODULES="$HTTP_AUX_FILTER_MODULES ngx_http_xss_filter_module"
-NGX_ADDON_SRCS="$NGX_ADDON_SRCS $ngx_addon_dir/src/ngx_http_xss_filter_module.c $ngx_addon_dir/src/ngx_http_xss_util.c"
-NGX_ADDON_DEPS="$NGX_ADDON_DEPS $ngx_addon_dir/src/ddebug.h $ngx_addon_dir/src/ngx_http_xss_filter_module.h $ngx_addon_dir/src/ngx_http_xss_util.h"
+ngx_module_name="$ngx_addon_name"
+ngx_module_type=HTTP_FILTER
+
+ngx_module_srcs="$ngx_addon_dir/src/ngx_http_xss_filter_module.c $ngx_addon_dir/src/ngx_http_xss_util.c"
+ngx_module_deps="$ngx_addon_dir/src/ddebug.h $ngx_addon_dir/src/ngx_http_xss_filter_module.h $ngx_addon_dir/src/ngx_http_xss_util.h"
+
+. auto/module

View File

@ -0,0 +1,158 @@
#!/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_reload_quiet (bool): Set to "NO" by default.
# Set it to yes to suppress info output when testng config.
# 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.
# nginx_http_accept_enable (bool): Set to "NO" by default.
# Set to yes to check for accf_http kernel module
# on start-up and load if not loaded.
# nginx_sig_stop (str): Default to "TERM"
. /etc/rc.subr
name="nginx"
rcvar=nginx_enable
start_precmd="nginx_prestart"
stop_precmd="nginx_prestop"
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%%"
[ -z "$nginx_http_accept_enable" ] && nginx_http_accept_enable="NO"
[ -z "$nginx_reload_quiet" ] && nginx_reload_quiet="NO"
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
if checkyesno nginx_reload_quiet; then
eval ${command} ${nginx_flags} -t -q
else
echo "Performing sanity check on nginx configuration:"
eval ${command} ${nginx_flags} -t
fi
}
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_prestart()
{
if checkyesno nginx_http_accept_enable
then
required_modules="$required_modules accf_http accf_data"
fi
nginx_checkconfig
if checkyesno nginxlimits_enable
then
eval `/usr/bin/limits ${nginxlimits_args}` 2>/dev/null
else
return 0
fi
}
nginx_prestop()
{
sig_stop="${nginx_sig_stop:-TERM}"
}
run_rc_command "$1"

View File

@ -0,0 +1,47 @@
--- conf/nginx.conf.orig 2016-09-06 14:56:32 UTC
+++ conf/nginx.conf
@@ -2,9 +2,14 @@
#user nobody;
worker_processes 1;
-#error_log logs/error.log;
-#error_log logs/error.log notice;
-#error_log logs/error.log info;
+# This default error log path is compiled-in to make sure configuration parsing
+# errors are logged somewhere, especially during unattended boot when stderr
+# isn't normally logged anywhere. This path will be touched on every nginx
+# start regardless of error log location configured here. See
+# https://trac.nginx.org/nginx/ticket/147 for more info.
+#
+#error_log %%NGINX_ERRORLOG%%;
+#
#pid logs/nginx.pid;
@@ -33,7 +38,7 @@ http {
#gzip on;
server {
- listen 80;
+ listen %%HTTP_PORT%%;
server_name localhost;
#charset koi8-r;
@@ -41,7 +46,7 @@ http {
#access_log logs/host.access.log main;
location / {
- root html;
+ root %%PREFIX%%/www/nginx;
index index.html index.htm;
}
@@ -51,7 +56,7 @@ http {
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
- root html;
+ root %%PREFIX%%/www/nginx-dist;
}
# proxy the PHP scripts to Apache listening on 127.0.0.1:80

View File

@ -0,0 +1,25 @@
[
{ type: install
message: <<EOM
Recent version of the NGINX introduces dynamic modules support. In
FreeBSD ports tree this feature was enabled by default with the DSO
knob. Several vendor's and third-party modules have been converted
to dynamic modules. Unset the DSO knob builds an NGINX without
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
}
]