Disons que mon site est situé dans /srv/http/www
et est disponible sur www.mydomain.com
.
J’essaie d’avoir un sous-domaine devel.mydomain.com
pour que je puisse tester les fonctionnalités avant de les publier. Le code des fonctionnalités est dans /srv/http/www-devel
L’idée est que, lorsque vous essayez d’accéder à devel.mydomain.com
toutes les ressources disponibles dans /srv/http/www-devel
sont sockets en compte, et toutes les ressources non disponibles sont récupérées dans /srv/http/www
tant que solution de secours. Par conséquent, le fait de déplacer tous les fichiers dans /srv/http/www-devel
vers /srv/http/www
(et éventuellement de remplacer les fichiers existants) déploiera mes fonctionnalités.
La configuration nginx suivante fonctionne parfaitement pour presque toutes les ressources:
server { listen 80; listen 443 ssl; server_name devel.mydomain.com; access_log /var/log/nginx/20-devel.access.log; error_log /var/log/nginx/20-devel.error.log; ssl_certificatee ...; ssl_certificatee_key ...; index index.php index.html; root /srv/http/www-devel; location ~ /\. { deny all; } location = /robots.txt { access_log off; log_not_found off; } location = /favicon.ico { access_log off; log_not_found off; } location / { try_files $uri @fallback; } location @fallback { root /srv/http/www; } location ~ \.php$ { fastcgi_pass unix:/run/php-fpm/php-fpm.sock; fastcgi_index index.php; include fastcgi.conf; } }
Le problème réside toujours dans le traitement des fichiers PHP. Si je mets dans /srv/http/www-devel
un script php qui nécessite des ressources, et si ces ressources ne sont pas disponibles dans /srv/http/www-devel
, l’interpréteur php n’ira pas dans /srv/http/www
. Comment puis-je activer ce comportement au niveau php?
Edit: J’ai aussi remarqué que la directive location ~ \.php$
ne va pas chercher les pages php dans le répertoire devel. Comment puis-je activer le repli dans la directive également?