EC2 instance running nginx crashes, "connection refused" - how do I monitor for this?

This is typically the job for a load balancer (ALB or ELB) that can detect whether the web server on the instance is running or not and if not you can trigger some action through CloudWatch. Again, typically, an instance replacement through Auto Scaling Group.

It’s perfectly normal to use ASG and ALB even if you need only a single instance.

Alternatively you can create Custom CloudWatch metrics using the CW agent installed on the instance. Then you can report anything you want.

Hope that helps :)