Comment obtenir un nixos configuration.nix Pour les paramètres nginx?

Dans mon fichier configuration.nix Posté

services.nginx.enable=true;
services.nginx.httpConfig="a";

(J'ai essayé un fichier ordinaire et une chaîne vide, et aucun d'entre eux n'a travaillé)

en cours d'exécution

nixos-rebuild switch

, dit que le serveur a été lancé, mais

curl localhost

La connexion refuse.

Quand je cours

nginx

De la ligne de commande, il répond

could not open error log file: open() "/nix/store/HASHHERE-nginx-1.8.1/logs/error.log failed", read only filesystem

.

J'ai regardé là conf déposer

/nix/store/HASHHERE-nginx-1.8.1/conf/nginx.conf

Et il est le même que la valeur par défaut! (

'diff nginx.conf nginx.conf.default'

Renvoie une chaîne vide).

Pourquoi pas

services.nginx.httpConfig

Changer le fichier de configuration?
Invité:

Alice

Confirmation de:

Cela change vraiment le fichier de configuration, mais le fichier de configuration n'est pas écrit dans le package. nginx. Au lieu de cela, il est écrit dans un nouveau fichier dans un nouvel endroit.

Au début, c'était un peu gêné. J'ai trouvé utile de le comprendre, en vous rappelant que le référentiel nix reflète la pureté de la langue fonctionnelle nix - Lorsque vous changez quelque chose, la copie source doit rester la même, la nouvelle copie est créée à la place avec des modifications. (Cette propriété prend en charge la restauration instantanée). La même chose avec votre configuration nginx - Le package ne démarre jamais, le nouveau fichier de configuration est créé à la place.

Comme le dit Rock, vous pouvez vérifier rapidement où se trouve le fichier de configuration à l'aide de

systemd status

. Vous pouvez également lire la section de configuration du module. nginx, Pour voir comment tout cela est mis en œuvre. Dans ce cas, vous verrez que votre

nginx.httpConfig

Le texte est écrit dans le fichier de configuration dans

/nix/store/HASHHERE-nginx.conf

. Ensuite, ce fichier est transmis directement à votre fichier binaire. nginx à travers le paramètre -c. Donc, l'équipe execStart module nginx systemd semblable à

${pkgs.nginx}/bin/nginx -c ${configFile}..

PS C'est pourquoi vous êtes curl Retourne un refus de se connecter - Parce que votre configuration nginx seulement 'a'! Le serveur par défaut est dans l'emballage nginx, Mais il n'y a pas de liens (La même chose est arrivée à moi).

Pour répondre aux questions, connectez-vous ou registre