OP I work in a pub. Some people are rude, and they think that because you stand behind the bar they can comment on every single thing they know about you.
And because that's usually not a lot, your appearance is often the main thing they can comment about.
Because some people are gits.
If you can think of a line to come back with then good for you, but it's not always easy when they put you on the spot, and often they come back with another one and you can't think of anything to say so you stand there feeling like a prat.
We had one particular customer who is awful, he likes to give all the bar staff nicknames linked to people on TV, usually the most awful people he can think of and using the most tenuous resemblance.
I hated the name he used to call me, particularly because he used to laugh like he was about to wet himself whenever he called me the name.
Eventually I just said to him "look, I don't like that name and I'm sick of you calling me it. I'm at work, I'm not here for your entertainment while you laugh at me. It's upsetting me, stop it."
And to his credit, although he tried to blame his friend for coming up with the nickname, he's never called me by it again and is actually quite polite and friendly now. I'll never like him, but we can talk to each other now without me hating to serve him or him calling me something stupid.
Perhaps that's worth a try. Tell him he was rude and he upset you, and you don't expect him to pass comment on you again. You might just shame him into behaving decently towards you in the future.
After all, you don't comment on the fact that he's out drinking every lunchtime and he must be turning into more of a lonely alcoholic every time you see him, do you? 