Je gère un site de rails 3 sur Ubuntu 8.04 avec Nginx 1.0.0 et passager 3.0.7. P>
Dans mon erreur nginx.Log J'ai commencé à voir le message MAINTENANT, mon application est accessible via plusieurs domaines et j'utilise Comment puis-je me débarrasser du message d'erreur? P> en-tête de mappage X-Accel manquant code> beaucoup. Google me conduit aux docs de
rack :: sendfile code> a > et vers le Nginx Docs . P>
send_file code> dans mon application pour livrer certains fichiers spécifiques au domaine qu'elles sont demandées, par exemple, si vous venez à
Domaine1.com/favicon.ico Code> Je lève le Favicon à
Public / Sites Web / Domaine1 / Favicon.ico Code>.
Cela fonctionne bien et je ne pense pas avoir besoin / envie d'obtenir Nginx impliqué et de créer une zone privée dans laquelle je stocke ces fichiers, comme les échantillons de la
rack :: sendfile code> docs
suggère. P>
3 Réponses :
Ce message signifie que J'utilise nginx em> + passager 3 em> + rails 3.1 em>. P> Les informations rassemblées de ces pages que j'ai figurées Sorti: p> http://wiki.nginx.org/x-accel < / a> p> http://greenlegos.wordpress.com/2011/09/12/sending-files-with-nginx-x-accel-redirect P> servir la Fichiers RGE via NGinx via Rails 2.3 à l'aide de X-SendFile J'ai le contrôleur qui mesure dans le code que j'ai ceci: p> J'ai remplacé le nom de fichier pour cet exemple de fins em> p> Maintenant, je devais ajouter ces lignes à mon Le chemin qui est ensuite traité par nginx em>. P> Je peux voir que cela fonctionne correctement Comme le fichier est téléchargé 100 fois plus rapidement qu'auparavant et aucune erreur n'est affichée dans les journaux. p> espère que cela aide. p> p> rack :: sendfile code> désactivé
X-Accel-redirect code> Pour vous, car vous avez la configuration manquante pour elle dans nginx.conf ...
/ téléchargement / 1 code> Demandes de fichiers de stockage qui ont leur propre structure de répertoire, comme Ceci:
stockage / 00/00/1 code>,
stockage / 01/0f / 15 code> etc. Donc, j'ai besoin de passer cela à travers des rails, mais j'ai besoin d'utiliser
send_file code> méthode qui utilisera
x-accel-redirect code> pour envoyer le fichier final au navigateur via nginx directement em>. p>
nginx.conf code>: p>
/ stockage code> n'est pas visible du monde extérieur, il est interne uniquement. P>
rack :: sendfile code> obtient l'en-tête
X-Accel-mappage code>, extrait le chemin de l'entretien et remplace
/ var / www / partagé / stockage code> avec
/ stockage ... code>. Ensuite, il crache l'en-tête modifié: p>
Cela semble super mais ne m'aidait pas vraiment depuis, comme je l'ai mentionné dans ma question, je n'ai ni que je ne souhaite ni avoir un dossier avec tous les fichiers ... Certains sont stockés dans un répertoire dans mon application Rails partagée entre les déployés Certaines sont en train d'être téléchargées à la volée d'ailleurs et stockées dans le dossier TMP, etc. Je veux juste utiliser send_file sans avoir à configurer un dossier séparé contenant tous les fichiers. Possible?
Oui, dans ce cas, vous devez créer un emplacement interne pour chacune d'elles ... mais je ne sais pas quel est le format de la cartographie X-Accel ... ou, vous pouvez peut-être ajouter cet emplacement interne comme "/ = /" ...
Nous avons utilisé la technique similaire que STRY> NOICE FORT> décrit, mais j'ai remplacé le répertoire "codé dur" contenant tous les fichiers avec l'expression régulière décrivant le dossier contenant les dossiers contenant les fichiers contenant les fichiers contenant les fichiers contenant les fichiers contenant les fichiers < /em>. Sounds Hard, Ouais? Jetez un coup d'oeil sur ces ( ceci doit être utilisé avec Ce chèque: p> pour empêcher la statique du traitement des rails. p> p> /etc/nginx/sites-available/my.web.site code>): p>
J'ai fait par ce manuel
https://mattbrrictons.com/acpealated-Rails-downloads p>
Mon serveur envoie un chemin de fichier /private_upload/file/123/myfile.txt code>, le fichier est dans
/ data / myapp-data / private_upload / Fichier / 123 / MYFILE.TXT CODE> P>
# Allow NGINX to serve any file in /data/myapp-data/private_upload
# via a special internal-only location.
location /private_upload {
internal;
alias /data/myapp-data/private_upload;
}
# ---------- BACKEND ----------
location @backend
{
limit_req zone=backend_req_limit_per_ip burst=20 nodelay;
proxy_pass http://backend;
proxy_set_header X-Sendfile-Type X-Accel-Redirect;
proxy_set_header X-Accel-Mapping /=/; # this header is required, it does nothing
include /etc/nginx/templates/myapp_proxy.conf;
}
Salut @zoopzoop - Avez-vous déjà compris cela? J'ai le même problème avec mes rails 3 app hébergé sur Heroku (qui utilise Ngnix).
Même problème ici aussi. Passager 3.0.7, Nginx 1.0.0, Ubuntu.
Non, je n'ai pas encore trouvé de solution.