By Agence France-Presse
The move comes two days after the Communist Party of the Philippines announced the end of its own self-declared ceasefire and claims by the military that Maoist fighters had killed six soldiers this week.
The communist insurgency in the Philippines, which began in 1968, is one of the longest running in the world and has claimed an estimated 30,000 lives, according to the military.
"Because I have lost so many soldiers in just 48 hours, I think to continue with the ceasefire does not or will not produce anything," Duterte said in a speech.
"I really do not want to do this but if that is what the communists want, there is nothing I can do. So let's fight. Let's give it another 50 years."
Duterte did not say whether the fourth round of peace negotiations set to start in the Norwegian capital Oslo in April would be stopped. Talks in Italy last week ended with no deal on a permanent cessation of fighting.
A self-styled socialist, Duterte said he was disappointed by the ceasefire decision because his administration had provided a "golden opportunity" to a reach a peace deal with the rebels.
The two sides separately declared ceasefires in August, and the informal arrangement largely held as they continued discussions in Rome.
But the Communist Party said Wednesday it was ending its ceasefire and accused police and soldiers of human rights abuses in rebel-influenced rural villages.
Armed Forces of the Philippines Chief of Staff, General Eduardo Ano, welcomed Duterte's announcement.
"We will go after the (communists' armed wing) to prevent them from conducting atrocities and criminal activities against the public," Ano said in a statement.
"And we will hit them hard!"
In his speech Duterte criticised the rebels for making "unreasonable demands" including asking for the release of 400 jailed guerrillas before agreeing to a bilateral ceasefire.
He said he had already "walked the extra mile" by releasing 18 communist leaders to kick-start the peace process last year but added he also had to secure the support of his security forces.
"I really tried but the demands are just too huge that it is impossible to meet or even work out a compromise," Duterte said.
The communists said Wednesday the end of the ceasefire did not mean they were pulling out of peace negotiations, adding it was possible to "talk while fighting".