Frage

Ich kann nicht zu bekommen nginx scheint Header auf meinen statischen Vermögenswerte in meiner Rails-Anwendung zu setzen abgelaufen ist.

Meine App ist im Einsatz mit Phusion Passagiere & nginx.

Im Folgenden finden Sie die entsprechenden Abschnitt meiner nginx config-Datei

server {
        listen  80;
        server_name my.domain.tld;
        root /home/deploy/my.domain.tld/current/public;
        passenger_enabled on;
        access_log off;

        location ~* \.(ico|css|js|gif|jp?g|png)\?[0-9]+$ {
                expires max;
                break;
        }

        if (-f $document_root/system/maintenance.html) {
                rewrite ^(.*)$ /system/maintenance.html break;
        }
}

Ich bin mir nicht sicher, warum es nicht Einstellung Header auf meiner statischen Vermögenswerte abläuft (z /images/foo.png?123456)

Ich bin mir nicht sicher, ob es etwas mit Passagiere oder wenn meine Lage regexp zu tun ist nicht nur fangen sie

War es hilfreich?

Lösung 2

So landete ich die Lösung zu finden, auf. Mein regexp war ein bisschen weg, da ich nicht berücksichtigt wurde die Möglichkeit, dass die? Zeitstempel gibt es nicht.

Dieses regexp arbeitet für mich.

location ~* \.(ico|css|js|gif|jp?g|png)(\?[0-9]+)?$ {

Andere Tipps

Ich wollte nur, dass der Zeitstempel optional zu machen, darauf hinzuweisen ist eine schlechte Idee -. Wenn es nicht enthalten ist, dann expires max Einstellung falsch ist, da es keine Möglichkeit, die Aktualisierung die Datei würde

Auch die location Richtlinie in Nginx kann den Query-String nicht sehen, so erzielte die Lösung hier paßt nie die 'optional' Zeitstempel.

Eine richtige Lösung (dh eine, die die maximalen sendet erlischt erst, wenn die Datei mit einem Zeitstempel angefordert wurde) wäre:

location ~* \.(js|css|png|jpg)$ {
  if ($query_string ~ "^[0-9]+$") {
    expires max;
    break;
  }
}

Wenn der Zeitstempel nicht angegeben ist, dann setzen Sie auf Last-Modified und ETag, die automatisch von Nginx behandelt werden.

Vielleicht wird dies helfen:

location ~* ^.*\.(ico|css|js|gif|jp?g|png)\?[0-9]+$ {

Lesen Sie auch wie Nginx wertet Standort . Sind Sie sicher, Sie haben keine andere Zeichenfolge location in Ihrer Konfigurationsdatei, die Ihre statischen Ressourcen übereinstimmt, bevor Ihr regexp location tut?

BTW, sollten Sie mit try_files statt if (-f $document_root/...).

gibt es keine Notwendigkeit „brechen“ Richtlinie zu verwenden, aber access_log aus; wird nützlich sein:

  location ~* \.(png|gif|jpg|jpeg|css|js|swf|ico)(\?[0-9]+)?$ {
      access_log off;
      expires max;
      add_header Cache-Control public;
  }

Sie können vollständige Konfigurationsdatei auf Github sehen: https://gist.github.com/711913

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top