I always wondered why nginx didn’t started on boot. Well, it actually did, but too soon. So I needed to change the order. Doing this is not so obvious. That’s why I’m posting the solution I found.
The system is Ubuntu 18.04 with Virtualmin and nginx module.
1- First, remove apache to start;
Type in the command line:
sudo update-rc.d -f apache2 remove
2- Change the order of nginx to start;
Webmin > System > Bootup and Shutdown -> Select ‘nginx’ ;
Remove the original 2 lines
Required-Start: $local_fs $remote_fs $network $syslog $named
Required-Stop: $local_fs $remote_fs $network $syslog $named
And add this 2 lines
Required-Start: $remote_fs $network
Required-Stop: $remote_fs $network
That´s it. Now nginx will start and work after a system reboot/shudown.
Thank you! I had the issue and your workaround worked.
Also， if nginx is running too soon, it seems a little strange that removing $named would allow the system to boot up properly, since I presume it would start up even earlier?
Just wondering, did you only experience this issue on Ubuntu 18.04? I only had this issue from 18.04 onwards.
Right now the solution pointed up is not working anymore.
Googling… I found a solution (which is more a tweak). You can see link https://support.plesk.com/hc/en-us/articles/213908925-Nginx-does-not-start-automatically-after-reboot-99-Cannot-assign-requested-address
The only way that I’ve found to solve it is enabling auto restart on nginx process:
Adding this to ‘[Service]’ section of ‘/etc/systemd/system/multi-user.target.wants/nginx.service’ solves the problem.
# Avoid problem with nginx not starting right after a reboot
If you try to edit the file via Virtualmin’s Filemanager, you won’t be able, because it is a symbolic link. You should do via command line:
sudo nano /etc/systemd/system/multi-user.target.wants/nginx.service
I actually found a simpler solution. The problem was that nginx is slated to run before the IPv6 interface is up, causing it to fail. I made the following changes which seems to work fine:
After=network.target to After=network-online.target
systemctl disable nginx.service followed by
systemctl enable nginx.service