How to accurately position the start/end color of linear gradients in blender?
To add a basic gradient you first need a Texture>Gradient_Texture node, and have it's color output connected to the base color of a shader.



To add color to the gradient use a Convert>Color_Ramp node, and assign whatever colors you want to the extremes.



To control the placement you must understand texture coordinates. In this case, because there are no explicit coordinates set, the default is "generated coordinates". Generated coordinates start at the bottom left of the object's bounding box.



To rotate the gradient so that it starts at the bottom of the object you have two choices:

1- Select the Gradient texture node, open the item properties and use the rotation on the Z axis to rotate the gradient -90 degrees.



2- (preferred option) Use an Input>Texture_Coordinates and a Vector>Mapping nodes  to control the placement of the texture. Why is this better? Because it is easier to see what is happening if anything goes wrong...



The exact location of the colors is thus determined precisely by the location, rotation, and scale in the mapping node. 

The next step would be to learn even more about texture coordinates, and use UV coordinates instead, that will give you coordinates based on the actual geometry of the object and it's vertices.

But since the goal of this answer is not to teach you how to use blender in a single post, you can do the rest of the learning into coordinates by watching Bartek Skorupa’s video on How to Manipulate texture coordinates