If you want to set different bandwidth limit for specific traffic, you can mark traffics and set queue tree using those marked packets. But it can limit only total traffic. For example: user1 has 512k, user2 has 1024k. But if they want to connect server 1.1.1.1, total limit will be 10240k.
I don`t know how to do it dynamically, if you want user1 has 512k, user2 has 1024k and if they want to connect server 1.1.1.1, user1 has 2048k, user2 has 3072k.
You can use PCQ queue creating in queue tree. PCQ can separate your traffic by source or destination address and rate each traffics. If you need more, I can post here sample configuration but later today.
So your general user limits are dynamically created by simple queues. Next you need to mark packet between users and special network. Imagine you have servers in the special network 1.1.1.0/24. Your client network is 172.1.0.0/23. 172.1.0.0/24 is the users, who need to access to special network with 512kbps limit. 172.1.1.0/24 is the users, who need to access to special network with 1024kbps limit.