提供静态内容NGINX

cyber8200

我是NGINX的新手我对此还不了解,但我正在尝试。我很好奇使用NGINX从页面提供静态内容的最佳方法是什么。我要提供静态内容的主要原因是希望减少应用程序服务器的负载,并提高页面加载速度。


我碰到

几篇好文章可以帮助我将这些内容汇总在一起:这里这里这里这里

但是一切仍然有些清晰。


配置

文件路径 : etc/nginx/default

server {

    listen 80 default_server;
    server_name default;
    root /home/forge/site/public;

    location / {
        proxy_pass http://43.35.49.160/;
        try_files $uri $uri/ /index.php?$query_string;
    }

    # Media: images, icons, video, audio, HTC
    location ~* \.(?:jpg|jpeg|gif|png|ico|cur|gz|svg|svgz|mp4|ogg|ogv|webm|htc)$ {
        expires 1M;
        access_log off;
        add_header Cache-Control "public";
    }

    # CSS and Javascript
    location ~* \.(?:css|js)$ {
        expires 1y;
        access_log off;
        add_header Cache-Control "public";
    }
}

测试结果

保存文件后,运行service nginx reload

接下来,我尝试运行: curl -X GET -I http://45.33.69.160/index.php

我有:

HTTP/1.1 200 OK
Server: nginx/1.6.3
Content-Type: text/html; charset=UTF-8
Transfer-Encoding: chunked
Connection: keep-alive
Cache-Control: no-cache
Date: Fri, 08 May 2015 15:14:55 GMT
Set-Cookie: XSRF-TOKEN=eyJpdiI6IkhPa2kwK1wvd2kxMFV0TURzYnMwSXFnPT0iLCJ2YWx1ZSI6IkFpSFpvakNjcGp0b0RWcVViYXJcLzRHbmo3XC9qbStYc2VzYVh4ZHVwNW45UGNQMmltZEhvSys1NjhZVzZmckhzOGRBUk5IU1pGK084VDF1ZmhvVkZ4MlE9PSIsIm1hYyI6IjliMzc5NWQ4MWRiMjM1NzUxNjcyNGNmYWUzMGQyMDk3MjlkYTdhYzgxYTI0OGViODhlMTRjZTI4MWE5MDU2MGYifQ%3D%3D; expires=Fri, 08-May-2015 17:14:55 GMT; Max-Age=7200; path=/
Set-Cookie: laravel_session=eyJpdiI6Iklhb041MkVBak0rVm5JeUZ0VVwvZ3pnPT0iLCJ2YWx1ZSI6IitRUFlzQzNmSm1FZ0NQVVFtaTJ4cG1hODlDa2NjVDgzdXBcLzRcL0ZSM1ZPOTRvRGo5QjQ1REluTUM3Vjd3cFptV3dWdHJweTY3QW5QR2lwTkZMUlNqbnc9PSIsIm1hYyI6IjIxOTZkYzM5ODE0N2E4YmQzODMxZGYzMDY3NjI4ODM1YWQxNGMxNDRlZDZmMGE1M2IwZWY2OTU4ZmVjOTIyMjkifQ%3D%3D; expires=Fri, 08-May-2015 17:14:55 GMT; Max-Age=7200; path=/; httponly

然后,我试着跑 curl -X GET -I http://45.33.69.160/css/custom.css

我有 :

HTTP/1.1 200 OK
Server: nginx/1.6.3
Date: Fri, 08 May 2015 15:16:03 GMT
Content-Type: text/css
Content-Length: 2890
Last-Modified: Thu, 07 May 2015 03:02:38 GMT
Connection: keep-alive
ETag: "554ad5ce-b4a"
Accept-Ranges: bytes

为什么会看到 Cache-Control: no-cache并且我只是设置了缓存?

现在我还不清楚一切。


问题

有人可以说清楚如何:

  • 正确配置
  • 测试该配置是否可行
  • 看到缓存和不缓存之间的区别
  • 对其进行基准测试并在页面或CLI上打印出该报告

服务

Cache-Control: no-cache

就像在关于no-cache的答案中所说的那样,该链接链接到specCache-Control: no-cache应该告诉用户代理中间缓存使用哪种缓存样式(即每次与服务器一起重新验证)。如果仅使用nginx,则适用。如果将其用作传递对象,则需要设置 proxy_ignore_headers,例如

proxy_ignore_headers Cache-Control;

设定档

除此之外:在有关内容缓存NGINX参考中,它说的是

    proxy_cache_path /data/nginx/cache keys_zone=one:10m;

http部分中,其次是

        proxy_cache one;

server一部分。

测试中

在这个SF问题中,它表示X-Cache-Status通过配置文件添加标头来测试缓存行为

add_header X-Cache-Status $upstream_cache_status;

其答案指出

您可以使用以下内容查看标题

  • Firefox插件Firebug
  • Chrome调试控制台
  • cURL(curl -I)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

提供静态内容NGINX

来自分类Dev

如何使NGINX提供.js,.css,.html等静态内容?

来自分类Dev

Nginx在经过身份验证的页面后面提供静态内容

来自分类Dev

如何在Nginx + Django + Kubernetes中提供静态内容?

来自分类Dev

Traefik:使用Nginx为Django应用程序提供静态内容

来自分类Dev

如何使用nginx为根提供静态html并代理其他所有内容?

来自分类Dev

我的 nginx.conf 应该是什么样子来提供静态内容

来自分类Dev

提供Firebase应用程序的静态内容

来自分类Dev

通过cachall路由提供静态内容-Express

来自分类Dev

提供静态内容的正确http方法

来自分类Dev

通过Web API提供静态内容

来自分类Dev

NextJS-从.next提供静态内容

来自分类Dev

NextJS-从.next提供静态内容

来自分类Dev

netty.io提供静态Web内容

来自分类Dev

用电抗器提供静态内容

来自分类Dev

Python webapp2 提供静态内容

来自分类Dev

Nginx为Django应用提供静态文件

来自分类Dev

Nginx不为Django提供静态文件

来自分类Dev

如何使用Nginx提供静态文件

来自分类Dev

如何使用Nginx提供特定的静态文件?

来自分类Dev

Nginx:通过URL路径提供静态文件

来自分类Dev

nginx提供静态html和代理

来自分类Dev

nginx不提供Django管理静态文件

来自分类Dev

NGINX不提供收集的静态文件

来自分类Dev

NGINX不提供收集的静态文件

来自分类Dev

NGINX不提供收集的静态文件

来自分类Dev

Nginx:通过URL路径提供静态文件

来自分类Dev

nginx响应POST请求提供静态文件

来自分类Dev

Nginx:加载静态内容时出现滞后