The deal is worth $2 million with performance bonuses that can take it to $5 million, league sources confirmed to ESPN's Jeff Passan. The Athletic was first to report terms of the deal.
"We see this as a chance to add a relatively young power pitcher to the staff," Rangers president Jon Daniels told MLB.com. "Healthy now after rehabbing last year, we think Shelby has more in the tank, and are excited to see him work with our staff this year."
The Rangers expect Miller, who was plagued by injuries, including Tommy John surgery, in his three seasons with the Diamondbacks, to be healthy in time for spring training. He has thrown a total of just 139 innings since 2016, going 5-18 with a 6.35 ERA.
Miller, 28, made an impressive debut in the St. Louis Cardinals rotation in 2013, going 15-9 with a 3.06 ERA with 169 strikeouts in 173 1/3 innings. The right-hander finished third that year in NL Rookie of the Year voting, behind Marlins pitcher Jose Fernandez and Dodgers outfielder Yasiel Puig.
Miller followed that up with a 10-9 mark and 3.74 ERA in 2014 before the Cardinals, who'd drafted the native Texan (Brownwood) in the first round in 2009, dealt him in the offseason to the Braves in a package for outfielder Jason Heyward.
His one year in Atlanta featured career bests in ERA (3.02), innings pitched (205 1/3), strikeouts (171) and losses, as he finished 6-17 in a hard-luck season that saw Atlanta hitters get him two or fewer runs in 18 of his 33 starts. But he still was named to his only All-Star team.
The Diamondbacks chose to non-tender Miller after last season, making him a free agent.