Mon fichier de configuration par défaut nginx devient énorme. Je voudrais le diviser en fichiers de configuration plus petits, chacun comprenant seulement un, maximum 4 emplacements pour chaque fichier, afin que je puisse les activer/désactiver rapidement.
Le fichier réel ressemble à ceci:
server {
listen 80 default_server;
root /var/www/
location /1 {
config info...;
}
location /2 {
config info....;
}
location /abc {
proxy_pass...;
}
location /xyz {
fastcgi_pass....;
}
location /5678ab {
config info...;
}
location /admin {
config info....;
}
maintenant, si je veux diviser cela pour n'avoir que quelques emplacements dans chaque fichier (emplacements appartenant ensemble), quelle serait une bonne façon de le faire sans causer de chaos (comme déclarer la racine dans chaque fichier, donc avoir un chemin étrange qui est nginx essaie de trouver des fichiers)?
Vous recherchez probablement la fonction include
de Nginx: http://nginx.org/en/docs/ngx_core_module.html#include
Vous pouvez l'utiliser comme ceci:
server {
listen 80;
server_name example.com;
[…]
include conf/location.conf;
}
include accepte également les caractères génériques afin que vous puissiez également écrire
include include/*.conf;
pour inclure chaque fichier * .conf dans le répertoire , incluez .
Vous pouvez créer des dossiers de site avec
mkdir -p /etc/nginx/sites-available /etc/nginx/sites-enabled
# Et puis divisez votre grand your_config.conf
fichier en fichiers plus petits en sites-available/
avec:
YOURCONF="/etc/nginx/conf.d/your_config.conf"
cd /etc/nginx
mkdir -p sites-available sites-enabled
cd sites-available/
csplit "$YOURCONF" '/^\s*server\s*{*$/' {*}
for i in xx*; do
new=$(grep -oPm1 '(?<=server_name).+(?=;)' $i|sed -e 's/\(\w\) /\1_/g'|xargs);
if [[ -e $new.conf ]] ; then
echo "" >>$new.conf
cat "$i">>$new.conf
rm "$i"
else
mv "$i" $new.conf
fi
done
(J'ai amélioré cela à partir de cette source: https://stackoverflow.com/a/9635153/106908 )
Assurez-vous d'ajouter ceci à la fin à l'intérieur du bloc http
de votre/etc/nginx/conf.d/*.conf;
:
include /etc/nginx/sites-enabled/*.conf;
Remarque: les commentaires en dehors des blocs server
sont coupés au bas de chaque fichier, il ne doit donc pas y avoir de commentaires AVANT un bloc server
. Déplacez plutôt les commentaires dans la première ligne à l'intérieur du bloc, par exemple:
# don't put comments here
server {
# put your comments about domain xyz.org here
listen 80;
server_name xyz.org;
...