我有一个在Tomcat 7中运行的Spring Web MVC应用程序,在Tomcat前面有nginx 1.1.19。
我已经使用Spring Security启用了Cache-Control:max-age=31536000, must-revalidate
,并且标题很好地返回到浏览器。
如果我直接将应用程序运行到Tomcat,一切都按预期工作,静态资源都返回304。
通过nginx运行一些静态资源返回304,一些返回200, all 显示格式正确的Cache-Control
标头。我无法在缓存的内容中找到任何模式。
nginx confix非常简单:
location /TSAdmin {
proxy_pass http://localhost:8030;
proxy_redirect http://localhost:8030 https://10.10.5.63;
}
任何想法都会受到赞赏。
答案 0 :(得分:1)
这是一个Spring Security配置问题,这两个片段解决了这个问题:
<http>
<headers>
<cache-control disabled="true" />
</headers>
<intercept-url pattern="/css/**" access="permitAll" />
<intercept-url pattern="/frameworks/**" access="permitAll" />
<intercept-url pattern="/img/**" access="permitAll" />
<intercept-url pattern="/js/**" access="permitAll" />
<intercept-url pattern="/fonts/**" access="permitAll" />
<intercept-url pattern="/images/**" access="permitAll" />
</http>
和
<mvc:resources location="/, /css/" mapping="/css/**" cache-period="31536000" />
<mvc:resources location="/, /frameworks/" mapping="/frameworks/**" cache-period="31536000" />
<mvc:resources location="/, /img/" mapping="/img/**" cache-period="31536000" />
<mvc:resources location="/, /js/" mapping="/js/**" cache-period="31536000" />
<mvc:resources location="/, /fonts/" mapping="/fonts/**" cache-period="31536000" />
<mvc:resources location="/, /images/" mapping="/images/**" cache-period="31536000" />
为我们修复了一些事情。