J’ai un serveur avec Nginx installé.
J’ai également 2 domaines pointant vers ce serveur. (domain1.com et domain2.com). Le premier domaine (domain1.com) est le site Web avant. L’autre domaine (domain2.com) est le CDN pour les contenus statiques tels que: JS, CSS, images et fichiers de fonts.
Je configure les fichiers de configuration de domaines et tout fonctionne correctement. PHP utilise le serveur nginx.
Ma question est la suivante: Comment désactiver PHP sur le deuxième domaine (domain2.com), sauf si la requête a “? Param = quelquechose” dans la requête GET?!
Ce sera quelque chose comme:
// PHP is disabled if($_GET['param']){ // Enable PHP }
ou devrais-je utiliser:
location ~ /something { deny all }
Et garder PHP en marche?!
Note: J’ai besoin de php pour traiter les parameters que je transmets pour générer des fichiers JS ou CSS.
PHP avec nginx est très différent de PHP avec Apache, car il n’y a pas de mod_php equiv pour nginx (AFAIK).
PHP est géré par un démon totalement séparé (php-fpm, ou en passant la requête à un serveur Apache, etc.). En conséquence, vous pouvez simplement ignorer php en laissant nginx gérer la requête sans la transmettre à php-fpm ou apache. Il y a de fortes chances que votre configuration nginx soit déjà configurée uniquement avec des fichiers .php de transfert au format php-fpm.
Maintenant, si vous essayez d’avoir des requêtes telles que /some-style.css?foo=bar traitées par php, alors je suggère simplement de séparer les ressources statiques des ressources dynamics.
Vous pouvez créer un troisième domaine ou simplement utiliser deux répertoires distincts.
/static/foo.css
contre
/dynamic/bar.css?xyz=pdq
Vous pourriez alors passer à php dans les blocs de localisation.
location ~ /static { try_files $uri =404; } location ~ /dynamic { try_files $uri =404; include /etc/nginx/fastcgi_params; fastcgi_pass 127.0.0.1:9000; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; }
Avec la configuration ci-dessus, les requêtes commençant par / static contourneront php indépendamment de l’extension de fichier (même .php) et les requêtes commençant par / dynamic seront transmises à php-fpm, quelle que soit l’extension de fichier (même .css)