1. подсеть 169.254.0.0/16 не для того нужна.
2. используйте 172.16.0.0/12, 192.168.0.0/16, 10.0.0.0/8
3. Nginx это хорошее решение.
4.
iptables -A PREROUTING -t nat -i eth0 -p tcp --dport 80 -j DNAT --to 192.168.1.2:8080
iptables -A FORWARD -p tcp -d 192.168.1.2 --dport 8080 -j ACCEPT
и не забываем про то что необходимо врубить форвард в sysctl
sysctl -w net.ipv4.ip_forward=1
Далее.
У вас с "внешнего" сервера приходит пакет в котором указан адрес клиента и в результате микротик его отфутболит в "default route" тоесть не обратно в VPN соединение а в WAN порт роутера (ну если он так настроен, таблицу маршрутизации вы не дали).
Что-бы ответы пошли туда куда нужно, вам необходимо на микротике, манглом промаркировать роуты и указать в роут таблице куда отсылать это всё
К примеру
/ip firewall mangle add action=mark-routing chain=prerouting dst-address=!169.254.1.0/24 \
new-routing-mark=WEB-SERVER passthrough=yes protocol=tcp src-address=169.254.1.251 \
src-port=80
/ip route add distance=1 gateway=my-vpn routing-mark=WEB-SERVER
и все внешние коннекты будет уходить строго в vpn интерфейс.
Но!
1. Приводите адресацию сети в соответствии с п.1/п.2
2. Убираете нафиг все наты
3. прописываете route на vpn сервере в свою сеть (можно /32)
4. оставляете nginx на vpn сервере.