Как получить nixos configuration.nix для настройки nginx?

В моей конфигурации. Nix, это говорит

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

(Я попробовал нормальный файл и пустую строку, и ни один не работал)

после запуска nixos-rebuild switch, это говорит о том, что сервер был запущен, но curl localhost соединение отказывается.

Когда я бегу nginx из командной строки, он отвечает could not open error log file: open() "/nix/store/HASHHERE-nginx-1.8.1/logs/error.log failed", read only filesystem,

Я посмотрел на файл conf там /nix/store/HASHHERE-nginx-1.8.1/conf/nginx.conf и это так же, как по умолчанию! ('diff nginx.conf nginx.conf.default' возвращает пустую строку).

Почему не services.nginx.httpConfig изменить файл конфигурации?

1 ответ

Решение

Он изменяет файл конфигурации, но файл конфигурации не записывается в пакет nginx. Вместо этого он записывается в новый файл в новом месте.

Поначалу меня это тоже немного смутило. Я нашел полезным разобраться в этом, вспомнив, что хранилище nix отражает чистоту функционального языка nix - когда вы что-то меняете, оригинальная копия должна оставаться прежней, вместо этого создается новая копия в сочетании с любыми изменениями (это свойство который поддерживает мгновенные откаты). То же самое относится к вашей конфигурации nginx - пакет никогда не трогается, вместо этого создается новый файл конфигурации.

Как говорит Рок, вы можете быстро проверить, где находится файл конфигурации systemd status, Вы также можете прочитать раздел config для модуля nginx, чтобы увидеть, как все это реализовано. В этом случае вы увидите, что ваш nginx.httpConfig текст записывается в файл конфигурации в /nix/store/HASHHERE-nginx.conf, Затем этот файл передается напрямую в ваш двоичный файл nginx через опцию -c. Таким образом, команда execStart модуля nginx выглядит так: ${pkgs.nginx}/bin/nginx -c ${configFile}..

PS именно поэтому ваш curl возвращает отказ в соединении, потому что ваша конфигурация nginx просто 'a'! Сервер по умолчанию находится в пакете nginx, но на него нет ссылок (точно так же, как и у меня).

Другие вопросы по тегам