【问题标题】:How to serve static file with nginx如何使用 nginx 提供静态文件
【发布时间】:2014-01-12 15:04:42
【问题描述】:

我正在从 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;

谢谢。

【问题讨论】:

  • 首先我们在谈论什么虚拟服务器? server_name localhost plone.org;?
  • Apache/Nginx 在提供静态文件方面将比您的 Web 应用程序快得多。毕竟,快速提供文件是它的工作。
  • @MohammadAbuShady 是的,这个例子是克隆部分。
  • @MikeCauser 当然可以,但是我该怎么做呢?

标签: apache nginx rewrite plone


【解决方案1】:
server {
    listen 433 ssl;
    server_name plone.org

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

    }
}

如果您将资产放在正确的位置,这样的事情应该可以工作。

【讨论】:

    【解决方案2】:

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

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

    相反,首先访问您的站点设置并打开适当的 http 缓存。即使是最低设置也会导致静态资源使用请求较长过期时间的标头提供服务。在正常情况下,这意味着您的 zope/plone 实例仅很少提供静态资源。

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

    您从花时间实施缓存中获得的好处可能远远超过您从设置替代静态文件机制中看到的任何好处。

    【讨论】:

    • 谢谢,这对我很有帮助。我会看看 Varnish 和 cloudflare。
    猜你喜欢
    • 2015-10-19
    • 1970-01-01
    • 2015-03-18
    • 2013-06-27
    • 2018-10-23
    • 1970-01-01
    • 1970-01-01
    • 2016-10-10
    • 2013-05-08
    相关资源
    最近更新 更多