Disons que j’ai une application pour chien écrite en AngularJS et que j’ajoute maintenant une nouvelle sous-application de canvasttage écrite en Angular4
En ce moment, j’ai nginx serving /api
sur un serveur php backend avec le préfixe /api
réécrit (donc il ne le sait pas dans un sous-chemin) et /
servi par l’application AngularJS frontend. Ce sont deux applications distinctes, chacune dans leur propre répertoire de serveur. Cela fonctionne bien maintenant.
Maintenant, nous ajoutons une application de canvasttage écrite en ng4 et qui devrait être servie comme s’il s’agissait d’un module de l’application principale, mais à partir d’un répertoire de serveur entièrement différent, par exemple /dogs/315/grooming
Si je code en dur l’emplacement pour faire correspondre location /dogs/315/grooming
il charge le ng4 index.html et tente de servir l’application, mais si j’utilise l’ location ~ ^/dogs/([0-9]+)/grooming
regex location ~ ^/dogs/([0-9]+)/grooming
saute par-dessus et charge l’emplacement.
L’application Grooming s’attend à ce qu’une URL telle que /dogs/315/*
définisse le contexte, puis utilise des segments d’URL supplémentaires pour ses propres fonctionnalités.
Le try_files $uri $uri/ $uri.html /index.html
à l’ location ~ ^/dogs/([0-9]+)/grooming
continue à envoyer l’application enfant au parent.
Voici quelques extraits de code, la partie de nettoyage a été réécrite et a changé de nombreuses manières, je ne l’inclue que comme exemple:
# This works location ^~ /api { alias /home/forge/api.greatapp.com/current/public; try_files $uri $uri/ @api; } # This works location @api { rewrite /api/(.*)$ /api/index.php?$query_ssortingng last; } # This doesn't work location ~ ^/dog/([0-9]+)/grooming { alias /home/forge/dog-grooming.greatapp.com/current/dist/; try_files $uri $uri/ @grooming; } # Nor this location @grooming { rewrite ^/dog/([0-9]+)/grooming/(.*)$ /index.html break; } # This works location / { try_files $uri $uri/ $uri.html /index.html; }
Complètement coincé sur les portions de canvasttage; J’ai essayé tellement de choses que je pouvais partir sur la mauvaise voie.
Afficher la réponse sous forme de commentaires au besoin
location ~ ^/dog/([0-9]+)/grooming/ { alias /home/forge/dog-grooming.greatapp.com/current/dist/; index index.html; try_files $uri $uri/ =404; }