Mercurial > hg > nginx-quic
view auto/module @ 7604:7aa20af4ac00
Rewrite: fixed segfault with rewritten URI and "alias".
The "alias" directive cannot be used in the same location where URI
was rewritten. This has been detected in the "rewrite ... break"
case, but not when the standalone "break" directive was used.
This change also fixes proxy_pass with URI component in a similar
case:
location /aaa/ {
rewrite ^ /xxx/yyy;
break;
proxy_pass http://localhost:8080/bbb/;
}
Previously, the "/bbb/yyy" would be sent to a backend instead of
"/xxx/yyy". And if location's prefix was longer than the rewritten
URI, a segmentation fault might occur.
author | Ruslan Ermilov <ru@nginx.com> |
---|---|
date | Mon, 16 Dec 2019 15:19:01 +0300 |
parents | 2c7a2d75938a |
children | 4b1299b1856a |
line wrap: on
line source
# Copyright (C) Ruslan Ermilov # Copyright (C) Nginx, Inc. case $ngx_module_type in HTTP_*) ngx_var=HTTP ;; *) ngx_var=$ngx_module_type ;; esac if [ "$ngx_module_link" = DYNAMIC ]; then for ngx_module in $ngx_module_name; do # extract the first name break done DYNAMIC_MODULES="$DYNAMIC_MODULES $ngx_module" eval ${ngx_module}_SRCS=\"$ngx_module_srcs\" eval ${ngx_module}_MODULES=\"$ngx_module_name\" if [ -z "$ngx_module_order" -a \ \( "$ngx_module_type" = "HTTP_FILTER" \ -o "$ngx_module_type" = "HTTP_AUX_FILTER" \) ] then eval ${ngx_module}_ORDER=\"$ngx_module_name \ ngx_http_copy_filter_module\" else eval ${ngx_module}_ORDER=\"$ngx_module_order\" fi if test -n "$ngx_module_incs"; then CORE_INCS="$CORE_INCS $ngx_module_incs" fi if test -n "$ngx_module_deps"; then NGX_ADDON_DEPS="$NGX_ADDON_DEPS $ngx_module_deps" fi libs= for lib in $ngx_module_libs do case $lib in LIBXSLT | LIBGD | GEOIP | PERL) libs="$libs \$NGX_LIB_$lib" if eval [ "\$USE_${lib}" = NO ] ; then eval USE_${lib}=DYNAMIC fi ;; PCRE | OPENSSL | ZLIB) eval USE_${lib}=YES ;; MD5 | SHA1) # obsolete ;; *) libs="$libs $lib" ;; esac done eval ${ngx_module}_LIBS=\'$libs\' elif [ "$ngx_module_link" = YES ]; then eval ${ngx_module_type}_MODULES=\"\$${ngx_module_type}_MODULES \ $ngx_module_name\" eval ${ngx_var}_SRCS=\"\$${ngx_var}_SRCS $ngx_module_srcs\" if test -n "$ngx_module_incs"; then eval ${ngx_var}_INCS=\"\$${ngx_var}_INCS $ngx_module_incs\" fi if test -n "$ngx_module_deps"; then eval ${ngx_var}_DEPS=\"\$${ngx_var}_DEPS $ngx_module_deps\" fi for lib in $ngx_module_libs do case $lib in PCRE | OPENSSL | ZLIB | LIBXSLT | LIBGD | PERL | GEOIP) eval USE_${lib}=YES ;; MD5 | SHA1) # obsolete ;; *) CORE_LIBS="$CORE_LIBS $lib" ;; esac done elif [ "$ngx_module_link" = ADDON ]; then eval ${ngx_module_type}_MODULES=\"\$${ngx_module_type}_MODULES \ $ngx_module_name\" NGX_ADDON_SRCS="$NGX_ADDON_SRCS $ngx_module_srcs" if test -n "$ngx_module_incs"; then eval ${ngx_var}_INCS=\"\$${ngx_var}_INCS $ngx_module_incs\" fi if test -n "$ngx_module_deps"; then NGX_ADDON_DEPS="$NGX_ADDON_DEPS $ngx_module_deps" fi for lib in $ngx_module_libs do case $lib in PCRE | OPENSSL | ZLIB | LIBXSLT | LIBGD | PERL | GEOIP) eval USE_${lib}=YES ;; MD5 | SHA1) # obsolete ;; *) CORE_LIBS="$CORE_LIBS $lib" ;; esac done fi