Disons que j’ai une configuration nginx configurée pour un domaine comme celui-ci:
server { root /path/to/one; server_name one.example.org; location ~ \.php$ { try_files $uri =404; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } }
Maintenant, si je veux append un autre domaine avec un contenu différent, y a-t-il un moyen de réutiliser des déclarations équivalentes du domaine précédent ou dois-je tout dupliquer pour chaque nouveau domaine que je veux prendre en charge?
server { root /path/to/two; # different server_name two.example.org; # different location ~ \.php$ { try_files $uri =404; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } }
J’ai essayé de déplacer la directive d’ location
dehors de la fermeture du server
, mais évidemment les choses ne fonctionnent pas comme ça parce que j’ai eu une erreur “la directive d’emplacement n’est pas autorisée ici” lors du redémarrage de nginx.
tu peux faire:
server_name one.example.org two.example.org;
si les deux sont exactement identiques à l’exception du nom de domaine
si vous avez juste des blocs de localisation similaires, vous pouvez déplacer ces emplacements dans un fichier séparé et ensuite faire un
include /etc/nginx/your-filename;
pour l’utiliser facilement dans chaque bloc de serveur
C’est un bon exemple d’utilisation du module nginx Map. http://wiki.nginx.org/HttpMapModule
Voici ce que j’ai essayé. Cela fonctionne dans ma devbox. Remarque
vous pouvez avoir la liberté d’avoir un dossier racine ou un numéro de port différent, etc.
map $subdomain $root_folder { one /path/to/one; two /path/to/two; } map $subdomain $port_number { one 9000; two 9100; } server { listen 80; server_name ~^(?P.+?)\.mydomain\.com$; root $root_folder; location ~ \.php$ { try_files $uri =404; fastcgi_pass 127.0.0.1:$port_number; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } }