How do I set up the router to read the incoming website requests' target domain name, and route the user to the appropriate port on the co-located server?
When a external user accesses the server by domain name:
1. The user requests the translation of the domain name to his DNS server (UDP port 53)
2. DNS server replies with the IP address of the domain name to the user
3. The user accesses the IP address directly.
Although the server may have different domain names for different services, the Internet user will access the different services using the IP addresses, not domain name.
So you can set port redirection for every service, and tell external users to access them via URL like http://domain_name_a:80 and http://domain_name_b:81.
(The port is decided by the user but not the router.)