nginx-0.3.8-RELEASE import
*) Security: nginx now checks URI got from a backend in
"X-Accel-Redirect" header line or in SSI file for the "/../" paths
and zeroes.
*) Change: nginx now does not treat the empty user name in the
"Authorization" header line as valid one.
*) Feature: the "ssl_session_timeout" directives of the
ngx_http_ssl_module and ngx_imap_ssl_module.
*) Feature: the "auth_http_header" directive of the
ngx_imap_auth_http_module.
*) Feature: the "add_header" directive.
*) Feature: the ngx_http_realip_module.
*) Feature: the new variables to use in the "log_format" directive:
$bytes_sent, $apache_bytes_sent, $status, $time_gmt, $uri,
$request_time, $request_length, $upstream_status,
$upstream_response_time, $gzip_ratio, $uid_got, $uid_set,
$connection, $pipe, and $msec. The parameters in the "%name" form
will be canceled soon.
*) Change: now the false variable values in the "if" directive are the
empty string "" and string starting with "0".
*) Bugfix: while using proxied or FastCGI-server nginx may leave
connections and temporary files with client requests in open state.
*) Bugfix: the worker processes did not flush the buffered logs on
graceful exit.
*) Bugfix: if the request URI was changes by the "rewrite" directive
and the request was proxied in location given by regular expression,
then the incorrect request was transferred to backend; the bug had
appeared in 0.2.6.
*) Bugfix: the "expires" directive did not remove the previous
"Expires" header.
*) Bugfix: nginx may stop to accept requests if the "rtsig" method and
several worker processes were used.
*) Bugfix: the "\"" and "\'" escape symbols were incorrectly handled in
SSI commands.
*) Bugfix: if the response was ended just after the SSI command and
gzipping was used, then the response did not transferred complete or
did not transferred at all.
diff --git a/auto/cc/bcc b/auto/cc/bcc
index af108bb..83b2d60 100644
--- a/auto/cc/bcc
+++ b/auto/cc/bcc
@@ -63,5 +63,9 @@
ngx_objext="obj"
ngx_binext=".exe"
+ngx_long_start='@&&|
+ '
+ngx_long_end='|'
+
ngx_regex_dirsep='\\'
ngx_dirsep="\\"
diff --git a/auto/cc/conf b/auto/cc/conf
index 37f2d2e..82854d8 100644
--- a/auto/cc/conf
+++ b/auto/cc/conf
@@ -11,6 +11,9 @@
ngx_objext="o"
ngx_binext=
+ngx_long_start=
+ngx_long_end=
+
ngx_regex_dirsep="\/"
ngx_dirsep='/'
@@ -22,6 +25,9 @@
'
ngx_spacer=
+ngx_long_regex_cont=$ngx_regex_cont
+ngx_long_cont=$ngx_cont
+
. auto/cc/name
if test -n "$CFLAGS"; then
diff --git a/auto/cc/icc b/auto/cc/icc
index d3a151c..6af9713 100644
--- a/auto/cc/icc
+++ b/auto/cc/icc
@@ -38,6 +38,7 @@
CORE_LINK="$CORE_LINK $IPO"
CORE_LINK="$CORE_LINK -opt_report_file=$NGX_OBJS/opt_report_file"
+
case $CPU in
pentium)
# optimize for Pentium and Athlon
@@ -104,7 +105,7 @@
CFLAGS="$CFLAGS -wd1419"
case "$NGX_ICC_VER" in
- 8.* | 9.*)
+ 9.*)
# "cc" clobber ignored, warnings for Liunx's htons()
CFLAGS="$CFLAGS -wd1469"
# explicit conversion of a 64-bit integral type to a smaller
@@ -119,6 +120,15 @@
CFLAGS="$CFLAGS -wd1595"
;;
+ 8.*)
+ # "cc" clobber ignored, warnings for Liunx's htons()
+ CFLAGS="$CFLAGS -wd1469"
+
+ # STUB
+ # non-POD class type passed through ellipsis, Linux only ?
+ CFLAGS="$CFLAGS -wd1595"
+ ;;
+
*)
;;
esac
diff --git a/auto/cc/msvc b/auto/cc/msvc
index 0fa5df9..29c40c7 100644
--- a/auto/cc/msvc
+++ b/auto/cc/msvc
@@ -114,5 +114,13 @@
ngx_objext="obj"
ngx_binext=".exe"
+ngx_long_start='@<<
+ '
+ngx_long_end='<<'
+ngx_long_regex_cont=' \
+ '
+ngx_long_cont='
+ '
+
#ngx_regex_dirsep='\\'
#ngx_dirsep="\\"
diff --git a/auto/make b/auto/make
index fcc05b1..f7eca87 100644
--- a/auto/make
+++ b/auto/make
@@ -26,7 +26,9 @@
echo MAKE = wmake >> $NGX_MAKEFILE
ngx_regex_cont=' '
+ ngx_long_regex_cont=' '
ngx_cont=' '
+ ngx_long_cont=' '
ngx_tab=' '
fi
@@ -170,22 +172,22 @@
-e "s/\//$ngx_regex_dirsep/g"`
ngx_objs=`echo $ngx_all_objs $ngx_modules_obj \
- | sed -e "s/ *\([^ ][^ ]*\)/$ngx_regex_cont\1/g" \
+ | sed -e "s/ *\([^ ][^ ]*\)/$ngx_long_regex_cont\1/g" \
-e "s/\//$ngx_regex_dirsep/g"`
ngx_libs=${CORE_LIBS:+`echo $NGX_LD_OPT $CORE_LIBS \
- | sed -e "s/\//$ngx_regex_dirsep/g" -e "s/^/$ngx_regex_cont/"`}
+ | sed -e "s/\//$ngx_regex_dirsep/g" -e "s/^/$ngx_long_regex_cont/"`}
ngx_link=${CORE_LINK:+`echo $CORE_LINK \
- | sed -e "s/\//$ngx_regex_dirsep/g" -e "s/^/$ngx_regex_cont/"`}
+ | sed -e "s/\//$ngx_regex_dirsep/g" -e "s/^/$ngx_long_regex_cont/"`}
cat << END >> $NGX_MAKEFILE
$NGX_OBJS${ngx_dirsep}nginx${ngx_binext}: $ngx_deps$ngx_spacer
- \$(LINK) ${ngx_binout}$NGX_OBJS${ngx_dirsep}nginx$ngx_cont$ngx_objs$ngx_libs$ngx_link
+ \$(LINK) ${ngx_long_start}${ngx_binout}$NGX_OBJS${ngx_dirsep}nginx$ngx_long_cont$ngx_objs$ngx_libs$ngx_link
$ngx_rcc
-
+${ngx_long_end}
END
diff --git a/auto/modules b/auto/modules
index 46f356c..26b1087 100644
--- a/auto/modules
+++ b/auto/modules
@@ -139,6 +139,12 @@
HTTP_SRCS="$HTTP_SRCS $HTTP_ACCESS_SRCS"
fi
+if [ $HTTP_REALIP = YES ]; then
+ have=NGX_HTTP_REALIP . auto/have
+ HTTP_MODULES="$HTTP_MODULES $HTTP_REALIP_MODULE"
+ HTTP_SRCS="$HTTP_SRCS $HTTP_REALIP_SRCS"
+fi
+
if [ $HTTP_STATUS = YES ]; then
have=NGX_HTTP_STATUS . auto/have
HTTP_MODULES="$HTTP_MODULES $HTTP_STATUS_MODULE"
diff --git a/auto/options b/auto/options
index 2960f09..35c7ad3 100644
--- a/auto/options
+++ b/auto/options
@@ -50,6 +50,7 @@
HTTP_SSL=NO
HTTP_SSI=YES
HTTP_POSTPONE=NO
+HTTP_REALIP=NO
HTTP_ACCESS=YES
HTTP_AUTH_BASIC=YES
HTTP_USERID=YES
@@ -125,6 +126,7 @@
--http-fastcgi-temp-path=*) NGX_HTTP_FASTCGI_TEMP_PATH="$value" ;;
--with-http_ssl_module) HTTP_SSL=YES ;;
+ --with-http_realip_module) HTTP_REALIP=YES ;;
--without-http_charset_module) HTTP_CHARSET=NO ;;
--without-http_gzip_module) HTTP_GZIP=NO ;;
--without-http_ssi_module) HTTP_SSI=NO ;;
diff --git a/auto/sources b/auto/sources
index c4aec70..8aa596c 100644
--- a/auto/sources
+++ b/auto/sources
@@ -310,6 +310,10 @@
HTTP_USERID_SRCS=src/http/modules/ngx_http_userid_filter_module.c
+HTTP_REALIP_MODULE=ngx_http_realip_module
+HTTP_REALIP_SRCS=src/http/modules/ngx_http_realip_module.c
+
+
HTTP_ACCESS_MODULE=ngx_http_access_module
HTTP_ACCESS_SRCS=src/http/modules/ngx_http_access_module.c