How does mining pool ensure the miner works on the problem? I understand that the header given to some miner contains hash of Coinbase that goes to servers address. Thus the miner cannot take the reward.

Also in the simplest setup the server gives miner a range of nonces to check and the range that miner checks is proportional to his hashing power and proportional to the reward.

How does server ensure miner checked that range?
Miners regularly send "shares" to the pool server. The shares are solution to a low-difficulty bitcoin puzzle. Each share stands some chance of being a solution to the current bitcoin puzzle, of much higher difficulty.

By sending shares, miners show that they are working on the problem, and may potentially reveal its solution to the pool server. They are often remunerated based on the number of shares they find, and of their difficulty.