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 - это цель, которая активно ожидает, пока новая страница не будет "запущена", где определение "вверх" определяется программой управления сетью.
Поэтому я изменил значение After use, которое
After=network-online.target
Теперь nginx нормально запускается при загрузке. Я не утверждаю, что это полностью правильное решение, поскольку возможно, что следует использовать другую цель After, которая была бы более правильной каким-либо другим способом, но, похоже, это работает для последней пары перезагрузок.