0

我在 Debian 上使用 Thin 和 nginx(0.7.6)在生产模式下运行我的 Rails 应用程序。它工作得很好,但我没有尝试实现 last-modified 标头,当我重新启动 nginx 时,客户端不再加载资产。

这是我的 nginx 配置:

upstream instance-name {
        server unix:/var/run/thin/appname.0.sock;
        server unix:/var/run/thin/appname.1.sock;
        server unix:/var/run/thin/appname.2.sock;
        server unix:/var/run/thin/appname.3.sock;
}

server {
        listen 5678;
        server_name appname;
        access_log /root/rails/appname/log/access.log;
        error_log /root/rails/appname/log/error.log;
        root /root/rails/appname/public;
        index index.html;
        location / {
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_set_header Host $http_host;
                proxy_redirect off;

                if (-f $request_filename/index.html) {
                        rewrite (.*) $1/index.html break;
                }

                if (-f $request_filename.html) {
                        rewrite (.*) $1.html break;
                }

                if (!-f $request_filename) {
                        proxy_pass http://fibre-dox;
                        break;
                }
        }
        location ~* \.(jpg|gif|png|css|js)$ {
               if (-f $request_filename) {
                       expires max;
                       break;
               }
        }
}

给我带来麻烦的部分是这个:

location ~* \.(jpg|gif|png|css|js)$ {
                   if (-f $request_filename) {
                           expires max;
                           break;
                   }
            }

我究竟做错了什么?我想使用最后修改的标题,这样客户端每次点击页面时都不会重新加载所有图片。

4

1 回答 1

0
    location / {
            try_files $uri $uri/ $uri.html @backend;

            location ~* \.(?:jpg|gif|png|css|js)$ {
                try_files $uri @backend;
                expires max;
            }
    }

    location @backend {
            proxy_pass http://fibre-dox;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header Host $http_host;
            proxy_redirect off;

            location ~* \.(?:jpg|gif|png|css|js)$ {
                proxy_pass http://fibre-dox;
                expires max;
            }
    }
于 2012-07-18T17:50:05.790 回答