我有如下的东西:
server { server_name my.com; location /media/ { alias /home/my/media/; expires 1h; } location / { include fastcgi_params; } }
我想添加第二个/媒体/位置块捕捉只是CSS和JS文件,并设置过期到最大。
理想情况下,我也想处理现有的/媒体/块。 即我只是想覆盖过期,但也处理主块中的任何指令。
使用嵌套位置将允许你做你想做的事情:另外,当位置匹配你的别名指令的后缀时,使用root会更有效率:
location /media/ { root /home/my; expires 1h; location ~ \.(css|js)$ { expires max; } }
如果真正的configuration没有匹配的/ media /,你可以把它改回别名。 这种方法还有一个好处,就是不要试图为每个请求匹配正则expression式,只针对那些以/ media /开头的请求。
location ~ ^/media/.+\.(css|js)$ { expires max; }
请注意,你不能同时parsing两个位置。 Nginx只会使用一个位置。 即使你重写了一个请求,它也会应用新的位置,而忽略旧的位置。