Opened 8 months ago

Closed 8 months ago

#1729 closed defect (invalid)

If-Modified-Since won't trigger 304 unless server send Last-Modified

Reported by: ayghor@… Owned by:
Priority: minor Milestone:
Component: nginx-core Version: 1.14.x
Keywords: cache, 304, If-Modified-Since, Last-Modified Cc:
uname -a: Linux preview-webserver-i-0133ab3a1c12cf7d2 4.15.0-1029-aws #30-Ubuntu SMP Wed Nov 21 23:58:13 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux
nginx -V: nginx version: nginx/1.14.0 (Ubuntu) built with OpenSSL 1.1.0g 2 Nov 2017 TLS SNI support enabled configure arguments: --with-cc-opt='-g -O2 -fdebug-prefix-map=/build/nginx-FIJPpj/nginx-1.14.0=. -fstack-protector-strong -Wformat -Werror=format-security -fPIC -Wdate-time -D_FORTIFY_SOURCE=2' --with-ld-opt='-Wl,-Bsymbolic-functions -Wl,-z,relro -Wl,-z,now -fPIC' --prefix=/usr/share/nginx --conf-path=/etc/nginx/nginx.conf --http-log-path=/var/log/nginx/access.log --error-log-path=/var/log/nginx/error.log --lock-path=/var/lock/nginx.lock --pid-path=/run/nginx.pid --modules-path=/usr/lib/nginx/modules --http-client-body-temp-path=/var/lib/nginx/body --http-fastcgi-temp-path=/var/lib/nginx/fastcgi --http-proxy-temp-path=/var/lib/nginx/proxy --http-scgi-temp-path=/var/lib/nginx/scgi --http-uwsgi-temp-path=/var/lib/nginx/uwsgi --with-debug --with-pcre-jit --with-http_ssl_module --with-http_stub_status_module --with-http_realip_module --with-http_auth_request_module --with-http_v2_module --with-http_dav_module --with-http_slice_module --with-threads --with-http_addition_module --with-http_flv_module --with-http_geoip_module=dynamic --with-http_gunzip_module --with-http_gzip_static_module --with-http_image_filter_module=dynamic --with-http_mp4_module --with-http_perl_module=dynamic --with-http_random_index_module --with-http_secure_link_module --with-http_sub_module --with-http_xslt_module=dynamic --with-mail=dynamic --with-mail_ssl_module --with-stream=dynamic --with-stream_ssl_module --with-stream_ssl_preread_module --add-dynamic-module=/build/nginx-FIJPpj/nginx-1.14.0/debian/modules/http-headers-more-filter --add-dynamic-module=/build/nginx-FIJPpj/nginx-1.14.0/debian/modules/http-auth-pam --add-dynamic-module=/build/nginx-FIJPpj/nginx-1.14.0/debian/modules/http-cache-purge --add-dynamic-module=/build/nginx-FIJPpj/nginx-1.14.0/debian/modules/http-dav-ext --add-dynamic-module=/build/nginx-FIJPpj/nginx-1.14.0/debian/modules/http-ndk --add-dynamic-module=/build/nginx-FIJPpj/nginx-1.14.0/debian/modules/http-echo --add-dynamic-module=/build/nginx-FIJPpj/nginx-1.14.0/debian/modules/http-fancyindex --add-dynamic-module=/build/nginx-FIJPpj/nginx-1.14.0/debian/modules/nchan --add-dynamic-module=/build/nginx-FIJPpj/nginx-1.14.0/debian/modules/http-lua --add-dynamic-module=/build/nginx-FIJPpj/nginx-1.14.0/debian/modules/rtmp --add-dynamic-module=/build/nginx-FIJPpj/nginx-1.14.0/debian/modules/http-uploadprogress --add-dynamic-module=/build/nginx-FIJPpj/nginx-1.14.0/debian/modules/http-upstream-fair --add-dynamic-module=/build/nginx-FIJPpj/nginx-1.14.0/debian/modules/http-subs-filter

Description

I just realized that if I make a request with a If-Modified-Since that would cause a 304 but the server is set to add_header Last-Modified "";, it will trigger a 200.

I'm not sure this is intended, as the server doesn't need to tell the client when the document was last modified in order to decide between 304 or 200.

Change History (1)

comment:1 Changed 8 months ago by mdounin

  • Resolution set to invalid
  • Status changed from new to closed

That's intended. Using add_header Last-Modified ""; clears last modified time of the response, and this stops nginx from handling If-Modified-Since in requests. And this will also prevent Last-Modified header from appearing in the responses, so there will be no requests with If-Modified-Since.

Note: See TracTickets for help on using tickets.