Does Nginx `if_modified_since` only work on static resources?

Sending Last-Modified headers in your app replies is a start but it seems you don't handle If-Modified-Since properly on incoming requests because your app should reply 304 Not Modified and not 200 OK. Changing the directive on nginx only impact requests served directly by nginx i.e. static ressources unless you configure it as a reverse proxy cache. In this case, you may serve stale replies regarding this header value since content will be cached for a period of time without hitting your app. Turning <X>_cache_revalidate on will use the If-Modified-Since header to revalidate cache content between nginx's cache and your app once it has expired (where <X> = proxy / fastcgi / scgi / uwsgi)