It works only for http connections not https connections, as transparent web proxy does not support https connections.
Imagine, that you have only one public IP address i.e. xxx.xxx.xxx.xxx, but want to host 3 web servers:
123.com@192.168.0.2
abc.com@192.168.0.3
456.com@192.168.0.4
1. Configure your web proxy
/ip web-proxy set enabled=yes src-address=0.0.0.0 port=8080 hostname="your.proxy" \ transparent-proxy=yes parent-proxy=0.0.0.0:0 \ cache-administrator="webmaster" max-object-size=4096KiB cache-drive=system \ max-cache-size=unlimited max-ram-cache-size=unlimited /ip web-proxy access add dst-port=23-25 action=deny comment="block telnet & spam e-mail relaying" \ disabled=no add dst-port=80 action=allow comment="Enable Http Connection" disabled=no
2. Configure Static DNS of domains to resolve to internal ip
/ip dns static add name=123.com address=192.168.0.2 /ip dns static add name=abc.com address=192.168.0.3 /ip dns static add name=456.com address=192.168.0.4 /ip dns static add name=www.123.com address=192.168.0.2 /ip dns static add name=www.abc.com address=192.168.0.3 /ip dns static add name=www.456.com address=192.168.0.4
3. Configure NAT to redirect traffic to webproxy
/ip firewall nat add chain=dstnat in-interface=outside dst-address=xxx.xxx.xxx.xxx protocol=tcp \ dst-port=80 action=redirect to-ports=8080 comment="" disabled=no
The traffic for 123.com will be like this:
The web proxy will redirect traffic to the 123.com internal ip address which is 192.168.0.2
Internet --> xxx.xxx.xxx.xxx:80 ---> xxx.xxx.xxx.xxx:8080 --> 192.168.0.2:80
I hope this would be helpful
--Tinus
Don't forget to restrict url access to your proxy, otherwise your router could be used to redirect traffic to sites outside your network:
/ip proxy access add dst-port=80 dst-host="123.com" action=allow disabled=no add dst-port=80 dst-host="abc.com" action=allow disabled=no add dst-port=80 dst-host="456.com" action=allow disabled=no add action=deny disabled=no
--maxx