By design, containers started in detached mode exit when the root process used to run the container exits.
The root process in this context is the root process inside the container, not the root process used to
docker run the container. This process is typically an ENTRYPOINT or CMD in the Dockerfile. For Nginx, often you see something like:
ENTRYPOINT ['nginx', '-g', 'daemon off']
This container would exit when the nginx process exits (which shouldn't be immediately unless your nginx configuration is bad, or some other error kills it).
If you were to have an ENTRYPOINT like this:
ENTRYPOINT ['nginx', '-t']
Then the container would test any nginx confs it found, give you the result in STDOUT, and exit.