我试图build立一个NGINX服务器,作为坐在另一台服务器上的底层PHP应用程序的caching服务器。 原则上,事情运作良好,但由于PHP应用程序的某些“不良行为”,我需要对NGINX进行一些调整,但到目前为止我还是失败了。 有这些问题的解决scheme吗?
问题1:PHP应用程序发送“Vary:Accept-Encoding”作为可caching内容的响应头,并导致NGINX针对不同的Accept-Encoding请求头保留不同的caching副本,这是正确的,但不是我想要的performance。 我的需求要求NGINX删除Accept-Encoding请求头,因为它会代理PHP应用程序,并在caching时忽略头。
我已经完成了第一部分的使用:
proxy_set_header Accept-Encoding "";
这个configuration从请求中删除标题,但是不会在caching方面忽略它。 我很清楚proxy_ignore_headers,我可以在下面的设置中使用它,但是解决scheme将忽略Vary头部中的任何头部名称,而不仅仅是Accept-Encoding
proxy_ignore_headers Vary;
有没有解决这个问题?
问题2:
PHP应用程序正试图设置可caching内容的会话cookie。 我希望NGINX忽略用于caching的Set-Cookie头,还要删除任何可caching内容的响应头Set-Cookie。
为了使NGINX根据我使用的caching忽略Set-Cookie响应头:
proxy_ignore_headers Set-Cookie;
NGINX不会忽略头,但会将Set-Cookie响应头发送给任何用户。 在NGINX上有解决scheme,我可以根据页面是否被caching来删除标题。
我试图使用if子句来检查$ sent_http_cache_controlvariables,但是似乎如果在响应可用之后语句没有重新运行,所以这样的variables在被评估的时候不会被设置。