Как получить 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, но на него нет ссылок (точно так же, как и у меня).