J'essaie de configurer un alias, donc lorsque quelqu'un y accède /phpmyadmin/
, nginx le tirera de /home/phpmyadmin/
plutôt que de la racine de document habituelle. Cependant, chaque fois que je récupère l'URL, cela me donne un 404 sur tous les éléments non extraits de fastcgi. fastcgi semble bien fonctionner, alors que le reste ne fonctionne pas. strace
me dit qu'il essaie de retirer tout le reste de la racine de document habituelle, mais je ne peux pas comprendre pourquoi. Quelqu'un peut-il donner un aperçu?
Voici la partie pertinente de ma config:
location ~ ^/phpmyadmin/(.+\.php)$
{
include fcgi.conf;
fastcgi_index index.php;
fastcgi_pass unix:/tmp/php-cgi.sock;
fastcgi_param SCRIPT_FILENAME /home$fastcgi_script_name;
}
location /phpmyadmin
{
alias /home/phpmyadmin/;
}
/
de l'alias et de lalocation
directive, demander/phpmyadminfile
vous obtiendra réellement/home/phpmyadminfile
. Quant à savoir pourquoi la configuration de la question ne fonctionne pas, elle me semble correcte, donc je soupçonne qu'il y a une autrelocation
directive non affichée qui correspond lorsqu'elle n'est pas prévue. Dans ce cas, commealias
se termine par lelocation
préfixe, les documents nginx suggèrent d'utiliser à laroot /home;
place .Réponses:
J'ai trouvé un moyen. Je ne sais pas si c'est le MEILLEUR, mais ça marche certainement en ce moment.
Voici ce que j'ai fait:
la source
Je ne suis pas sûr, mais avez-vous essayé de l'écrire de cette façon:
De plus, quel est l'URI à partir duquel vous essayez d'y accéder?
Pour autant que je le comprends, vous devez utiliser l'URI
et pas seulement
Vous pouvez en savoir plus à ce sujet ici: http://wiki.nginx.org/HttpCoreModule
la source
Essayer
la source
La raison pour laquelle cela ne fonctionne pas est que le serveur choisit l'emplacement basé sur l'expression régulière et non l'emplacement basé sur le préfixe qui contient l'alias.
Il n'en choisira qu'un. Il y a un opérateur que vous pouvez utiliser pour obtenir un emplacement basé sur un préfixe pour surclasser un regex, mais vous constaterez que php ne fonctionnera pas. La solution sera l'une comme la réponse de kervin où la regex PHP est imbriquée à l'intérieur de l'emplacement avec la directive alias.
Je soupçonne cependant que son paramètre SCRIPT_FILENAME peut ne pas fonctionner ici car il y a des majuscules différentes sur l'URL et le répertoire alias.
la source