From the error log, it looks like your nginx config. file has a listen directive with an explicit ip address:
listen a.b.c.d:443
This means that nginx won't start unless your network interface is up and the IP a.b.c.d has been assigned to the interface.
You have two options:
- change the listen directive to: listen 443; (bind to all ip addresses)
- make nginx depend on network-online.target
As described in http://www.freedesktop.org/wiki/Software/systemd/NetworkTarget/ the network.target only indicates that the network management stack is up [...] Whether any network interfaces are already configured when it is reached is undefined.
If you want to make sure that the IP address is already assigned and the interface is up, you need to add the network-online.target to your nginx's systemd unit file.
Your /etc/systemd/system/multi-user.target.wants/nginx.service file should have network-online.target in the After= and Requires= lines.
[Unit]
Description=The nginx HTTP and reverse proxy server
After=syslog.target network.target remote-fs.target nss-lookup.target network-online.target
Requires=network-online.target
[Service]
Type=forking
PIDFile=/run/nginx.pid
ExecStartPre=/usr/sbin/nginx -t
ExecStart=/usr/sbin/nginx
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true
[Install]
WantedBy=multi-user.target