Caching-Location verhindert Socket.io.js

  • Hallo,


    ich bin an ein für mich nicht ersichtliches Problem gestoßen. Ich weiß, dass dieses Problem wohl nicht unmittelbar mit nodePush zusammenhängt - ich hoffe aber, dass mir unter Umständen einer der kompetenten Nutzer hier weiterhelfen kann, denn ich hatte nodePush aber auf einem anderen Server unter gleicher Konfiguration problemlos laufen, weshalb bei mir eine gewisse Ratlosigkeit eintritt. Ich habe beide meiner Caching-Anweisungen auskommentiert (Zeile 34 - 41), da diese mit nodePush kollidieren. Sobald ich sie auskommentiere, erhalte ich beim Aufruf der socket.io/socket.io.js-Datei eine 404-Response. Der Grund hierfür ist für mich nicht klar ersichtlich, ich gehe stark von einem eigenen Fehler aus. Denkbar für mich ist, dass dieser 404-Fehler auftritt, da der Caching-Block zur Interpretation genommen wird, und der /socket.io/-Block eben nicht. So würde sich auch die Tatsache erklären, dass https://www.justchunks.net/socket.io/ bei jeder Konfiguration erreichbar bleibt.


    Ich möchte prinzipiell nicht die Zeit der hier anwesenden Nutzer verschwenden, fand aber für diesen spezifischen Fall leider auch nach intensiver Recherche keine Abhilfe - Vermutlich aufgrund des mangelnden Verständnisses des Durchlaufs eines Aufrufs von nginx.

    Vielen Dank im Voraus,
    Scrayos

    • Offizieller Beitrag

    Hallo,


    Klassischer „RTFM“-Fehler: http://nginx.org/en/docs/http/request_processing.html


    Das Problem ist, dass Regex-Locations grundsätzlich Priorität vor nicht-Regex-Locations haben. Entweder du lässt das Shotgun-mäßige-Caching einfach raus (was ich empfehle, der Browser überprüft dann nur noch, ob sich die Datei geändert hat, was mit SPDY ohnehin schnell genug ist), oder du packst eine location / außen um deine generischen Regeln und packst sie unter eine location /socket.io, weil die nicht-Regex-Locations von oben nach unten verarbeitet werden.


    Nachfolgend findest du meine Konfiguration (welche schon bereit für NodePush 2 ist):


    Ansonsten: Sehr schöne Konfiguration, ich habe für den nginx schon viel schlimmes gesehen! Ich empfehle aber noch einige generische Dinge in den conf.d-Ordner auszulagern (wenn du Debian verwendest). Die SSL-Konfiguration findet sich bei mir auch in einer Extra-Datei, damit man sie leicht wiederverwenden kann.

  • Vielen Dank für die schnelle Rückmeldung und die Hilfe, obwohl es ja nichts mit dem Produkt als solches zu tun hat! :)


    Ich habe nun einfach die Caching-Blöcke entfernt und meine Blöcke durch deine IPv6-listen-Anweisungen ergänzt, die kannte ich nämlich noch nicht :)


    Bislang habe ich keine externen Configs gehabt, da ich nur drei Server-Blöcke habe, welche alle zum selben Projekt gehören und eben für http, https ohne www und den standard https-www-block kaum dinge mehrfach verwenden musste. Habe nun aber ssl ausgelagert, da ich dies zumindest zwei mal verwende :)