1 votes

Nginx rewriting asset statique vers un chemin différent

J'ai une application principale située à root : /app/web.

Puis une autre application dans un sous-répertoire - /app/web/second.

Les pages sont situées dans /app/web/second//page.

Les assets sont situés dans /app/web/second//css et /app/web/second//js.

peut être dev (staging) ou dist (production), donc cela changera en fonction de l'instance.

Dans le code, les assets sont référencés comme par exemple /second/css/style.css. J'ai besoin que ces requêtes soient réécrites vers leur emplacement dans le système de fichiers approprié par exemple /app/web/second/dev/css/style.css

Voici ce que j'ai pour manipuler les requêtes sur dev:

  root  /app/web;

  location /rsvp {
    alias  /rsvp/dev;
    rewrite  ^/rsvp/([a-z0-9-]+)/?$ $document_root/page/title.php?id=$1 last;
    rewrite  ^/rsvp/(.+)\.(css|js)$ $document_root/$1/$2 last;
  }

La réécriture de page fonctionne bien. Le journal des scripts montre :

GET /second/foobar HTTP/1.1 200 > /app/web/second/dev/page/title.php

Les réécritures d'asset sont complètement différentes. Le root n'est pas ajouté et l'alias est dupliqué. Journal des scripts :

GET /second/css/style.css HTTP/1.1 404 > /second/dev/second/dev/css/style/css
GET /second/js/script.js HTTP/1.1 404 > /second/dev/second/dev/js/script/js

Ceci est une base de code héritée donc la mettre en place est une priorité avant de la refacturer vers une meilleure structure.

0voto

Tero Kilkanen Points 32968

Je suppose que rsvp et second signifient la même chose dans votre question.

Je voudrais essayer la configuration suivante:

location /rsvp {
    root /rsvp/dev;

    location ~ /rsvp/([a-z0-9-]+)/?$ {
        try_files /title.php?id=$1 =404;
    }

    location ~ ^/rsvp/(.+)\.(css|js)$ {
        try_files /$1$2 =404;
    }
}

Le modèle consiste à configurer une root commune pour les try_files, puis à utiliser des expressions régulières dans les directives location pour capturer les parties pertinentes afin de former la partie du nom de fichier dans try_files.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X