Is there a way to direct traffic coming in on the same port to two different VMs? [closed]

You can't, a single TCP port can only be forwarded to a single internal server (unless you want to load balance them, for which you would require 1) a load balancer and 2) two servers that actually run the same application, not two different ones).

Something like that can only be done with HTTP(S) using a reverse proxy, which can inspect the requested URL and send the traffic to different servers based on what was requested; this allows publishing multiple web servers through the same reverse proxy. But this is only possible because HTTP(S) explicitly supports it at the application layer. There is nothing like that at the network layer, you can only work with IP addresses and ports there.