This suggestion is completely unworkable. The default port for
the "http" scheme is 80. It isn't "80 when you use it one way
and something else when you use it another".
I think you can define a new scheme "ipp" and just define it quite
simply:
ipp://host/path === http://host:ippport/path (used for ipp)
E.g., if the IPP port is "187" then
ipp://printer.xerox.com/doit
would be interpreted _exactly_ as
http://printer.xerox.com:187/doit
This equivalence can be done in the client, and need not be handled
by the proxies at all. Since an ipp client has to know about the rest
of the ipp protocol anyway, requiring the ipp client to do the translation
is not a burden.