If someone asks an impertinent question like "why do you eat X?" my general answer is "why do you want to know?" This shuts up about ¾ of them. For the remaining ¼, if they persist, I unleash a tongue lashing on them for being nosy. They quickly learn never to do that again.
For the other unsolicited advice approach, I just start returning unsolicited advice back at them. "You should eat more Y because Z." "You should probably consider not wearing that shade of brown. It clashes badly with your skin and makes you look like a peach sitting on top of a pile of mulch."