[Bug] X-Accel-Redirect
rovervr
nginx-forum at nginx.us
Thu Sep 9 22:29:04 MSD 2010
[quote="Maxim Dounin"]
This patch is wrong, it breaks access to normal files with '%'.
[/quote]
This code fixes the double encoding issue while serving static files
without X-Accel-Redirect as stated by Maxim
[code]
--- /tmp/nginx-0.8.50orig/src/http/modules/ngx_http_static_module.c
2010-05-24 14:35:10.000000000 +0200
+++ ngx_http_static_module.c 2010-09-09 20:23:29.000000000 +0200
@@ -47,7 +47,7 @@
static ngx_int_t
ngx_http_static_handler(ngx_http_request_t *r)
{
- u_char *last, *location;
+ u_char *last, *location, *src, *dst;
size_t root, len;
ngx_str_t path;
ngx_int_t rc;
@@ -83,6 +83,30 @@
ngx_log_debug1(NGX_LOG_DEBUG_HTTP, log, 0,
"http filename: \"%s\"", path.data);
+ /*
+ * X-Accel-Redirect Patch
+ * If the path contains a % it probably must be decoded
+ */
+
+ if( strstr( path.data, "%" ) != NULL &&
+ r->quoted_uri == 0)
+ {
+ ngx_str_t *uri = &path;
+
+ dst = uri->data;
+ src = uri->data;
+
+ ngx_unescape_uri( &dst, &src, uri->len, NGX_UNESCAPE_URI );
+
+ len = uri->len - ( src - dst ) + 1;
+ if ( len )
+ {
+ dst = ngx_copy( dst, src, len);
+ }
+ uri->len = dst - uri->data;
+ }
+
+
clcf = ngx_http_get_module_loc_conf(r, ngx_http_core_module);
ngx_memzero(&of, sizeof(ngx_open_file_info_t));
[/code]
Posted at Nginx Forum: http://forum.nginx.org/read.php?2,128346,128876#msg-128876
More information about the nginx
mailing list