我在我的Symfony2 2.1.10安装中安装了LiipImagineBundle,并且我的nginx服务器遇到了一些配置问题。在网上,我发现this nice snippet是Symfony2应用程序的一个很好的、简单的nginx配置。我添加了几行代码。最重要的是,我希望能够禁用图像等静态文件的access.log。以下规则集可以完美地工作:
location ~* \.(?:ico|css|js|gif|jpe?g|png)$ {
expires 30d;
add_header Pragma public;
add_header Cache-Control "public, must-revalidate, proxy-revalidate";
access_log off;
}但今天我发现,需要通过app.php或app_dev.php访问LiipImagineBundle生成的图像。否则它们不会生成,nginx会记录以下错误消息:
[error] 28988#0: *733 open() "/[...].jpeg" failed (2: No such file or directory)基本上是404。文件不会生成,因为它不是通过Symfony2应用程序访问的,而是直接访问的。
我需要一个配置,允许我禁用访问日志记录,并向静态文件添加一些缓存头,但仍然通过与以前相同的路径提供它们。
对此有可能的解决方案吗?
发布于 2013-06-05 18:10:57
问题解决了。我已经创建了一个匹配机器人、app.php/app_dev.php和png|jp[e]g|gif等的正则表达式。如果没有生成镜像,服务器将根据之前是否缓存而使用201 Created和随后的200 Ok或304 Not Modified进行响应。下面是我对应的nginx配置:
location ~ ^/(app_dev|app)\.php(.*?)\.(?:ico|gif|jpe?g|png)$ {
expires 18h;
add_header Cache-Control "public, must-revalidate, proxy-revalidate";
access_log off;
# still redirect because we are using LiipImagineBundle!
include fastcgi_params;
fastcgi_pass unix:/tmp/php5-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param HTTPS off;
}
# more static files:
location ~* \.(?:css|js)$ {
expires 18h;
add_header Cache-Control "publi, must-revalidate, proxy-revalidate";
access_log off;
}
location ~ ^/(app_dev|app)\.php$ {
include fastcgi_params;
fastcgi_pass unix:/tmp/php5-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param HTTPS off;
}我希望这能帮到你。
https://stackoverflow.com/questions/16925886
复制相似问题