Caching 为静态内容NGINX提供服务

Caching 为静态内容NGINX提供服务,caching,nginx,proxy,Caching,Nginx,Proxy,我是新来的。关于这件事我还不太了解,但我正在努力。 我很好奇,使用NGINX提供页面静态内容的最佳方式是什么。我希望为静态内容提供服务的主要原因是我希望在应用服务器上减少负载,并提高页面加载速度 我偶然发现 有几篇好文章帮助我把这些放在这篇文章里:,,和 但一切还是有点清楚 配置 文件路径:etc/nginx/default server { listen 80 default_server; server_name default; root /home/forg

我是新来的。关于这件事我还不太了解,但我正在努力。 我很好奇,使用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";
    }
}

测试/结果 保存文件后,我运行
服务nginx reload

接下来,我尝试运行:
curl-xget-Ihttp://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-xget-Ihttp://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
为什么我看到
缓存控制:没有缓存
而我只是设置了缓存

我现在什么都不清楚


问题 请有人明确说明如何:

  • 正确地配置它
  • 测试该配置是否正常工作
  • 查看缓存和不缓存之间的区别
  • 对其进行基准测试,并在页面或CLI上打印该报告

缓存控制:无缓存
如中所述,
Cache Control:no Cache
应该告诉用户代理和中间的缓存使用哪种缓存样式(即每次使用服务器重新验证)。如果您专门使用nginx,则这一点适用。如果你把它当作通行证,你

配置 除此之外,它还说:在

    proxy_cache_path /data/nginx/cache keys_zone=one:10m;
http
部分中,后跟

        proxy_cache one;
服务器
部分

测试 ,它表示通过配置文件添加
X-Cache-Status
头来测试缓存行为

add_header X-Cache-Status $upstream_cache_status;
声明

您可以使用查看标题

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

我只在PHP请求的情况下看到并没有缓存。它将显示在该请求中,因为它不会被缓存。我不明白你的意思?你能详细解释一下吗?@Neo:你有什么建议吗?我的意思是,.php文件资源不会被缓存,因为它在响应头中显示。尽管我在.css响应头中没有看到任何“无缓存”头。请尝试通过以下方式运行请求:
add_header X-Cache-Status $upstream_cache_status;