nginx не запускается при загрузке, но запускается нормально вручную. В журналах написано что-то вроде
nginx: [emerg] host not found in upstream "{some hostname}" in /etc/nginx/conf.d/some_site.conf
nginx: configuration file /etc/nginx/nginx.conf test failed
Failed to start A high performance web server and a reverse proxy server.
nginx.service: Unit entered failed state.
nginx.service: Failed with result 'exit-code'.
Похоже, что при загрузке DNS еще не готов, и nginx пытается найти имя хоста, которое у меня есть в качестве обратного прокси.
После некоторых исследований выяснилось, что systemd использует файл ниже для запуска nginx
/lib/systemd/system/nginx.service
Файл в Ubuntu 15.04, Ubuntu 15.10 и даже на самом сайте nginx говорят, что нужно использовать строку After, как показано ниже.
After=network.target
Это заставляет человека думать, что сеть должна быть готова к работе. Однако я нашел ссылку http://www.freedesktop.org/wiki/Software/systemd/NetworkTarget/ , в которой говорится, что
network.target имеет очень мало смысла во время запуска. Это только указывает на то, что стек управления сетью активирован после того, как он был достигнут.
Далее ссылка говорит, что
network-online.target - это цель, которая активно ожидает, пока новая структура не будет "запущена", где определение "up" определяется программным обеспечением для управления сетью.
Итак, я изменил параметр "После использования", который вместо
After=network-online.target
Теперь nginx запускается нормально при загрузке. Я не утверждаю, что это полностью правильное решение, поскольку возможно, что следует использовать другую цель After, которая была бы более правильной каким-либо другим способом, но, похоже, это работает для последней пары перезагрузок.