Je suis frustré par ma configuration nginx et je demande donc de l'aide pour écrire mon fichier de configuration pour servir plusieurs projets à partir de sous-répertoires dans la même racine. Il ne s'agit pas d'un hébergement virtuel car ils utilisent tous la même valeur d'hôte. Peut-être qu'un exemple clarifiera ma tentative:
- la demande
192.168.1.1/
doit émanerindex.php
de/var/www/public/
- la demande
192.168.1.1/wiki/
doit émanerindex.php
de/var/www/wiki/public/
- la demande
192.168.1.1/blog/
doit émanerindex.php
de/var/www/blog/public/
Ces projets utilisent PHP et utilisent fastcgi.
Ma configuration actuelle est très minimale.
server {
listen 80 default;
server_name localhost;
access_log /var/log/nginx/localhost.access.log;
root /var/www;
index index.php index.html;
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /var/www$fastcgi_script_name;
include fastcgi_params;
}
}
J'ai essayé différentes choses avec alias
et rewrite
mais n'a pas été en mesure de faire avancer les choses correctement pour FastCGI. Il semble qu'il devrait y avoir une façon plus éloquente que l' écriture de blocs d'emplacement et la duplication root
, index
, SCRIPT_FILENAME
, etc.
Tous les conseils pour me diriger dans la bonne direction sont appréciés.
Réponses:
Étant donné que vos projets ne sont pas réellement dans la même racine, vous devez utiliser plusieurs emplacements pour cela.
Aussi, mettez fastcgi_index dans votre fichier fastcgi_params et incluez-le au niveau du serveur, de cette façon vous gardez vos emplacements php aussi petits que possible.
la source
Résout par emplacement + alias:
la source
Voici ce que j'ai essayé, plus de détails sur http://programmersjunk.blogspot.com/2013/11/nginx-multiple-sites-in-subdirectories.html
la source