如何使用nginx提供静态文件

时间:2013-12-24 11:00:27

标签: apache nginx rewrite plone

我从Apache切换到Nginx,使用apache皮肤文件夹中的所有静态文件(图像,css,javascript)都是由Apache直接提供的。

示例:

DocumentRoot    /zope/z_france_velo_tourisme/france-velo-tourisme/src
RewriteRule  ^/images-fvt/(.*) /fvt.commun/fvt/commun/skins/fvt_commun_images/images-fvt/$1 [L]

我读了一些关于Nginx和Plone的文档,但我没有看到。这里来自Plone.org conf的例子:https://github.com/plone/plone-org-nginx/blob/master/nginx.conf

所以,我的问题是:用Apache / Nginx提供静态文件仍然是一个好习惯,如果是的话,如何用Nginx做呢?

我尝试过这样的配置,但是没有用,我收到了404错误:

root /zope/z_france_velo_tourisme/france-velo-tourisme/src;
rewrite ^/images-fvt/(.*)$ /fvt.commun/fvt/commun/skins/fvt_commun_images/images-fvt/$1;

我也试过这个(避免root指令),但也得到了404:

rewrite ^/images-fvt/(.*)$ /zope/z_france_velo_tourisme/france-velo-tourisme/src/fvt.commun/fvt/commun/skins/fvt_commun_images/images-fvt/$1;

感谢。

2 个答案:

答案 0 :(得分:3)

让我专注于我认为你问题的核心:“用Apache / Nginx提供静态文件仍然是一个好习惯吗?”

假设您正在使用代理缓存机制,这通常是浪费的优化,只会增加配置的复杂性。

相反,首先访问您的网站设置并启用相应的http缓存。即使是最小设置也会导致静态资源与标头一起调用很长的到期时间。在正常情况下,这意味着你的zope / plone实例很少提供静态资源。

在Nginx中设置代理缓存,或者 - 如果您需要严格的性能 - 设置Varnish。或者,使用像Cloudflare这样的缓存CDN。

您花费时间实现缓存所带来的好处可能远远超过您在设置备用静态文件机制时所看到的任何好处。

答案 1 :(得分:2)

server {
    listen 433 ssl;
    server_name plone.org

    root /path/to/virtual/server/folder;
    location / {
        proxy_pass http://whatever;
    }
    location ~^ (images|css|js|anything)/ {

    }
}
如果你把资产放在正确的地方,

这样的事情应该有用。