Running more than one service on the same exposed port in a swarm

I have been thinking about designing a swarm which will run nginx service and apache service.

This is ti convert some legacy apps into containers where some run on nginx and others run on apache(litespeed)

Any ideas how to design it so that both run alongside. Obviously both need to listed on port 80 which is the actual problem.

I was thinking that the only solution would be if the host has more than one external ip and start the swarm services on the same port with some IP constrains.

or is there another way or is there no way ?

You can use constraint to specify which host will run nginx service and which host will run apache service.